Как запустить «sudo apt-get update» через прокси в командной строке?


79

В моем офисе я хочу обновить и скачать через (wget) и здесь они используют прокси?

Как я могу сделать это с помощью командной строки?


Ответы:


91

В некоторых выпусках sudo настраивается таким образом, что все переменные среды очищаются при запуске команды. Чтобы сохранить значение для вашего http_proxy и исправить это, вам нужно отредактировать / etc / sudoers, запустите:

visudo

Затем найдите строку, в которой говорится:

Defaults env_reset 

и добавьте после этого:

Defaults env_keep = "http_proxy ftp_proxy" 

Вещи начнут работать как положено.

Спасибо kdogksu на форумах Ubuntu за то, что нашли решение для этого.

Чтобы исправить не только apt-get, но и графические утилиты X11, например, synaptic, mintintall, ...), следующая строка /etc/sudoersдолжна выполнить эту работу:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"

7
Будет ли необходимо добавить "https_proxy" тоже?
TenLeftFingers

2
$ export http_proxy = " пользователь: пароль @ прокси-сервер: порт ", и если ваш пароль содержит специальные символы - cyberciti.biz/faq/…
Алекс Пуннен,

2
должен ли env_keep быть добавлен после env_reset или помещен на его место? Они выглядят противоположно друг другу, так есть ли смысл держать их обоих?
Родриго

Настройки по умолчанию env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" работал для меня! Спасибо ! -
Рональд

1
Наткнулся на это после большого количества просмотров. Это решило мою проблему.
Судипта Басак

40

Использовать это.

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

Это то, что я использую. Работает отлично.

Apt также позволяет размещать отдельные настройки в файлах /etc/apt/apt.conf.d/, так что это имеет тот же эффект, что и выше, но может быть проще поддерживать, если у вас есть другие строки в .confфайле:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

5
Я рекомендую изменить это, чтобы объяснить, как добавить эту строку в файл конфигурации. Попытка запустить эти строки в командной строке не сделает этого. Прямо сейчас этот ответ основан на правильной идее, но не будет полезным для новичка. Даже не совсем ясно, что вы говорите, что строка должна быть добавлена к apt.conf.
Элия ​​Каган,

классно !!!! работает как шарм
Шантану Бедаджна

В моей системе я должен был создать файл в /etc/apt/apt.conf.d, но с небольшой детализацией - отлично работал
dldnh

1
@dldnh: Вы можете создать файл /etc/apt/apt.confили использовать файл конфигурации в /etc/apt/apt.conf.d.... либо работает! :-)
Пол Калабро

не забывайте точку с запятой, или вы получитеE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Флориан Кастеллан

18

То, что работало для меня, было:

sudo http_proxy=http://yourserver apt-get update

Что немного странно, потому что простой экспорт http_proxy и последующее выполнение sudo echo $ http_proxy послушно распечатали экспортированное значение


1
$http_proxyрасширяется до того, как sudo даже запускается.
Джереми Список

1
Это прекрасно работает в Dockerfile!
Кори Рингдал

Не забудьте порт для прокси, если это необходимо :)
Гилад Пелег

11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

Экспорт не должен нуждаться, sudoи если ваш прокси-сервер анонимный, просто откажитесь от proxyusername:proxypassword@части.


