128 votes

Comment faire fonctionner add-apt-repository à travers un proxy?

Je tente de suivre les instructions "Installing Cross Toolchain on Ubuntu 10.04 (Lucid) and 10.10 (Maverick) Hosts" sur wiki.linaro.org (sur mon Ubuntu 10.04 VM). La première étape est :

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

Mais quand j'exécute cette commande, j'obtiens :

Erreur de lecture de https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: 

Je suppose que le problème vient de ma configuration pour le serveur proxy de mon employeur, particulièrement pour HTTPS.

Quand j'ai ouvert https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain dans Firefox, j'ai obtenu "La connexion a expiré". J'ai ensuite été dans les Préférences de Firefox -> Avancé -> Réseau -> Paramètres... et j'ai défini le Proxy HTTP sur "gateway" et le Port sur 8080, et j'ai coché "Utiliser ce serveur proxy pour tous les protocoles". Ensuite la page s'est chargée. Cela confirme ma théorie.

J'ai essayé de définir les variables d'environnement http_proxy et https_proxy (en minuscule et en majuscule) :

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

J'ai également essayé de les changer en :

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

Et j'ai essayé d'ajouter cette deuxième ligne à /etc/apt/apt.conf :

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

Mais je continue d'obtenir la même erreur.

Comment puis-je résoudre ce problème ?

Mise à jour : J'ai suivi les instructions de la réponse acceptée à "Problem adding repositories and connecting from terminal behind a proxy" et j'ai progressé :

$ 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

Je me demande si l'erreur "HTTP fetch" signifie que je dois aussi ajouter "Defaults env_keep = http_proxy" à /etc/sudoers...

Mise à jour #2 : J'ai ajouté :

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

...comme dans Commentaire 18 pour le bug 516032, mais je continue d'obtenir la même erreur "gpgkeys: HTTP fetch error 7: couldn't connect to host".

Et c'est curieux :

$ sudo env | grep proxy
https_proxy=https://gateway:8080

...car http_proxy n'apparaît pas.

Tout conseil est apprécié.

Mise à jour #3 : Comme l'hôte de ma VM est un ordinateur portable, je l'ai emporté chez moi et j'ai essayé là-bas (sans proxies):

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

Ça a fonctionné. Donc le problème est lié à la configuration du proxy. Mais je suppose que j'ai une solution de contournement.

200voto

Tim Lytle Points 10699

En plus de configurer des proxys, indiquez à sudo de préserver l'environnement avec l'option -E:

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

avec nom d'utilisateur et mot de passe:

export https_proxy=https://:@:

40voto

Patxi Gomez Points 401

Utilisez le code suivant dans un terminal pour ajouter une clé gpg derrière un proxy,

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

Et remplacez les lettres majuscules en conséquence. Si vous utilisez un proxy sans authentification utilisateur (c'est-à-dire sans nom d'utilisateur et mot de passe), utilisez http-proxy=http://PROXY_URL:PORT/ à la place.

Par exemple, pour avoir GPG_KEY=C2514567EEA14886 vous pouvez utiliser,

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

où,

USER_ID=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

Si vous n'avez pas d'authentification utilisateur, utilisez simplement,

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

10voto

DaRattler Points 111

Enfin! Vous devez définir https_proxy via:

export https_proxy=....

seulement définir http_proxy n'est pas suffisant.

Et j'ai dû exécuter la commande add-apt-repository en tant que root, PAS via sudo.

Code:

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

6voto

leroyse Points 161

Il semble que la configuration du proxy soit mise en place mais que le serveur ne puisse pas être contacté...

J'ai eu un problème très similaire que j'ai résolu de cette façon : Le proxy d'entreprise ne permet que les ports 80 et 443 pour des raisons de sécurité, donc même lorsqu'il est configuré, puisque le protocole HKP utilise le port 11371, il ne vous laissera pas passer.

Donc, à moins de faire du SSH pour obtenir la clé depuis l'un de vos serveurs extérieurs, la télécharger et l'installer localement, vous pouvez spécifier le serveur de clés à partir de ceux listés ci-dessous et spécifier le port :

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

par exemple :

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

Boom, Voilà!

3voto

user60033 Points 1

La raison pour laquelle votre modification de sudoers n'a pas fonctionné comme prévu est que au lieu de :

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

Vous auriez dû écrire :

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

Assurez-vous également que l'espace entre Defaults et env_keep est un tabulation à chaque fois.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X