JAVA_HOME не работает с sudo mvn [duplicate]

используйте sum() вместо count()

Попробуйте ниже:

SELECT ccc_news . * , 
SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments
FROM ccc_news
LEFT JOIN ccc_news_comments ON ccc_news_comments.news_id = ccc_news.news_id
WHERE `ccc_news`.`category` = 'news_layer2'
AND `ccc_news`.`status` = 'Active'
GROUP BY ccc_news.news_id
ORDER BY ccc_news.set_order ASC
LIMIT 20 
317
задан Max 6 October 2016 в 20:51
поделиться

4 ответа

Хитрость заключается в том, чтобы добавить переменные среды в файл sudoers с помощью команды sudo visudo и добавить эти строки:

Defaults env_keep += "ftp_proxy http_proxy https_proxy no_proxy"

взято из ArchLinux wiki .

Для Ubuntu 14 вам нужно указать в отдельных строках, поскольку он возвращает ошибки для строк с несколькими переменными:

Defaults  env_keep += "http_proxy"
Defaults  env_keep += "https_proxy"
Defaults  env_keep += "HTTP_PROXY"
Defaults  env_keep += "HTTPS_PROXY"
259
ответ дан 7 revs, 5 users 41% 15 August 2018 в 22:55
поделиться
  • 1
    Это, пожалуй, лучший вариант, чтобы избежать утечки информации и дыр в безопасности. sudo -E - это верный способ adhoc получить тот же эффект для одноразового, хотя – sehe 26 December 2011 в 16:55
  • 2
    Я столкнулся с проблемой процесса, который называется sudo (jhbuild), и я не могу сказать ему передать флаг -E в sudo, так что это мое решение. – jgomo3 13 May 2013 в 13:23
  • 3
    Обратите внимание, что вы должны никогда редактировать etc/sudoers напрямую. Вместо этого используйте команду visudo, синтаксис которой проверяет ваши изменения, прежде чем перезаписывать файл sudoers. Таким образом, вы не блокируете себя, если ошибаетесь при редактировании. – Henning 15 November 2013 в 10:37
  • 4
    Рассмотрите возможность использования прописных env vars. В моем случае использование HTTP_PROXY и HTTPS_PROXY сделало трюк. – pabo 18 February 2015 в 11:41
  • 5
    вариант с нижним регистром лучше от моего опыта, поскольку он работает как в wget, так и в curl. – Miroslav Mocek 30 June 2015 в 22:15

Для отдельных переменных, которые вы хотите сделать доступными на одном уровне, вы можете сделать это частью команды.

sudo http_proxy=$http_proxy wget "http://stackoverflow.com"
36
ответ дан jpj 15 August 2018 в 22:55
поделиться
  • 1
    Я протестировал этот ответ для package под некоторым myPath, добавленным в PATH в файле .bashrcexport clausule). Тогда sudo PATH=$PATH which package найдет правильный ответ, в отличие от sudo which package. Однако sudo PATH=$PATH package не идет дальше sudo package (файл не найден). С другой стороны, запуск простой package из оболочки, вызванной с помощью sudo bash, сохраняет расширенный путь и дает права package sudo (два голубка с одним камнем). Таким образом, ответ действительно зависит от того, какие команды вы запускаете – XavierStuvw 5 January 2017 в 19:16
  • 2
    Решение PATH для sudo - другое дело - кто-нибудь найдет это сообщение в поисках этого вопроса. Я предлагаю увидеть unix.stackexchange.com/questions/83191/… – jpj 6 January 2017 в 10:16

Вы также можете комбинировать два выражения env_keep в ответе Ахмеда Асвани в одном утверждении:

Defaults env_keep += "http_proxy https_proxy"

Вы также должны рассмотреть указание env_keep для только одна команда:

Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"

19
ответ дан Mark Vrabel 15 August 2018 в 22:55
поделиться

Сначала вам нужно export HTTP_PROXY. Во-вторых, вы должны внимательно прочитать man sudo и обратить внимание на флаг -E. Это работает:

$ export HTTP_PROXY=foof
$ sudo -E bash -c 'echo $HTTP_PROXY'

Вот цитата из справочной страницы:

-E, --preserve-env
             Indicates to the security policy that the user wishes to preserve their
             existing environment variables.  The security policy may return an error
             if the user does not have permission to preserve the environment.
352
ответ дан ZachB 15 August 2018 в 22:55
поделиться
  • 1
    большая проблема, которая изменяет некоторые файлы конфигурации, например pacman для arch, чтобы сделать -E передан – Ahmed Aswani 26 December 2011 в 11:01
  • 2
    Чтобы разрешить -E (сохранить среду) для wget, вам нужно указать тег SETENV в правиле sudo, который позволяет запускать wget - Example: & lt; username & gt; ALL = (root) NOPASSWD: SETENV: & lt; путь к wget & gt; – John Bowers 16 September 2014 в 17:13
  • 3
    Этот & quot; -E & quot; не работает, если переменная PATH или PYTHONPATH. – apporc 27 June 2016 в 06:23
  • 4
    Также не работает с какой-либо переменной LC_*. Так что просто сделайте export LOL_FOO=$LC_FOO и используйте LOL_FOO. – luckydonald 4 November 2016 в 21:39
  • 5
    Это не работало с более простым случаем добавления одного элемента в PATH в файле .bashrc - скажем, export PATH=myPath:$PATH. Если я набираю sudo -E bash -c 'echo $PATH', то PATH не содержит myPath, потому что sudo уже отключил локальное значение PATH перед вызовом bash. Скорее, я нашел ответ ниже stackoverflow.com/a/33183620/5459638 эффективным, то есть sudo PATH=$PATH command – XavierStuvw 5 January 2017 в 18:42
Другие вопросы по тегам:

Похожие вопросы: