Как мне заставить add-apt-repository работать через прокси-сервер?

Я пытаюсь следовать за Инструкции по установке Cross Toolchain на хостах Ubuntu 10.04 (Lucid) и 10.10 (Maverick)" в wiki.linaro.org (на моей виртуальной машине Ubuntu 10.04). Первый шаг - это:

sudo add-apt-repository ppa:linaro-maintainers/toolchain

Но когда я запускаю это, я получаю:

Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>

Я предполагаю, что проблема связана с моей конфигурацией прокси-сервера моего работодателя, особенно для HTTPS.

Когда я открыл https://launchpad.net/api/1.0 /~linaro-сопровождающие/+архив/набор инструментов>>> в Firefox я получил сообщение "Время ожидания соединения истекло". Затем я зашел в Настройки Firefox - Дополнительные - Сетевые - настройки... и установите HTTP-прокси на "шлюз", а порт - на 8080, и установите флажок "Использовать этот прокси-сервер для всех протоколов". Затем страница загрузилась. Это подтверждает мою теорию.

Я попытался установить переменные окружения http_proxy и https_proxy (как в нижнем, так и в верхнем регистре):

$ set | grep -i proxyHTTPS_PROXY=https://gateway:8080HTTP_PROXY=http://gateway:8080http_proxy=http://gateway:8080https_proxy=https://gateway:8080

Я также попытался изменить их на:

$ set | grep -i proxyHTTPS_PROXY=gateway:8080HTTP_PROXY=gateway:8080http_proxy=gateway:8080https_proxy=gateway:8080

И я попытался добавить эту вторую строку в /etc/apt/apt.conf:

Acquire::http::proxy "http://gateway:8080/";Acquire::https::proxy "https://gateway:8080/";

Но я продолжаю получать ту же ошибку.

Как мне устранить эту проблему?

Обновление: Я следовал инструкциям в принятый ответ к "Проблема с добавлением репозиториев и подключением с терминала через прокси" и продвинулся дальше:

$ sudo add-apt-repository ppa:linaro-maintainers/toolchainExecuting: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97Bgpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.comgpgkeys: HTTP fetch error 7: couldn't connect to hostgpg: no valid OpenPGP data found.gpg: Total number processed: 0

Интересно, означает ли "ошибка выборки HTTP", что мне также нужно добавить "Defaults env_keep = http_proxy" в /etc/sudoers...

Обновление #2: Я добавил:

Defaults env_keep="http_proxy"Defaults env_keep="https_proxy"

...как в Комментарий 18 к ошибке 516032, но я по-прежнему получаю ту же ошибку "gpgkeys: ошибка выборки HTTP 7: не удалось подключиться к хосту".

И это любопытно:

$ sudo env | grep proxyhttps_proxy=https://gateway:8080

...потому что http_proxy там нет.

Любые советы приветствуются.

Обновление #3: Поскольку хостом моей виртуальной машины является ноутбук, я взял его домой и попробовал там (без прокси):

$ sudo add-apt-repository ppa:linaro-maintainers/toolchainExecuting: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97Bgpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.comgpg: key 7BE1F97B: public key "Launchpad Linaro Overlay PPA" importedgpg: Total number processed: 1gpg:               imported: 1  (RSA: 1)

Это сработало. Таким образом, проблема связана с настройкой прокси-сервера. Но я полагаю, что у меня есть обходной путь.

В дополнение к настройке прокси-серверов, сообщите sudo для сохранения окружающей среды с помощью -E вариант:

export http_proxy=http://<proxy>:<port>export https_proxy=http://<proxy>:<port>sudo -E add-apt-repository ppa:linaro-maintainers/toolchain

с именем пользователя и паролем:

export https_proxy=https://<username>:<password>@<proxy>:<port>

Используйте следующий код в терминале, чтобы добавить ключ gpg за прокси,

sudo apt-key adv --keyserver-options http-proxy=http://USER:PASSWORD@PROXY_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

И соответствующим образом замените заглавные буквы. Если вы используете прокси-сервер без какой-либо аутентификации пользователя (т.Е. имени пользователя и пароля), используйте http-proxy=http://PROXY_URL:PORT/ вместо.

