Comment puis-je utiliser add-apt-repository via un proxy?

107

J'essaie de suivre les instructions de Installation de Cross Toolchain sur les hôtes Ubuntu 10.04 (Lucid) et 10.10 (Maverick) " sur wiki.linaro.org (sur ma machine virtuelle Ubuntu 10.04). La première étape est la suivante:

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

Mais quand je cours, je reçois:

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

Je suppose que le problème est lié à ma configuration pour le serveur proxy de mon employeur, en particulier pour HTTPS.

Lorsque j'ai ouvert lien dans Firefox, j'ai eu "La connexion a expiré ". Je suis ensuite allé dans les préférences de Firefox - & gt; Avancé - & gt; Réseau - & gt; Paramètres ... et définissez HTTP Proxy sur "gateway" et Port sur 8080, et cochez "Utiliser ce serveur proxy pour tous les protocoles". Puis la page chargée. Cela soutient ma théorie.

J'ai essayé de définir les variables d'environnement http_proxy et https_proxy (majuscules et minuscules):

$ 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 aussi essayé de les changer pour:

$ 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 à avoir la même erreur.

Comment résoudre ce problème?

Mise à jour: J'ai suivi les instructions du réponse acceptée à " Problème d’ajout de référentiels et connexion depuis un terminal derrière un proxy " et plus loin:

$ 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 de récupération HTTP" signifie que je dois aussi ajouter "Par défaut env_keep = http_proxy" à /etc/sudoers ...

Mise à jour n ° 2: J'ai ajouté:

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

... comme dans Commentaire 18 pour le bug 516032 , mais j'obtiens toujours la même erreur "gpgkeys: erreur de récupération HTTP 7: impossible de se connecter à l'hôte".

Et c'est curieux:

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

... car http_proxy n'est pas là.

Tout conseil est apprécié.

Mise à jour n ° 3: L'hôte de ma machine virtuelle étant un ordinateur portable, je l'ai ramené à la maison et essayé (sans proxy):

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

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

    
posée Daryl Spitzer 15.07.2011 - 02:49
la source

13 réponses

161

Outre la configuration des proxys, indiquez à sudo de préserver l’environnement avec l’option -E :

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

avec nom d'utilisateur et mot de passe:

export https_proxy=https://<username>:<password>@<proxy>:<port>
    
réponse donnée Amal Pillai 08.02.2012 - 12:49
la source
37

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

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

Remplacez les majuscules en conséquence. Si vous utilisez un proxy sans authentification de l'utilisateur (par exemple, nom d'utilisateur et mot de passe), utilisez plutôt http-proxy=http://PROXY_URL:PORT/ .

Par exemple, vous pouvez utiliser 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

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
    
réponse donnée Patxi Gomez 06.02.2013 - 19:04
la source
8

Enfin! Vous devez définir https_proxy via:

export https_proxy=....

seul http_proxy défini ne suffit pas.

Et je devais exécuter la commande add-apt-repository en tant que root, PAS via sudo.

Code:

sudo su
add-apt-repository ppa:........
    
réponse donnée DaRattler 14.10.2011 - 11:55
la source
6

Il semble que la configuration du proxy soit configurée mais le serveur ne peut pas être contacté en quelque sorte ...

J'ai eu un problème très similaire que j'ai résolu comme ceci: Le proxy d'entreprise n'autorise que les ports 80 et 443 pour des raisons de sécurité, de sorte qu'il ne vous laissera pas passer lors de sa configuration, puisque le protocole HKP utilise le port 11371.

Si SSH n'est pas disponible et que vous récupérez la clé à l’extérieur de l’un de vos serveurs, en la téléchargeant et en l’installant localement, vous pouvez spécifier le serveur de clés ci-dessous et spécifier le port:

lien

par exemple:

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

Boom, Voila!

    
réponse donnée leroyse 26.07.2013 - 11:40
la source
3

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

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

Vous devriez avoir écrit:

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

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

    
réponse donnée Urhixidur 21.01.2015 - 20:38
la source
3

J'ai réussi à contourner ce problème en modifiant /usr/lib/python3/dist-packages/softwareproperties/ppa.py et en ajoutant

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

sous la ligne suivante

"--keyserver", self.keyserver,

Autres informations générales

ppa.py est le script python utilisé par add-apt-repository pour appeler gpg. Il semble parfois y avoir un bogue avec gpg où il n'utilise pas la variable d'environnement http_proxy. Cela peut être confirmé en affichant le fichier /root/.gnupg/dirmngr.conf et en vérifiant que honor-http-proxy n'est pas mis en commentaire.

    
réponse donnée Junior Leota 05.07.2017 - 21:56
la source
1

