Wie bekomme ich add-apt-repository, um über einen Proxy zu arbeiten?

107

Ich versuche der "Installation der Cross Toolchain unter Ubuntu 10.04 (Lucid) und 10.10 (Maverick) Hosts" zu folgen auf wiki.linaro.org (auf meiner Ubuntu 10.04 VM). Der erste Schritt ist:

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

Aber wenn ich renne, bekomme ich:

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

Ich vermute, dass das Problem bei meiner Konfiguration für den Proxy-Server meines Arbeitgebers liegt, insbesondere bei HTTPS.

Als ich lien in Firefox geöffnet habe, habe ich "Die Verbindung ist abgelaufen ". Ich ging dann in Firefox Einstellungen - & gt; Erweitert - & gt; Netzwerk - & gt; Einstellungen ... und setzen Sie den HTTP-Proxy auf "Gateway" und Port auf 8080, und aktivieren Sie "Diesen Proxy-Server für alle Protokolle verwenden". Dann wird die Seite geladen. Dies unterstützt meine Theorie.

Ich habe versucht, die Umgebungsvariablen http_proxy und https_proxy (Groß- und Kleinschreibung) zu setzen:

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

Ich habe auch versucht, sie zu ändern:

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

Und ich habe versucht, diese zweite Zeile zu /etc/apt/apt.conf hinzuzufügen:

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

Aber ich bekomme weiterhin den gleichen Fehler.

Wie behebe ich Fehler?

Update: Ich habe die Anweisungen in akzeptierte Antwort zu " Problem beim Hinzufügen von Repositories und die Verbindung vom Terminal hinter einem Proxy " und weiter:

$ 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

Ich frage mich, ob der "HTTP fetch error" bedeutet, dass ich auch "Defaults env_keep = http_proxy" zu /etc/sudoers ...

hinzufügen muss

Update # 2: Ich habe hinzugefügt:

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

... wie in Kommentar 18 für Bug 516032 , aber ich bekomme immer noch den gleichen "gpgkeys: HTTP fetch Fehler 7: konnte nicht zum Host verbinden" Fehler.

Und das ist neugierig:

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

... weil http_proxy nicht da ist.

Jeder Rat wird geschätzt.

Update # 3: Da der Host meiner VM ein Laptop ist, nahm ich ihn mit nach Hause und probierte dort (ohne 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)

Es hat funktioniert. Das Problem hängt also mit der Proxy-Konfiguration zusammen. Aber ich nehme an, ich habe einen Workaround.

    
Daryl Spitzer 15.07.2011, 02:49
quelle

13 Antworten

161

Geben Sie zusätzlich zum Konfigurieren von Proxies sudo an, um die Umgebung mit der Option -E zu erhalten:

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

mit Benutzername und Passwort:

export https_proxy=https://<username>:<password>@<proxy>:<port>
    
Amal Pillai 08.02.2012, 12:49
quelle
37

Verwenden Sie den folgenden Code in einem Terminal, um GPG-Schlüssel hinter Proxy hinzuzufügen,

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

Und ersetzen Sie Großbuchstaben entsprechend. Wenn Sie einen Proxy ohne Benutzerauthentifizierung (z. B. Benutzername und Kennwort) verwenden, verwenden Sie stattdessen http-proxy=http://PROXY_URL:PORT/ .

Um beispielsweise GPG_KEY=C2514567EEA14886 zu verwenden, können Sie

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

wo,

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

Wenn Sie keine Benutzerauthentifizierung haben, verwenden Sie einfach

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

Endlich! Sie müssen https_proxy über:

festlegen
export https_proxy=....

nur set http_proxy ist nicht genug.

Und ich musste den Befehl add-apt-repository als root ausführen, NICHT über sudo.

Code:

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

Es scheint, dass die Proxy-Konfiguration eingerichtet ist, aber irgendwie kann der Server nicht kontaktiert werden ...

Ich hatte ein sehr ähnliches Problem, das ich so gelöst habe: Der Firmen-Proxy erlaubt nur Port 80 und 443 aus Sicherheitsgründen, also Event bei der Einrichtung, da das HKP-Protokoll Port 11371 verwendet, wird es Sie nicht durchlassen.

Also, kurz bevor Sie den Schlüssel von einem Ihrer Server holen, ihn herunterladen und lokal installieren, können Sie den Schlüsselserver unter den unten aufgeführten angeben und den Port angeben:

Pfandrecht

z.B.:

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

Boom, Voila!

    
leroyse 26.07.2013 11:40
quelle
3

Der Grund dafür, dass Ihre sudoers -Veränderung nicht wie erwartet funktioniert, ist, dass statt:

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

Du hättest schreiben sollen:

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

Stellen Sie außerdem sicher, dass das Leerzeichen zwischen Defaults und env_keep jedes Mal ein Tab ist.

    
Urhixidur 21.01.2015 20:38
quelle
3

Ich habe es geschafft, dies zu umgehen, indem ich /usr/lib/python3/dist-packages/softwareproperties/ppa.py bearbeite und

hinzufüge
"--keyserver-options", "http-proxy=<proxy_url>",

unter der folgenden Zeile

"--keyserver", self.keyserver,

Weitere Hintergrundinformationen

ppa.py ist das Python-Skript, das von add-apt-repository verwendet wird, um gpg aufzurufen. Es scheint manchmal einen Fehler mit gpg zu geben, bei dem die Umgebungsvariable http_proxy nicht verwendet wird. Dies kann bestätigt werden, indem Sie die Datei /root/.gnupg/dirmngr.conf anzeigen und überprüfen, ob honor-http-proxy nicht auskommentiert ist.

    
Junior Leota 05.07.2017 21:56
quelle
1

