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

103

Я пытаюсь выполнить «Установка кросс-инструментальной привязки по инструкциям Ubuntu 10.04 (Lucid) и 10.10 (Maverick)» на wiki.linaro.org (на моей Ubuntu 10.04 VM). Первый шаг:

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.

Когда я открыл ссылку в Firefox, я получил сообщение «Время соединения завершено ». Затем я перешел в Firefox Preferences - & gt; Дополнительно - & gt; Сеть - & gt; Настройки ... и установите HTTP-прокси на «шлюз» и «Порт» на 8080, и отметьте «Использовать этот прокси-сервер для всех протоколов». Затем загрузится страница. Это поддерживает мою теорию.

Я попытался установить переменные окружения 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: Поскольку хост моей виртуальной машины - это ноутбук, я взял его домой и попробовал там (без прокси):

$ 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)

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

    
задан Daryl Spitzer 15.07.2011 в 02:49
источник

13 ответов

157

В дополнение к настройке прокси, скажите 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>
    
ответ дан Amal Pillai 08.02.2012 в 12:49
источник
33

Используйте следующий код в терминале, чтобы добавить ключ 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
    
ответ дан Patxi Gomez 06.02.2013 в 19:04
источник
8

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

export https_proxy=....

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

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

код:

sudo su
add-apt-repository ppa:........
    
ответ дан DaRattler 14.10.2011 в 11:55
источник
6

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

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

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

Ссылка

например:.

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

Бум, Вуаля!

    
ответ дан leroyse 26.07.2013 в 11:40
источник
3

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

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

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

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

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

    
ответ дан Urhixidur 21.01.2015 в 20:38
источник
2

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

    
ответ дан Junior Leota 05.07.2017 в 21:56
источник
1

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

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

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

    
ответ дан leo 13.06.2014 в 18:48
источник
1

Добавьте 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 , и все готово.

Ссылка: Как добавить PPAP Launchpad в Debian Через команду add-apt-repository

    
ответ дан Ajoy 06.04.2017 в 09:27
источник
1

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

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

    TCRKVMW ~ $ sudo su -
    TCRKVMW ~ # export http_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # export https_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # add-apt-repository ppa:webupd8team/java
    You are about to add the following PPA:
     Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7 / JDK8 / JDK9). There are no actual Java files in this PPA.
    

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

Дело в том, что иногда он просто застревает и заканчивается обычным сигналом таймаута:         Невозможно добавить PPA: «Ошибка при чтении Ссылка : (7,« Не удалось подключиться к панели запуска. сетевой порт 443: время ожидания подключения ")".

... но я обманываю, я делаю все это как 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-repository). В руководстве сказано добавить .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 (если вы читаете это, у вас есть несколько с прокси) ...

    
ответ дан Marabiloso 04.10.2017 в 18:31
источник
1

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

  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 proxy на порту 3128.

    
ответ дан thegreendroid 14.12.2017 в 04:28
источник
0

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

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/
    
ответ дан Deepak Rajput 08.02.2012 в 08:05
источник
0

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

  • проверьте настройки прокси-сервера (если у вас есть доступ)
  • проверьте, что прокси-сервер каким-то образом перехватывает вывод зашифрованного трафика.
  • запустить непрерывный netstat, чтобы проверить, действительно ли установлено соединение с прокси.
  • Последним средством было бы tcpdump & amp; инспектировать в wirehark
  • попробуйте http-туннель;)
ответ дан t0m5k1 29.08.2011 в 23:04
источник
0

В /etc/apt/apt.conf.d/01proxy добавьте что-то вроде этого

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

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

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

Начиная с 11.10, в основном репо есть также кросс-инструментальный доступ, только apt-get install gcc-arm-linux-gnueabihf . Есть также перекрестные инструментальные средства, доступные от emdebian, и некоторые инструкции здесь: Ссылка     

ответ дан user72421 27.07.2012 в 19:08
источник

Ознакомьтесь с другими вопросами по меткам