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.
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>
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
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:........
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!
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.
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é.
Cette approche en quatre étapes a fonctionné pour moi sur un Ubuntu 17.04 VM derrière un proxy d'entreprise.
Sudo apt-add-repository ppa:brightbox/Ruby-ng
et laissez-le échouerSudo 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
Sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
Sudo apt update
va maintenant fonctionnerNotez que l'hôte VM exécute un serveur proxy CNTLM
sur le port 3128.
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.
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
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 ) ...
Exécuter la commande ci-dessous dans le terminal
export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
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:
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/