Обеспечение корректной работы aptitude через прокси-сервер, вызываемый с помощью sudo

Обеспечение корректной работы aptitude через прокси-сервер, вызываемый с помощью sudo

Я использую Debian 6. Я сижу за прокси, поэтому я настроил Debian на использование этого прокси. Просмотр и любая HTTP и FTP активность через GUI работает нормально.

Я хотел обновить свой репозиторий пакетов, поэтому набрал в командной строке:

sudo aptitude

затем, если я попытаюсь обновить репозиторий (нажав «u»), aptitude остановится при попытке подключиться к FTP-серверу Debian, и это действие в конечном итоге прервется.

Но если попытаться:

$ su
# aptitude

работы по обновлению.

В чем разница между двумя вызовами? Переменные окружения $http_proxyи $ftp_proxyсуществуют в обеих оболочках.

решение1

Theвскоманда запускает другую оболочку как root (или кого-то еще, если вы укажете имя пользователя и правильный пароль). Эта оболочка получает все обычные переменные окружения, которые, конечно, включают переменные HTTP_PROXY и FTP_PROXY. Таким образом, это работает.

Theсудокоманда УДАЛЯЕТ ВСЕ переменные среды, за исключением специально выбранного подмножества... которое, конечно же, НЕ включает переменные HTTP_PROXY и FTP_PROXY, поэтому ваши команды не выполняются.

Ты можешь сделатьсудосохраните переменные *_PROXY, отредактировав файл конфигурации sudoers, используявизудокоманда (конечно).

Добавление следующего сделаетсудосохраните значения HTTP_PROXY и FTP_PROXY:

Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"

По совпадению, если вы добавите DISPLAY и HOME в этот список, вы также сможете использовать графические программы с sudo (им нужна переменная DISPLAY для подключения)

Defaults env_keep += "DISPLAY HOME"

Вы даже можете просто добавить эти две строки, вот так. (+=здесь ключ) Не забудьте добавить эти строки ближе к концу файла, так как в первых нескольких строках обычно задается 'env_keep' переменная с прямой '"="', который стирает все предыдущие значения.

решение2

Я сам с этим боролся и в конце концов воспользовался решением, предложенным на Ask Ubuntu: apt-get не работает с прокси

Если настройка http_proxyне работает, попробуйте отредактировать apt.conf. В
Ubuntu apt.confфрагментирован в /etc/apt/apt.conf.d/каталоге.
В этом каталоге отредактируйте /etc/apt/apt.conf.d/01ubuntu:

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};

Связанный контент