Настроить прокси для APT?

72

Мне нужно настроить прокси. Там не было apt.confфайла, etc/apt/поэтому я создал его с помощью nano.

Но я не понимаю, что мне нужно написать там. Я тут же написал http_proxy = http://lgn:pwd@192.168.1.254:8080/перезапустил networking. Но когда я пытаюсь apt-get update- это не работает.

На самом деле я не понимаю, какой порт и ip я должен записать в apt.confфайл (был пример с 192.168.1.254ip и 8080port, поэтому я решил использовать их).

lapots
источник
Есть изменения в настройках прокси, чтобы получить работу в корпоративном прокси в Ubuntu. Посетите github.com/navinas33/docker_ubuntu.git, это работает ...
Navin as

Ответы:

103

Чтобы использовать прокси, вам нужен прокси-сервер. IP и порт должны быть от этого прокси-сервера. Логин и пароль должны быть вашим именем пользователя и паролем на прокси-сервере (если прокси-сервер требует входа в систему).

С сайта help.ubuntu.com :

Метод файла конфигурации APT

Этот метод использует файл apt.conf, который находится в вашем каталоге / etc / apt /. Этот метод полезен, если вы хотите, чтобы apt-get (а не другие приложения) постоянно использовал http-прокси.

На некоторых установках файл apt-conf не будет настроен. Отредактируйте файл apt-conf (или создайте новый, если у вас его еще нет), используя выбранный вами редактор.

sudo nano /etc/apt/apt.conf

Добавьте эту строку в ваш файл /etc/apt/apt.conf (замените ваши данные на ваш proxyaddress и proxyport).

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

Сохраните файл apt.conf.

Если ваш прокси-сервер требует логин / пароль, замените:

"http://yourproxyaddress:proxyport";

с участием:

"http://username:password@yourproxyaddress:proxyport";

используя имя пользователя и пароль от прокси-сервера.

Laurent
источник
6
Добавление отдельного локального файла в систему /etc/apt/apt.conf.d/предпочтительнее, поэтому вам не нужно редактировать основные файлы конфигурации системы. Таким образом, если они будут обновлены в следующей версии пакета, вам не нужно вручную объединять локальные изменения.
tripleee
Есть ли в каталоге пользователя прокси-файл conf?
becko
Этот ответ нуждается в обновлении: gksudo устарел. Попробуйте использовать другой редактор без графического интерфейса или sudo -Hвместо gksudo, если используете gedit или аналогичный.
24

Это более общий ответ вместе с apt config.

Поскольку есть много мест для настройки параметров прокси, это может запутаться в начале. Позвольте мне обобщить некоторые вещи и предложить некоторые хорошие практики.

Для консольных программ

Пример: wget, git и почти все консольные приложения, которые подключаются к интернету.

Если по какой-то причине вы хотите настраивать прокси каждый раз, когда запускаете команды, установите переменные среды с помощью следующих команд.

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

Иначе, если вы хотите использовать одни и те же настройки каждый раз для всех пользователей, используйте их.

Настроить в bashrc

$ nano /etc/bash.bashrc
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

Настроить в /etc/environment

$ nano /etc/environment
https_proxy="http://myproxy.server.com:8080/" 
ftp_proxy="http://myproxy.server.com:8080/" ...

Настройка с использованием графического интерфейса

Откройте настройки сети и настройте прокси-сервер вашей системы.

Сеть -> Сетевой прокси -> Настроить -> Применить к системе.

Но это может быть бесполезно, если у вас есть аутентификация для прокси.

Для кв.

Вам нужно проделать дополнительную работу для apt, поскольку apt не подчиняется переменным окружения,

$ nano /etc/apt/apt.conf
Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT";
Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";

Для всего, что выходит за рамки, должна быть опция для настройки параметров прокси в самом приложении. Если не извините;)

