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

Я пытаюсь следовать за "Перекрестным Набором инструментальных средств установки на (Ясной) Ubuntu 10.04 и 10.10 (Независимых) Хостов" инструкции относительно wiki.linaro.org (на моем VM 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 на "шлюз" и Порт к 8 080, и проверил, "Используют этот прокси-сервер для всех протоколов". Затем загруженная страница. Это поддерживает мою теорию.

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

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

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

$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_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/toolchain
Executing: 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 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpgkeys: HTTP fetch error 7: couldn't connect to host
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

Интересно, означает ли "ошибка выборки HTTP", что я также должен добавить "Значения по умолчанию 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 proxy
https_proxy=https://gateway:8080

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

Любой совет ценится.

Обновление № 3: Так как хост моего VM является ноутбуком, я забрал домой его и попробовал там (без прокси):

$ sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: 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 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpg: key 7BE1F97B: public key "Launchpad Linaro Overlay PPA" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

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

128
задан 13 April 2017 в 05:23

15 ответов

В дополнение к настройке прокси, сообщите 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>
195
ответ дан 22 November 2019 в 22:56

Системные переменные окружения действительно должны быть добавлены в /etc/environment (используйте sudo или gksu), но сообщенная вам ошибка, похоже, говорит о том, что данные gpg не найдены. Идеи:

  • проверьте настройки прокси (если у вас есть доступ)
  • проверьте, не зашифрован ли каким-то образом прокси выходит на выходе зашифрованный трафик.
  • запустите непрерывный netstat, чтобы проверить, действительно ли соединение с прокси-сервером
  • , последним средством будет tcpdump и проверка в wireshark
  • , попробуйте http-туннель ;)
0
ответ дан 22 November 2019 в 22:56

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

export https_proxy=....

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

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

Код:

sudo su
add-apt-repository ppa:........
10
ответ дан 22 November 2019 в 22:56

Выполните приведенную ниже команду в терминале

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/
0
ответ дан 22 November 2019 в 22:56

В /etc/apt/apt. conf.d/01proxy добавьте нечто подобное

Acquire::http { Proxy "http://192.168.0.99:3142"; };

Это проксирует все загрузки способностей, но я думаю, что это единственный способ сделать это на бэкэнде. Если ваш прокси поддерживает это, вы также можете использовать URL типа http://my.proxy:port/www.target.site.com/url, который, как я знаю, работает для apt-cache-ng

Я не уверен, что add-apt-репозиторий сам использует эти настройки, но если вы не можете заставить это работать, вы всегда можете добавить репозиторий в ваш /etc/apt/sources.list или /etc/apt/sources.list.d/*mytoolchain*

Начиная с версии 11.10, в главном репозитории также есть кросс-инструмент, просто apt-get install gcc-arm-linux-gnueabihf. Также есть кросс-инструменты, доступные в emdebian, и некоторые инструкции здесь: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/

1
ответ дан 22 November 2019 в 22:56

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

У меня была очень похожая проблема, которую я решил следующим образом: Корпоративный прокси-сервер разрешает только порты 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

Бум, вуаля!

6
ответ дан 22 November 2019 в 22:56

Используйте следующий код в терминале, чтобы добавить ключ 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=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

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

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886
39
ответ дан 22 November 2019 в 22:56

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

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

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

2
ответ дан 22 November 2019 в 22:56

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

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

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

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

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

3
ответ дан 22 November 2019 в 22:56

Добавьте 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 Launchpad в Debian с помощью add-apt-repository Команда

1
ответ дан 22 November 2019 в 22:56

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

  • переменные среды http_proxy (с учетом регистра) и https_proxy (в любом случае) что-то делают. Не установить их на первом этапе не удается, установка переменных среды, похоже, имеет некоторый эффект; он завершится неудачно, если вы не экспортируете их

     TCRKVMW ~ $ sudo su -
    TCRKVMW ~ # экспорт http_proxy = http: //10.54.0.4: 8080 /
    TCRKVMW ~ # экспорт https_proxy = http: //10.54.0.4: 8080 /
    TCRKVMW ~ # add-apt-репозиторий ppa: webupd8team / java
    Вы собираетесь добавить следующий PPA:
      Установщик Oracle Java (JDK) (автоматически загружает и устанавливает Oracle JDK7 / JDK8 / JDK9).  В этом PPA нет реальных файлов Java.
     

    (остальное успешно - на этот раз)

Дело в том, что иногда он просто застревает и заканчивается обычным сообщением о тайм-ауте: Не удается добавить PPA: '"Ошибка чтения https://launchpad.net/api/1.0/~webupd8team/+archive/java : (7,' Не удалось подключиться к порту launchpad.net 443: время подключения out ') "'.

... но я жульничаю, все это делаю как root. Простое решение - отредактировать / etc / profile или, в Ubuntu / Mint, просто добавить скрипт в /etc/profile.d:

    TCRKVMW ~ $ sudo su -c 'F=/etc/profile.d/proxy.sh S="export proxy_http=\"http://192.168.99.4\"\nexport proxy_https=\"http://192.168.99.4\"" ; echo -e ${S} > ${F} ; chmod 700 ${F}'

О, да, есть еще кое-что о curl (которое используется apt-add -хранилище, кстати). В руководстве говорится, что нужно добавить .curlrc в ваш домашний каталог. Поскольку apt-add-directory принадлежит пользователю root,это означает добавление его в /root/.curlrc:

    proxy_http="http://192.168.99.4"
    proxy_https="http://192.168.99.4"

. Хорошая идея - сделать то же самое в вашем собственном ~ / .curlrc

Кроме того, включение прокси в / etc / wgetrc - это хорошо, хотя это не имеет ничего общего с заданным вопросом, я просто сохраняю вам еще один поиск в Google (если вы читаете это, у вас есть несколько с прокси) ...

1
ответ дан 22 November 2019 в 22:56

Мне удалось обойти это, отредактировав /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 не закомментирован.

3
ответ дан 22 November 2019 в 22:56

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

  1. sudo apt -add-repository ppa: brightbox / ruby-ng и дайте ему потерпеть неудачу
  2. sudo apt update и найдите сообщение об ошибке вроде Следующие подписи не могут быть проверены, потому что открытый ключ недоступно: 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.

3
ответ дан 22 November 2019 в 22:56

Другое решение - добавить файл APT proxy.conf , /etc/apt/apt.conf.d/proxy.conf

Acquire::http::Proxy "http://your.proxy.server.here.com:port/";
Acquire::https::Proxy "http://your.proxy.server.here.com:port/";
0
ответ дан 22 November 2019 в 22:56

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

curl -sSL \ ' http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886 ' \ | sudo apt-key add -

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

1
ответ дан 22 November 2019 в 22:56

Другие вопросы по тегам:

Похожие вопросы: