Следуя инструкциям в разделе Лучший способ кэширования подходящих загрузок в локальной сети? Я настроил кеширующий прокси в моей локальной сети. Поскольку эта машина не всегда работает, я бы хотел иметь возможность обновлять список источников и устанавливать пакеты без использования этого прокси-сервера, если он недоступен.
Я уже прочитал раздел « Получение группы » на странице руководства apt.conf(5)
, но не смог найти опцию, например «Silent-Fail».
На данный момент sudo apt-get update
и связанные команды не работают, потому что не удалось установить соединение. Так как мне настроить клиент так, чтобы прокси игнорировался, если он недоступен?
networking
apt
proxy
Lekensteyn
источник
источник
Ответы:
Существует недокументированная настройка
Acquire::http::ProxyAutoDetect
. Этот параметр должен содержать полный путь к двоичному файлу и не может иметь аргументов. Команда должна вывести прокси, который будет использоваться (пример:)http://10.0.0.1:8000
.Учитывая приведенную выше информацию, можно создать сценарий, который пробует прокси-сервер перед его настройкой. Если прокси-сервер недоступен, следует использовать прямое соединение.
Ниже такой сценарий обнаружения прокси , который пробует
http://10.0.0.1:8000/
иhttp://10.0.0.2:8000
прокси.Введите код в
/etc/apt/detect-http-proxy
:Теперь APT должен быть настроен на использование вышеуказанного сценария обнаружения прокси, поэтому поместите в него следующий код
/etc/apt/apt.conf.d/30detectproxy
:Я также поместил следующий код в файл, чтобы предотвратить прокси-сервер.
По умолчанию скрипт выводит, используется ли прокси или нет. Чтобы отключить это, отредактируйте
/etc/apt/detect-http-proxy
и изменитеshow_proxy_messages=1
наshow_proxy_messages=0
.источник
apt-cacher-ng::client
?if nc -w1 -z 192.168.0.2 3142; then printf http://192.168.0.2:3142; else printf DIRECT; fi
. Будем надеяться, что недокументированная функция будет удалена :)i=192.168.0.2;nc -zw1 $i 3142&&echo http://$i:3142/||echo DIRECT
Теперь есть официально поддерживаемый способ сделать это - используя опцию -
Acquire::http::Proxy-Auto-Detect
(см.apt.conf
Справочную страницу). Поведение похоже на старое недокументированноеAcquire::http::ProxyAutoDetect
(обратите внимание на наличие / отсутствие дефисов в новых / старых параметрах конфигурации), оно в значительной степени обратно совместимо, но было расширено ...Я нахожусь в процессе отправки патча сопровождающим apt для улучшения документации, но так как это вряд ли превратит его в версию apt, которая поставляется с выпуском дистрибутива в течение долгого времени, я включу текст Предлагаемый патч здесь:
Acquire::http::Proxy-Auto-Detect
может использоваться для указания внешней команды для обнаружения используемого http-прокси. APT может вызывать команду несколько раз и будет передавать URI команде в качестве ее первого и единственного параметра. APT ожидает, что команда выведет прокси-сервер, который должен использоваться для связи с рассматриваемым URI на его stdout, в виде одной строки в стилеhttp://proxy:port/
или слова,DIRECT
если прокси-сервер не должен использоваться. Отсутствие вывода указывает на то, что следует использовать общие настройки прокси.Обратите внимание, что автоопределение не будет использоваться для хоста, если конфигурация прокси для конкретного хоста уже установлена через
Acquire::http::Proxy::HOST
.Чтобы диагностировать взаимодействие с внешней командой, установите
Debug::Acquire::http=yes
и / или,Debug::Acquire::https=yes
например, используйте параметр-o
командной строки.Обратите внимание, что используется предварительная версия apt, версии от 1.3 ~ exp2 до 1.3, затем возникает ошибка (вероятно, исправленная в 1.3.1), которая заставляет apt анализировать stderr внешней команды вместе с stdout.
источник
/etc/apt/apt.conf.d/02proxy
:/usr/local/bin/apt-proxy-detect.sh
:Командная строка
nc
работать (sudo apt-get install netcat
), если отсутствует.chmod +x /usr/local/bin/apt-proxy-detect.sh
Как это устроено
Если он может подключиться к прокси, он печатает прокси, который APT использует. Если это не удается, он выводит сообщения DIRECT и APT нормально.
соус
источник