matrixisreal
источник
2
Конфигурация в / etc / environment очень важна, потому что если вы просто настраиваете переменную http_proxy для своего пользователя, когда вы переходите в режим sudo (для таких вещей, как «sudo apt-get update»), терминал обычно не сохраняет текущую среду вары; очень важно проверить ваши настройки: sudo echo $ http_proxy
belun
HTTP_PROXY(в верхнем регистре), кажется, стандартное имя для этой переменной, хотя многие программы будут использовать версию в нижнем регистре. https_proxy(обратите внимание на нижний регистр) - это правильная заглавная буква для этого, но вы никогда не будете использовать ее в одиночку, как вы это делали /etc/environmentвыше. (Я думаю, что sэто опечатка.)
Курт Дж. Сэмпсон
В чем причина того, что APT требует дополнительной настройки прокси? Почему он просто не подчиняется / etc / environment?
Лорено
22

Должно работать что-то вроде следующего:

Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/";
Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/";
Деннис Каарсемакер
источник
Есть ли разница, какой порт и ip использовать?
Lapots
Ну, да, вам нужно указать правильные данные для прокси, который вы, конечно, хотите использовать.
Деннис Каарсемакер
э-э ... ip - это ip роутера? Я имею в виду этот ip, который я использовал из примера, но все настройки маршрутизатора я настраиваю в браузере, используя 192.168.1.1ip. Я должен использовать .1? а логин и пароль должны быть root или роутером ubuntu?
Lapots
2
Ты вообще знаешь, что делаешь? Откуда вы знаете, что вам нужно использовать прокси-сервер, если вы не знаете его подробности?
Деннис Каарсемакер
5
Тогда спросите своего учителя. Это не сайт "сделай домашнее задание для меня".
Деннис Каарсемакер
5

То, что вы можете сделать, это также попытаться запустить команду sudo -E, которая примет параметры среды. Кажется, это работает для меня, когда я пытаюсь обновить, добавить-apt-repository и установить. Пример:

sudo -E add-apt-repository ppa:xxxxx

Согласно @David Foerster, это работает только для ручного взаимодействия с использованием оболочки, но не будет работать с автоматическими задачами и службами, вызывающими Apt без взаимодействия с пользователем.

Фрэнк Цю
источник
Это не поможет с автоматизированными задачами и сервисами, вызывающими Apt без взаимодействия с пользователем.
Дэвид Фёрстер
Спасибо за уведомление, я добавлю ваш комментарий к ответу.
Фрэнк Цю
2

Если вам нужно использовать apt за прокси-сервером, вероятно, все остальное также нуждается в настройке прокси. Мне нравится управлять настройками прокси-сервера в одном месте, которое будет переменной среды.

Для этого я создаю /etc/profiles.d/99-proxy.sh, который содержит необходимые настройки прокси (как описано в larent):

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export https_proxy=$http_proxy
export ftps_proxy=$http_proxy

таким образом, все пользователи на этом компьютере имеют доступ к прокси. (не забывай chmod a+x)

Когда вы используете apt или apt-get как пользователь, этот пользователь может использовать sudo. Как описал Фрэнк Цю, sudo не передает переменные окружения. Для этого вы можете добавить

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

(например)

/etc/sudoers.d/00-environment 

или прямо в

/etc/sudoers

файл. Таким образом, вам нужно управлять настройками прокси только в одном месте.

muluman88
источник
0

Исходный вопрос может быть в неправильном направлении. Я полагаю, вы хотите настроить прокси-сервер в Linux?

Ну, это совсем не то, что использовать существующий прокси из среды Linux.

Если ваш вопрос является первым, используйте сторонние сервисы для настройки прокси-сервера в Linux. Примером может служить кальмар.

Простые команды для установки squid:

$ sudo apt-get install squid3

Затем отредактируйте конфигурацию, чтобы разрешить локальную сеть (в данном случае ваш собственный компьютер). $ sudo vi /etc/squid3/squid.conf

Добавьте / отредактируйте следующие строки:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

Предполагая, что ваш IP для машины Linux находится в блоке 192.168.1 / 24.

Нео
источник
Вероятно, большинство читателей этого вопроса уже установили squid;), также установили http[s]_proxyпеременные ENV, и теперь задаются вопросом, почему APT все еще не работает. Но если вы получаете HTTP 403 от всего, кроме машины с squid- посмотрите еще раз на все вхождения слова, denyкоторые не комментируются. (особенно с http_accessтой же линией.
Томаш Гандор