Як змусити додаток-apt-сховище працювати через проксі?


119

Я намагаюся дотримуватися інструкцій "Встановлення крос-інструментальної мережі на Ubuntu 10.04 (Lucid) та 10.10 (Maverick) Hosts" на 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.

Коли я відкрив https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain у Firefox, у мене з’явилося повідомлення "Час зв’язку вичерпано". Потім я зайшов у Firefox Preferences -> Advanced -> Network -> Settings ... і встановив HTTP Proxy на "шлюз" та Port на 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)

Це спрацювало. Тому проблема пов'язана з конфігурацією проксі. Але я гадаю, що у мене є вирішення проблеми.


Тільки для довідки askubuntu.com/questions/60217/…
Deepak Rajput

Відповіді:


183

Крім налаштування проксі, скажіть, 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>

Я справді працював
Шашват Кумар

14
-E (після того, як зробив усі інші речі, описані вище), він працював на мене.
cschooley

2
і так, https_proxyконфігурація була потрібна ...: P
monkut

1
Як додати проксі постійно і уникати переключення -E? У мене файл / etc / environment налаштований належним чином із доданими рядками ... Дякую
Енріке

1
Від man sudo: -E, --preserve-envПозначає політиці безпеки, що користувач бажає зберегти існуючі змінні середовища. Політика безпеки може повернути помилку, якщо користувач не має дозволу на збереження навколишнього середовища.m
Pablo A

39

Використовуйте наступний код у терміналі, щоб додати 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

3
Це насправді не "виправляє" виконання команд add-apt-repository. Дійсно, він працює навколо одного зі своїх завдань. Потрібно хоча б одну додаткову команду: sudoedit /etc/apt/sources.list.d/XXXX.list + ручне видання, щоб додати URL-адреси дебюту ...
Чаккі

Було б ідеально, якщо ви додасте трохи інформації про те, як вічно виправити проксі.
Надане

9

Нарешті! Вам потрібно встановити https_proxy за допомогою:

export https_proxy=....

лише встановити http_proxy недостатньо.

І мені потрібно було виконати команду add-apt-repository як root, а не через sudo.

Код:

sudo su
add-apt-repository ppa:........

6

Здається, налаштування проксі налаштовано, але якось із сервером не можна зв’язатися ...

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

Бум, Вуаля!


Так. Це спрацювало для мене під час встановлення Mono на Debian 7:sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
кен

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закладка кожен раз.


3

Мені вдалося вирішити це шляхом редагування /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

Цей чотиришаговий підхід працював для мене на 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 тепер буде працювати

Зауважте, що VM хоста працює на CNTLMсервері порту 3128 проксі-сервера.


1
Вам не доведеться чекати влучного, щоб сказати вам, що є ключем. Це там у технічних деталях PPA : "Відбиток пальців: 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6"
муру

Це правда, але я знайшов цей процес трохи простіше.
thegreendroid

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

Я думаю, що є деякі змінні середовища, які не потрібні команді, але вони не завдають шкоди.


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і ти закінчиш.

Ref: Як додати PPA-адреси для запуску в Debian через add-apt-repositoryCommand


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: "" Помилка читання https://launchpad.net/api/1.0/~webupd8team/+archive/java : (7, ' Не вдалося підключитися до порту startpad.net 443: Час з'єднання вичерпано ') "'.

... але я обманюю, все це роблю як корінь. Просте рішення - це редагувати / 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-каталог власний root, це означає додати його до /root/.curlrc:

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

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

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


1

В /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

Я не впевнений, чи сам додаток-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/


user72421: як ти знав, що проксі повинен бути префіксом 01, а не іншим номером?
jgomo3

Не працює з apt-get & keyserver
Вік,

1

Що я роблю, - це використовувати http через curl, а не намагатися проксі-ключ або gpg:

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

Цей метод слід використовувати замість apt-keyкомандного рядка або http_proxyабо https_proxyнастройки змінних оточення (які відключені в новітніх версіях APT-ключ).


0

Виконайте нижче команду в терміналі

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/

0

Загальносистемні змінні середовища слід дійсно додавати до /etc/environment(використовувати sudoчи gksu), але помилка, про яку вам повідомляється, свідчить, що дані gpg не знайдено. Ідеї:

  • перевірити налаштування проксі (якщо у вас є доступ)
  • перевірте, чи проксі-сервер якось змінює вихід зашифрованого трафіку.
  • запустіть безперервний netstat, щоб перевірити, чи справді встановлено з'єднання з проксі
  • Останнім засобом було б tcpdump & оглянути проводку
  • спробуйте http тунель;)

0

Ще одне рішення - додати proxy.confфайл APT ,/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/";
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.