:-(, я получаю сообщение об ошибке «Доступ к веб-прокси запрещен!»
Renjith G

Работают ли такие же настройки прокси для чего-то простого wget?
Оли

да .. та же ошибка повторяется ...
Renjith G

2
Как насчет редактирования /etc/apt/apt.conf с помощью Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: MYPASS@MY.PROXY.COM: MYPORT"?
Renjith G

Вы также можете добавить это в ваш ~ / .bashrc. Хотя ужасный риск для безопасности.
Scaine

3

Если это временная конфигурация , вы можете попробовать это: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

Это необходимо, поскольку переменная окружения должна быть определена для учетной записи «root». Делать и экспортировать раньше не должно работать.

Для постоянной настройки вам придется изменить системный файл. Это уже описано в следующем ответе о том, как проверить, действительно ли применяется сетевой прокси? ,


:-(, я получаю сообщение об ошибке «Доступ к веб-прокси запрещен!»
Renjith G

Вы, вероятно, должны ввести логин и пароль? Если это так, http_proxy должен иметь форму «http: // <пользователь>: <pass> @ <host>: <port> /»
Huygens,

3

Ubuntu невероятно враждебен к аутентификации прокси. Я использую ноутбук Ubuntu на работе, и количество поломок невероятно.

Synaptic, Apt, Firefox, Chromium и т. Д. Используют разные методы для указания прокси, и негде безопасно указать учетные данные.

Некоторые ошибки по теме: https://bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070

https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138

https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827

https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630

Предложение Оли использовать экспорт - единственный неопределенно безопасный способ сделать это. Иногда также возможно «выдумать» поддержку прокси, если прокси-сервер использует вторичную аутентификацию, чтобы минимизировать нагрузку на основные серверы аутентификации (скажем, возможно, Active Directory). Именно здесь первое прокси-соединение аутентифицируется прокси-сервером против AD, затем в течение заданного периода времени (обычно 5 минут) все остальные соединения «доверяются» этому пользователю. Таким образом, вы можете открыть Firefox, просматривать Интернет (где угодно), затем попробовать свою утилиту (wget, synaptic и т. Д.), Указав прокси, но оставив имя пользователя пустым.

Ubuntu, как правило, враждебен к любой корпоративной среде просто потому, что позволяет так легко читать пароли. Seahorse - главный преступник, но Network Manager также шокирует - подключайтесь к любой сети с аутентификацией PEAP, и вы только что сохранили свой пароль в апплете, чтобы каждый мог увидеть, кто может одолжить ваш ноутбук. По всей видимости, совместное использование ноутбуков считается кощунством на земле Linux, так как разработчики Seahorse отвергли заявления о ненадежности. После этого у меня не было сердца, чтобы связаться с разработчиками сетевого менеджера.


Я рекомендую cntlm как лекарство от этого. Он обрабатывает аутентификацию с помощью AD, и вы устанавливаете все настройки прокси-сервера на использование 127.0.0.1, не требуя никаких учетных данных.
лаз

Если вам необходимо пройти проверку подлинности на другом компьютере, необходимо сохранить открытый текст пароля. «Шифрование» не добавит никакой защиты, потому что ключ шифрования должен храниться на том же устройстве, чтобы пароли были доступны.
Джереми Список

Джереми, вы используете тот же подход к безопасности, что и разработчики Seahorse. Я не говорю, чтобы сделать это невозможно, просто сделать это сложно. Прямо сейчас кража учетных данных с разблокированного ноутбука Ubuntu тривиальна - возможно, пять кликов, и вы получите это. То же самое не относится к Windows - это все еще возможно, но даже я не знаю, как это сделать. За 10 минут не существует простого способа снять пароль с компьютера с Windows, поэтому вы можете случайно оставить рабочую станцию ​​незаблокированной. Сделайте то же самое в Ubuntu, и вы также можете подать в отставку. Это не достаточно хорошо.
Scaine

3

Вы пытались редактировать /etc/apt/apt.conf? Я использую это, чтобы использовать apt позади нашего корпоративного прокси.

Acquire::http::proxy "http://user:password@host:port/";

Я полагаю, что apt использует это значение, если в вашей оболочке не определено $ http_proxy (то есть $ http_proxy имеет преимущество).


Я не уверен, что apt.conf все еще используется ... Когда я обновил с 8.04 до 10.04, у меня получилось невозможное обновление, пока я не избавился от настроек прокси в этом файле - тогда настройки прокси, установленные в Synaptic, начали работать снова ...
Маленькая Джава

Это странно - я использую apt.conf с 10.04. Я нахожу, что настройки в этом файле отличаются от настроек, настроенных в интерфейсе настроек диспетчера пакетов Synaptic.
Джон Бретт

1
Да, apt.confвсе еще следует использовать. Вы можете увидеть, какие параметры конфигурации apt считает установленными, используя apt-config dump.
Стив Битти

1

Если вы хотите запустить «sudo apt-get update» через прокси в командной строке, используйте команду ниже,

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.