Come posso ottenere add-apt-repository per funzionare attraverso un proxy?

107

Sto provando a seguire le istruzioni "Installare Cross Toolchain su Ubuntu 10.04 (Lucido) e 10.10 (Maverick) Host" su wiki.linaro.org (sulla mia VM Ubuntu 10.04). Il primo passo è:

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

Ma quando corro, ottengo:

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

Credo che il problema sia con la mia configurazione per il server proxy del mio datore di lavoro, in particolare per HTTPS.

Quando ho aperto link in Firefox, ho ricevuto "La connessione è scaduta ". Sono quindi andato in Preferenze di Firefox - & gt; Avanzate: & gt; Rete - & gt; Impostazioni ... e imposta Proxy HTTP su "gateway" e Porta su 8080 e seleziona "Usa questo server proxy per tutti i protocolli". Quindi la pagina è stata caricata. Questo supporta la mia teoria.

Ho provato a impostare le variabili di ambiente http_proxy e https_proxy (sia in lettere maiuscole che in lettere maiuscole):

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

Ho anche provato a cambiarli in:

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

E ho provato ad aggiungere questa seconda riga a /etc/apt/apt.conf:

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

Ma continuo a ricevere lo stesso errore.

Come posso risolvere questo problema?

Aggiornamento: ho seguito le istruzioni nel risposta accettata a " Problema durante l'aggiunta di repository e connessione dal terminale dietro un proxy " e ottenuto:

$ 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

Mi chiedo se l'errore "HTTP fetch" significhi anche aggiungere "Defaults env_keep = http_proxy" a /etc/sudoers ...

Aggiornamento n. 2: ho aggiunto:

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

... come in Comment 18 per bug 516032 , ma ottengo ancora lo stesso errore "gpgkeys: HTTP fetch 7: impossibile connettersi all'host".

E questo è curioso:

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

... perché http_proxy non è lì.

Qualsiasi consiglio è apprezzato.

Aggiornamento n. 3: Poiché l'host della mia VM è un laptop, l'ho portato a casa e ci ho provato (senza 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)

Ha funzionato. Quindi il problema è legato alla configurazione del proxy. Ma suppongo di avere una soluzione alternativa.

    
posta Daryl Spitzer 15.07.2011 - 02:49

13 risposte

161

Oltre alla configurazione dei proxy, specifica sudo per preservare l'ambiente con l'opzione -E :

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

con nome utente e password:

export https_proxy=https://<username>:<password>@<proxy>:<port>
    
risposta data Amal Pillai 08.02.2012 - 12:49
37

Utilizza il codice seguente in un terminale per aggiungere la chiave gpg dietro al proxy,

sudo apt-key adv --keyserver-options http-proxy=http://USER:[email protected]_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

E sostituire le lettere maiuscole di conseguenza. Se stai utilizzando un proxy senza alcuna autenticazione utente (ad es. Nome utente e password) usa invece http-proxy=http://PROXY_URL:PORT/ .

Ad esempio per avere GPG_KEY=C2514567EEA14886 che puoi usare,

sudo apt-key adv --keyserver-options http-proxy=http://user:[email protected]:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

dove,

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

Se non hai l'autenticazione utente, usa semplicemente

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886
    
risposta data Patxi Gomez 06.02.2013 - 19:04
8

Finalmente! Devi impostare https_proxy tramite:

export https_proxy=....

imposta solo http_proxy non è sufficiente.

E avevo bisogno di eseguire il comando add-apt-repository come root, NON via sudo.

Codice:

sudo su
add-apt-repository ppa:........
    
risposta data DaRattler 14.10.2011 - 11:55
6

Sembra che la configurazione del proxy sia impostata ma in qualche modo il server non può essere contattato ...

Ho avuto un problema molto simile che ho risolto in questo modo: Il proxy aziendale consente solo la porta 80 e 443 per motivi di sicurezza, quindi evento quando è impostato, dal momento che il protocollo HKP sta usando la porta 11371, non ti permetterà di passare.

Quindi, a meno di SSH-out e di ottenere la chiave da uno dei server all'esterno, scaricandola e installandola localmente, è possibile specificare il server delle chiavi da quelli elencati di seguito e specificare la porta:

link

per esempio:.

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

Boom, Voila!

    
risposta data leroyse 26.07.2013 - 11:40
3

Il motivo per cui la tua modifica sudoers non ha funzionato come previsto è invece di:

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

Avresti dovuto scrivere:

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

Assicurati inoltre che lo spazio tra Defaults e env_keep sia una scheda ogni volta.

    
risposta data Urhixidur 21.01.2015 - 20:38
3

Sono riuscito a risolvere il problema modificando /usr/lib/python3/dist-packages/softwareproperties/ppa.py e aggiungendo

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

sotto la riga seguente

"--keyserver", self.keyserver,

Altre informazioni di background