Cela m'a aidé:

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

Je suppose que certaines variables d'environnement ne sont pas nécessaires dans la commande mais qu'elles ne nuisent pas.

    
réponse donnée leo 13.06.2014 - 18:48
la source
1

Ajoutez le PPA manuellement à votre /etc/apt/sources.list :

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

Enregistrez le fichier et exécutez sudo apt-get update . Cette erreur peut apparaître:

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

Exécutez la commande suivante pour accepter la clé du PPA, sans oublier de changer la clé (5BB92C09DB82666C) pour le PPA correspondant.

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

Exécutez sudo apt-get update et vous avez terminé.

Réf: Comment ajouter des PPA Launchpad dans Debian Via la commande add-apt-repository

    
réponse donnée Ajoy 06.04.2017 - 09:27
la source
1

En fait, je rencontre les mêmes problèmes, c’est comme ça que j’ai trouvé cette page.

  • Les variables d'environnement http_proxy (sensible à la casse) et https_proxy (dans tous les cas) font quelque chose. Ne pas les définir échoue dans la première étape, la définition des variables d'environnement semble avoir un effet; il échouera si vous ne les exportez pas

    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.
    

    (le reste est réussi - cette fois)

La chose est, parfois, il suffit de rester bloqué et se termine avec le message de délai d'attente habituel:         Impossible d'ajouter PPA: '"Erreur lors de la lecture de lien : (7, Échec de la connexion au tableau de bord. port net 443: la connexion a expiré ') "'.

... mais je triche, je fais tout ça en tant que root. Une solution simple consiste à éditer / etc / profile ou, sur Ubuntu / Mint, il suffit d’ajouter un script dans /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}'

Oh oui, il y a aussi cette chose à propos de curl (qui est utilisée par apt-add-repository, en passant). Le manuel dit d'ajouter .curlrc dans votre répertoire personnel. Comme apt-add-directory est propre à root, cela signifie l'ajouter à /root/.curlrc:

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

Une bonne idée est de faire la même chose dans votre propre ~ / .curlrc

En outre, activer le proxy dans / etc / wgetrc est une bonne chose à faire, même si cela n’a rien à voir avec la question posée, je vous sauve juste une autre recherche sur Google (si vous lisez ceci, vous en avez plusieurs). avec un proxy) ...

    
réponse donnée Marabiloso 04.10.2017 - 18:31
la source
1

Cette approche en quatre étapes a fonctionné pour moi sur une machine virtuelle Ubuntu 17.04 derrière un proxy d'entreprise.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng et laissez-le échouer
  2. sudo apt update et recherchez un message d'erreur tel que 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 fonctionnera maintenant

Notez que la machine virtuelle hôte exécute un serveur proxy CNTLM sur le port 3128.

    
réponse donnée thegreendroid 14.12.2017 - 04:28
la source
0

Exécutez la commande ci-dessous dans le terminal

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/
    
réponse donnée Deepak Rajput 08.02.2012 - 08:05
la source
0

Les variables d'environnement système doivent être ajoutées à /etc/environment (utilisez sudo ou gksu ), mais l'erreur qui vous est signalée semble indiquer qu'aucune donnée gpg n'a été trouvée. Idées:

  • vérifiez les paramètres du proxy (si vous y avez accès)
  • vérifiez si le proxy mélange d’une certaine manière la sortie du trafic chiffré.
  • lancez un netstat continu pour voir si la connexion au proxy est bien établie
  • dernier recours serait de tcpdump & amp; inspecter en wirehark
  • essayez un tunnel http;)
réponse donnée t0m5k1 29.08.2011 - 23:04
la source
0

Dans /etc/apt/apt.conf.d/01proxy , ajoutez quelque chose comme ça

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

Cela utilisera tous les téléchargements d'aptitude tous les , mais je pense que c'est la seule façon de le faire sur le backend. Si votre proxy le supporte, vous pouvez également utiliser une URL telle que http://my.proxy:port/www.target.site.com/url que je sais fonctionne pour apt-cache-ng

Je ne suis pas sûr que add-apt-repository utilise lui-même ces paramètres, mais si vous ne pouvez pas faire cela, vous pouvez toujours ajouter le référentiel à votre /etc/apt/sources.list ou /etc/apt/sources.list.d/*mytoolchain*

Depuis 11.10, il existe également une table à outils croisée dans le référentiel principal, juste apt-get install gcc-arm-linux-gnueabihf . Emdebian propose également des outils transversaux, ainsi que quelques instructions: lien

    
réponse donnée user72421 27.07.2012 - 19:08
la source

Lire d'autres questions sur les étiquettes