Das hat mir geholfen:

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

Ich nehme an, dass es einige Umgebungsvariablen gibt, die im Befehl nicht benötigt werden, aber nicht schaden.

    
leo 13.06.2014 18:48
quelle
1

Fügen Sie den PPA manuell zu Ihrem /etc/apt/sources.list :

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

Speichern Sie die Datei und führen Sie sudo apt-get update aus. Dieser Fehler kann auftreten:

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

Führen Sie den folgenden Befehl aus, um den Schlüssel für die PPA zu akzeptieren, wobei Sie daran denken, den Schlüssel (5BB92C09DB82666C) für die entsprechende PPA zu ändern.

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

Führe sudo apt-get update aus und du bist fertig.

Ref: Hinzufügen von Launchpad-PPAs in Debian Über add-apt-repository Befehl

    
Ajoy 06.04.2017 09:27
quelle
1

Tatsächlich habe ich dieselben Probleme, so habe ich diese Seite gefunden.

  • Umgebungsvariablen http_proxy (Groß- und Kleinschreibung beachten) und https_proxy (was auch immer) etwas tun. Wenn sie nicht gesetzt werden, schlägt die erste Stufe fehl, und die Umgebungsvariablen scheinen etwas zu bewirken. es wird fehlschlagen, wenn Sie sie nicht exportieren

    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.
    

    (der Rest ist erfolgreich - diesmal)

Die Sache ist, manchmal bleibt es einfach hängen und endet mit der üblichen Timeout-Nachricht:         PPA kann nicht hinzugefügt werden: '"Fehler beim Lesen von Pfandrecht : (7,' Verbindung zum Launchpad konnte nicht hergestellt werden. net port 443: Zeitüberschreitung der Verbindung ')' '.

... aber ich betrüge, ich mache das alles als root. Eine einfache Lösung besteht darin, / etc / profile zu bearbeiten oder unter Ubuntu / Mint einfach ein Skript in /etc/profile.d hinzuzufügen:

    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, ja, da ist auch die Sache mit curl (die übrigens von apt-add-repository verwendet wird). Das Handbuch sagt, curlrc in Ihrem Home-Verzeichnis hinzuzufügen. Da das apt-add-Verzeichnis das eigene Root-Verzeichnis ist, bedeutet es, es zu /root/.curlrc hinzuzufügen:

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

Eine gute Idee ist, das Gleiche in Ihrem eigenen ~ / .curlrc

zu tun

Auch das Aktivieren des Proxy in / etc / wgetrc ist eine gute Sache, obwohl es nichts mit der Frage zu tun hat, ich speichere nur eine andere Suche auf Google (wenn Sie dies lesen, haben Sie mehrere mit einem Proxy) ...

    
Marabiloso 04.10.2017 18:31
quelle
1

Dieser vierstufige Ansatz funktionierte für mich auf einer Ubuntu 17.04 VM hinter einem Corporate Proxy.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng und lasse es fehlschlagen
  2. sudo apt update und suche nach einer Fehlermeldung wie 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 funktioniert jetzt

Beachten Sie, dass die Host-VM einen Proxy-Server CNTLM auf Port 3128 ausführt.

    
thegreendroid 14.12.2017 04:28
quelle
0

Führen Sie den folgenden Befehl in Terminal

aus
export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/
    
Deepak Rajput 08.02.2012 08:05
quelle
0

Systemweite Umgebungsvariablen sollten wirklich zu /etc/environment hinzugefügt werden (verwenden Sie sudo oder gksu ), aber der Ihnen gemeldete Fehler scheint zu zeigen, dass keine GPG-Daten gefunden wurden. Ideen:

  • Überprüfen Sie die Proxy-Einstellungen (wenn Sie Zugriff haben)
  • Überprüfen Sie, ob der Proxy irgendwie die Ausgabe von verschlüsseltem Datenverkehr verursacht.
  • Führen Sie einen fortlaufenden netstat aus, um zu sehen, ob die Verbindung zum Proxy tatsächlich hergestellt wird
  • letzter Ausweg wäre tcpdump & amp; in Wireshark inspizieren
  • probiere einen http-Tunnel;)
t0m5k1 29.08.2011 23:04
quelle
0

In /etc/apt/apt.conf.d/01proxy füge etwas wie folgt hinzu

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

Dies wird Proxy alle Aptitude-Downloads, aber ich denke, dies ist die einzige Möglichkeit, dies auf dem Backend zu tun. Wenn Ihr Proxy dies unterstützt, können Sie auch eine URL wie http://my.proxy:port/www.target.site.com/url verwenden, von der ich weiß, dass sie für apt-cache-ng

funktioniert

Ich bin mir nicht sicher, ob add-apt-repository selbst diese Einstellungen verwendet, aber wenn das nicht funktioniert, können Sie das Repository immer zu Ihrem /etc/apt/sources.list oder /etc/apt/sources.list.d/*mytoolchain*

hinzufügen

Seit 11.10 gibt es auch im Haupt-Repo ein Cross-Toolchainable, nur apt-get install gcc-arm-linux-gnueabihf . Es gibt auch cross-toolchains, die von emdebian verfügbar sind, und einige Anweisungen hier: Pfandrecht

    
user72421 27.07.2012 19:08
quelle

Tags und Links