ppa.py è lo script python che viene utilizzato da add-apt-repository per chiamare gpg. A volte sembra che ci sia un bug con gpg dove non usa la variabile d'ambiente http_proxy. Ciò può essere confermato visualizzando il file /root/.gnupg/dirmngr.conf e verificando che honor-http-proxy non sia commentato.

    
risposta data Junior Leota 05.07.2017 - 21:56
1

Questo mi ha aiutato:

sudo https_proxy='https://user:[email protected]:port/' \
http_proxy='http://user:[email protected]:port/' \
ftp_proxy='ftp://user:[email protected]:port/' \
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/java

Suppongo che ci siano alcune variabili d'ambiente che non sono necessarie nel comando ma non danno alcun danno.

    
risposta data leo 13.06.2014 - 18:48
1

Aggiungi manualmente il PPA al tuo /etc/apt/sources.list :

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

Salva il file ed esegui sudo apt-get update . Questo errore potrebbe apparire:

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

Esegui il seguente comando per accettare la chiave per il PPA, ricordando di cambiare la chiave (5BB92C09DB82666C) per il PPA corrispondente.

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

Esegui sudo apt-get update e il gioco è fatto.

Rif: Come aggiungere i PPA di Launchpad in Debian Tramite comando add-apt-repository

    
risposta data Ajoy 06.04.2017 - 09:27
1

In realtà, mi imbatto negli stessi problemi, è così che ho trovato questa pagina.

  • variabili d'ambiente http_proxy (case sensitive) e https_proxy (in ogni caso) fanno qualcosa. Non impostandoli fallisce nel primo stadio, l'impostazione delle variabili di ambiente sembra avere qualche effetto; fallirà se non li esporti

    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.
    

    (il resto ha successo - questa volta)

Il fatto è che a volte si blocca e finisce con il solito messaggio di timeout:         Impossibile aggiungere PPA: "" Errore durante la lettura del collegamento : (7, "Connessione al launchpad non riuscita. porta net 443: Timeout connessione ') "'.

... ma sto barando, sto facendo tutto questo come root. Una soluzione semplice è modificare / etc / profile o, su Ubuntu / Mint, basta aggiungere uno script in /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, sì, c'è anche quella cosa su arricciatura (che è usata da apt-add-repository, comunque). Il manuale dice di aggiungere .curlrc nella tua home directory. Perché apt-add-directory è root, significa aggiungerlo a /root/.curlrc:

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

Una buona idea è quella di fare lo stesso in ~ / .curlrc

Inoltre, abilitare il proxy in / etc / wgetrc è una buona cosa da fare, anche se non ha nulla a che fare con la domanda posta, ti sto solo salvando un'altra ricerca su Google (se leggi questo, hai più con un proxy) ...

    
risposta data Marabiloso 04.10.2017 - 18:31
1

Questo approccio in quattro fasi ha funzionato per me su una VM di Ubuntu 17.04 dietro un proxy aziendale.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng e lascia fallito
  2. sudo apt update e cerca un messaggio di errore come 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 ora funzionerà

Si noti che la VM host sta eseguendo un server proxy CNTLM sulla porta 3128.

    
risposta data thegreendroid 14.12.2017 - 04:28
0

Esegui il comando seguente nel terminale

export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
    
risposta data Deepak Rajput 08.02.2012 - 08:05
0

Le variabili di ambiente per tutto il sistema dovrebbero essere effettivamente aggiunte a /etc/environment (usa sudo o gksu ), ma l'errore segnalato sembra non aver trovato dati gpg. Idee:

  • controlla le impostazioni del proxy (se hai accesso)
  • controlla se il proxy sta in qualche modo modificando l'output del traffico crittografato.
  • esegui un netstat continuo per vedere se la connessione al proxy viene effettivamente effettuata
  • l'ultima risorsa sarebbe tcpdump & amp; ispezionare in wireshark
  • prova un tunnel http;)
risposta data t0m5k1 29.08.2011 - 23:04
0

In /etc/apt/apt.conf.d/01proxy aggiungi qualcosa come questo

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

Questo proxy tutti download aptitude, ma penso che questo sia l'unico modo per farlo sul back-end. Se il tuo proxy lo supporta, puoi anche utilizzare un url come http://my.proxy:port/www.target.site.com/url che so funziona per apt-cache-ng

Non sono sicuro che l'add-apt-repository stesso usi queste impostazioni, ma se non riesci a farlo funzionare, puoi sempre aggiungere il repository al tuo /etc/apt/sources.list o /etc/apt/sources.list.d/*mytoolchain*

Dalla 11.10 c'è anche un cross-toolchailable nel repository principale, solo apt-get install gcc-arm-linux-gnueabihf . Esistono anche cross-toolchain disponibili da emdebian e alcune istruzioni qui: link

    
risposta data user72421 27.07.2012 - 19:08

Leggi altre domande sui tag