web-dev-qa-db-fra.com

Comment faire pour que add-apt-repository fonctionne via un proxy?

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

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>

J'imagine que le problème vient de ma configuration pour le serveur proxy de mon employeur, en particulier pour HTTPS.

Quand j'ai ouvert https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain dans Firefox, j'ai reçu "La connexion a expiré". Je suis ensuite allé dans les préférences de Firefox -> Avancé -> Réseau -> Paramètres ... et définissez le proxy HTTP sur "passerelle" et le port sur 8080, puis cochez la case "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 (minuscules et majuscules):

$ 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 seconde 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 puis-je résoudre ce problème?

Mise à jour: J'ai suivi les instructions du réponse acceptée à "Problème lors de l'ajout de référentiels et de la connexion du terminal derrière un proxy " et a obtenu 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 j'ai également besoin d'ajouter "Valeurs par défaut 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 bogue 516032 , mais j'obtiens toujours le même erreur "gpgkeys: HTTP fetch error 7: impossible de se connecter à l'hôte".

Et c'est curieux:

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

... parce que http_proxy n'est pas là.

Tout conseil est apprécié.

Mise à jour 3: Étant donné que l'hôte de mon VM est un ordinateur portable, je l'ai pris chez moi et j'ai 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)

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

117
Daryl Spitzer

En plus de configurer les mandataires, indiquez Sudo pour 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>
177
Amal Pillai

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

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

Par exemple, vous pouvez utiliser GPG_KEY=C2514567EEA14886,

Sudo apt-key adv --keyserver-options http-proxy=http://user:[email protected]: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 d'utilisateur simplement utiliser,

Sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886
39
Patxi Gomez

Finalement! Vous devez définir https_proxy via:

export https_proxy=....

définir uniquement http_proxy n'est pas suffisant.

Et j'avais besoin d'exécuter la commande add-apt-repository en tant que root, PAS via Sudo.

Code:

Sudo su
add-apt-repository ppa:........
8
DaRattler

Il semble que la configuration du proxy soit configurée, mais que le serveur ne puisse pas être contacté ...

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é. Par conséquent, lors de la configuration, le protocole HKP utilisant le port 11371 ne vous laissera pas passer.

Ainsi, à moins que SSH n'entre et récupère la clé de l'un de vos serveurs à l'extérieur, soit en la téléchargeant et en l'installant localement, vous pouvez spécifier le serveur de clés parmi ceux énuméré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, voila!

6
leroyse

La raison pour laquelle votre modification sudoers n'a pas fonctionné comme prévu est qu'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 onglet à chaque fois.

3
Urhixidur

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

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

sous la ligne suivante

"--keyserver", self.keyserver,

Plus d'informations de base

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

3
Junior Leota

Cette approche en quatre étapes a fonctionné pour moi sur un Ubuntu 17.04 VM 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 du type 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 va maintenant fonctionner

Notez que l'hôte VM exécute un serveur proxy CNTLM sur le port 3128.

2
thegreendroid

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

J'imagine qu'il existe certaines variables d'environnement qui ne sont pas nécessaires dans la commande mais qui ne nuisent pas.

1
leo

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é pour le 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é.

Ref: Comment ajouter des PPA de tableau de bord dans Debian via la commande add-apt-repository

1
Ajoy

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 (quelle que soit la casse) agissent. Ne pas les définir échoue dans la première étape, la définition des variables d'environnement semble avoir un effet; cela é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)

Le problème est que, parfois, il reste bloqué et se termine avec le message de délai habituel: Impossible d'ajouter PPA: '"Erreur de lecture https://launchpad.net/api/1.0/~webupd8team/+archive/Java : (7, 'Echec de la connexion au port 443 de launchpad.net: la connexion a expiré') "'.

... mais je triche, je fais tout cela en tant que root. Une solution simple consiste à éditer/etc/profile ou, sous Ubuntu/Mint, 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 d'ailleurs utilisé par apt-add-repository). Le manuel dit d'ajouter .curlrc dans votre répertoire personnel. Comme apt-add-directory appartient à la racine, cela signifie que vous devez 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

De plus, activer le proxy dans/etc/wgetrc est une bonne chose à faire. Bien que cela n’ait rien à voir avec la question posée, je vous enregistre juste une autre recherche sur Google (si vous lisez ceci, vous en avez plusieurs avec un proxy ) ...

1
Marabiloso

Exécuter la commande ci-dessous dans le terminal

export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
0
Deepak Rajput

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

  • vérifier les paramètres de proxy (si vous avez accès)
  • vérifiez si le proxy est en train de modifier la sortie du trafic chiffré.
  • lancer un netstat continu pour voir si la connexion au proxy est en train de se faire
  • dernier recours serait de tcpdump & inspecter dans Wireshark
  • essayez un tunnel http;)
0
t0m5k1

Dans /etc/apt/apt.conf.d/01proxy ajouter quelque chose comme ceci

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

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

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

Depuis la version 11.10, il existe également un outil multisupport dans le référentiel principal, uniquement apt-get install gcc-arm-linux-gnueabihf. Il existe également des chaînes d’outils croisées disponibles auprès d’emdebian, et des instructions sont disponibles ici: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/

0
user72421