Як запустити "sudo apt-get update" через проксі в командному рядку?


78

У своєму кабінеті я хочу оновити та завантажити через (wget), і тут вони використовують проксі?

Як я можу це зробити за допомогою командного рядка?


Відповіді:


91

У деяких випусках sudo налаштовано таким чином, що всі змінні середовища все очищаються при виконанні команди. Щоб зберегти значення для http_proxy та виправити це, вам потрібно відредагувати / etc / sudoers, запустити:

visudo

Потім знайдіть рядок, в якому зазначено:

Defaults env_reset 

і додайте після нього:

Defaults env_keep = "http_proxy ftp_proxy" 

Все почне працювати так, як очікувалося.

Дякую комугксу на форумах Ubuntu, що знайшли рішення для цього.

Для того, щоб виправити не лише apt-get, але й графічні утиліти X11, наприклад, синаптичні, mintintall, ...), /etc/sudoersслід виконати наступний рядок у :

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"

7
Чи потрібно було б також додати "https_proxy"?
TenLeftFingers

2
$ export http_proxy = " user: password @ proxy-server: port ", а якщо ваш пароль містить спеціальні символи - cyberciti.biz/faq/…
Алекс Пуннен,

2
слід додавати 'env_keep' після 'env_reset' або розміщувати на його місці? Вони виглядають протилежно один одному, тож чи є сенс тримати обох?
Родріго

За замовчуванням env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" працював для мене! Дякую ! -
Рональд

1
Натрапили на це після багатьох переглядів. Це вирішило мою проблему.
Судіпта Басак

39

Використовуй це.

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розширюється до того, як судо навіть запуститься.
Список Джеремі

1
Це чудово спрацювало в Dockerfile!
Cory Ringdahl

Не забудьте порт проксі, якщо потрібно :)
Gilad Peleg

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 :: проксі " 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 "

Вам це потрібно, тому що змінну оточення потрібно визначити для "кореневого" облікового запису. Робота та експорт раніше не повинні працювати.

Для постійної конфігурації вам доведеться змінити системний файл. Це вже описано в наступній відповіді про те, як перевірити, чи дійсно застосовано мережевий проксі? .


:-(, я отримую помилку "Доступ до сервісу веб-проксі відмовлено!"
Renjith G

Можливо, вам доведеться ввести логін та пароль, чи не так? Якщо так, http_proxy має мати форму "http: // <user>: <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

Пропозиція Oli використати експорт - це єдиний невиразно безпечний спосіб це зробити. Крім того, іноді можливе «погладжування» підтримки проксі, якщо проксі-сервер використовує вторинну аутентифікацію, щоб мінімізувати навантаження на основні сервери аутентифікації (скажімо, Active Directory). Тут перше проксі-з'єднання автентифіковане проксі-сервером проти AD, тоді протягом встановленого періоду часу (як правило, 5 хвилин) всі інші з'єднання "довіряють" цьому користувачеві. Тому ви можете відкрити Firefox, переглядати Інтернет (де завгодно), а потім спробувати утиліту (wget, synaptic, що завгодно), вказавши проксі, але залишити ім’я користувача порожнім.

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


Я рекомендую cntlm як ліки від цього. Він обробляє автентифікацію з AD, і ви встановлюєте всі налаштування проксі для використання 127.0.0.1, не вимагаючи ніяких облікових даних.
лаз

Якщо вам потрібно здійснити автентифікацію на іншій машині, тоді простой текст пароля потрібно зберігати. "шифрування" не додасть жодної безпеки, оскільки ключ шифрування потрібно зберігати на одному пристрої, щоб паролі були доступні.
Список Джеремі

Джеремі, ти береш такий самий підхід до вмикання / вимкнення безпеки, як і дияволи Seahorse. Я не кажу, щоб зробити цей матеріал неможливим, просто зробити його важким. Зараз викрасти облікові дані з розблокованого ноутбука Ubuntu є дрібницею - можливо, п’ять кліків і у вас це вийшло. Те саме не стосується Windows - це все ще можливо, але навіть я не знаю, як це зробити. Немає простого способу підняти пароль з машини Windows за 10 хвилин або, таким чином, ви можете залишити робочу станцію розблокованою випадково. Зробіть те ж саме в 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. Я вважаю, що параметри цього файлу є окремими від налаштованих у gui налаштуваннях менеджера пакетів Synaptic.
Джон Бретт

1
Так, apt.confвсе одно слід використовувати. Ви можете побачити, які налаштування конфігурації apt думає, що вони встановлені за допомогою apt-config dump.
Стів Бітті

0

Якщо ви хочете запустити "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.