Например, чтобы иметь GPG_KEY=C2514567EEA14886 Вы можете использовать,

sudo apt-key adv --keyserver-options http-proxy=http://user:abc123@10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

где,

USER_ID=userPASSWORD=abc123PROXY_URL=10.10.2.21PORT=3128

Если у вас нет аутентификации пользователя, просто используйте,

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

Наконец-то! Вам нужно установить https_proxy через:

export https_proxy=....

только установить http_proxy недостаточно.

И мне нужно было выполнить команду add-apt-repository от имени root, А НЕ через sudo.

Код:

sudo suadd-apt-repository ppa:........

Похоже, что конфигурация прокси настроена, но каким-то образом с сервером невозможно связаться...

У меня была очень похожая проблема, которую я решил следующим образом: корпоративный прокси-сервер разрешает только порты 80 и 443 по соображениям безопасности, поэтому, когда он настроен, поскольку протокол HKP использует порт 11371, он вас не пропустит.

Итак, за исключением выхода по SSH и получения ключа с одного из ваших внешних серверов, загрузки его и локальной установки, вы можете указать сервер ключей из перечисленных ниже и указать порт:

http://sks-keyservers.net/overview-of-pools.php

напр.:

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys XXXXX

Бум, Вуаля!

Мне удалось обойти это, отредактировав /usr/lib/python3/dist-packages/softwareproperties/ppa.py и добавление

"--keyserver-options", "http-proxy=<proxy_url>",

под следующей строкой

"--keyserver", self.keyserver,

Дополнительная справочная информация

ppa.py является скриптом python, который используется add-apt-repository чтобы вызвать gpg. Иногда кажется, что в gpg есть ошибка, из-за которой он не использует переменную окружения http_proxy. Это можно подтвердить, просмотрев файл /root/.gnupg/dirmngr.conf и проверяю, чтобы убедиться, что honor-http-proxy не комментируется.

Этот четырехэтапный подход сработал для меня на виртуальной машине Ubuntu 17.04 за корпоративным прокси-сервером.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng и пусть это провалится
  2. sudo apt update и найдите сообщение об ошибке, например The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6
  3. sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
  4. sudo apt update теперь будет работать

Обратите внимание, что хост-виртуальная машина работает под управлением CNTLM прокси-сервер на порту 3128.

Причина, по которой ваш sudoers изменение не сработало так, как ожидалось, заключается в том, что вместо:

    Defaults env_keep="http_proxy"    Defaults env_keep="https_proxy"

Ты должен был написать:

    Defaults env_keep+="http_proxy"    Defaults env_keep+="https_proxy"

Также убедитесь, что пространство между Defaults и env_keep это вкладка каждый раз.

Что я делаю, так это использую http через curl вместо того, чтобы пытаться прокси apt-key или gpg:

curl -sSL \'http://keyserver.ubuntu.com/pks/lookup?op=get&amp ;поиск=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886' \| sudo apt-key добавить -

Этот метод следует использовать вместо apt-key командной строки или http_proxy или https_proxy настройки переменных окружения (которые отключены в новейших версиях apt-key).

Это помогло мне:

sudo https_proxy='https://user:password@proxyhost:port/' \http_proxy='http://user:password@proxyhost:port/' \ftp_proxy='ftp://user:password@proxyhost:port/' \no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/java

Я предполагаю, что есть некоторые переменные окружения, которые не нужны в команде, но они не вредят.

Добавьте PPA вручную в свой /etc/apt/sources.list:

deb http://ppa.launchpad.net/<user>/<repo>/ubuntu trusty main

Сохраните файл и запустите sudo apt-get update. Может появиться эта ошибка:

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5BB92C09DB82666C

Выполните следующую команду, чтобы принять ключ для PPA, не забыв изменить ключ (5BB92C09DB82666C) для соответствующего PPA.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5BB92C09DB82666C

Бежать sudo apt-get update и с тобой покончено.

Ссылка: Как Добавить PPA Панели Запуска В Debian С Помощью add-apt-repository Команда

Просто для справки