Wie kann ich Add-Apt-Repository über einen Proxy zum Laufen bringen?


119

Ich versuche die Anweisungen unter wiki.linaro.org (auf meiner Ubuntu 10.04 VM) zu befolgen, die unter Ubuntu 10.04 (Lucid) und 10.10 (Maverick) installiert sind . 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, das Problem liegt in meiner Konfiguration für den Proxyserver meines Arbeitgebers, insbesondere für HTTPS.

Beim Öffnen von https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain in Firefox wurde die Meldung angezeigt, dass die Verbindung abgelaufen ist. Ich ging dann zu Firefox-Einstellungen -> Erweitert -> Netzwerk -> Einstellungen ... und stellte HTTP-Proxy auf "Gateway" und Port auf 8080 ein und aktivierte "Diesen Proxyserver für alle Protokolle verwenden". Dann wurde die Seite geladen. Dies unterstützt meine Theorie.

Ich habe versucht, die Umgebungsvariablen http_proxy und https_proxy festzulegen (sowohl in Klein- als auch in Großbuchstaben):

$ 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 das?

Update: Ich habe die Anweisungen in der akzeptierten Antwort auf "Problem beim Hinzufügen von Repositorys und beim Herstellen einer Verbindung vom Terminal hinter einem Proxy" befolgt und bin weitergekommen:

$ 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-Abruffehler" bedeutet, dass ich auch "Defaults env_keep = http_proxy" hinzufügen muss, um /etc/sudoers...

Update Nr. 2: Ich fügte hinzu:

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

... wie in Kommentar 18 für Fehler 516032 , aber ich erhalte immer noch den gleichen Fehler "gpgkeys: HTTP-Abruffehler 7: Verbindung zum Host konnte nicht hergestellt werden".

Und das ist merkwürdig:

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

... weil http_proxy nicht da ist.

Jeder Rat wird geschätzt.

Update Nr. 3: Da der Host meiner VM ein Laptop ist, habe ich ihn mit nach Hause genommen und dort versucht (ohne Proxys):

$ 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 funktionierte. Das Problem hängt also mit der Proxy-Konfiguration zusammen. Aber ich denke, ich habe eine Problemumgehung.


Antworten:


183

Stellen Sie neben der Konfiguration von Proxys sudodie folgenden -EOptionen bereit, um die Umgebung zu schonen:

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>

Sie haben wirklich gearbeitet
Shashwat Kumar

14
-E (nach all den anderen Sachen oben) hat es für mich funktioniert.
cschooley

2
und ja, die https_proxykonfiguration war notwendig ...: P
monkut

1
Wie füge ich einen Proxy dauerhaft hinzu und vermeide -E Switch? Ich habe die / etc / environment-Datei richtig konfiguriert und die Zeilen hinzugefügt ... Danke
Enrique

1
Von man sudo: -E, --preserve-envGibt die Sicherheitsrichtlinie an, dass der Benutzer seine vorhandenen Umgebungsvariablen beibehalten möchte. Die Sicherheitsrichtlinie gibt möglicherweise einen Fehler zurück, wenn der Benutzer keine Berechtigung zum Schützen der Umgebung
hat.m

39

Verwenden Sie den folgenden Code in einem Terminal, um den GPG-Schlüssel hinter dem 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 verwenden (dh Benutzername und Kennwort), verwenden Sie http-proxy=http://PROXY_URL:PORT/stattdessen.

Zum Beispiel zu haben GPG_KEY=C2514567EEA14886, 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

3
Dies "repariert" die Ausführung des Befehls "add-apt-repository" nicht. In der Tat arbeitet es um eine seiner Aufgaben. Mindestens ein zusätzlicher Befehl ist erforderlich: sudoedit /etc/apt/sources.list.d/XXXX.list + manual edition, um die deb-URLs hinzuzufügen ...
Chucky

Wäre perfekt, wenn Sie einige Informationen hinzufügen, wie der Proxy für immer repariert werden kann. Die von Ihnen bereitgestellte Lösung erfordert eine
Menge

9

Endlich! Sie müssen https_proxy einstellen über:

export https_proxy=....

Nur gesetztes http_proxy reicht nicht aus.

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

Code:

sudo su
add-apt-repository ppa:........

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 folgendermaßen gelöst habe: Der Unternehmens-Proxy lässt aus Sicherheitsgründen nur die Ports 80 und 443 zu. Wenn das HKP-Protokoll also Port 11371 verwendet, werden Sie nicht durchgelassen.

Wenn Sie also keinen SSH-Code mehr haben und den Schlüssel nicht von einem Ihrer Server außerhalb herunterladen und lokal installieren möchten, können Sie den Schlüsselserver unter einem der unten aufgeführten angeben und den Port angeben:

http://sks-keyservers.net/overview-of-pools.php

z.B:

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

Boom, Voila!


Jep. Dies funktionierte für mich während der Installation von Mono unter Debian 7:sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
ken

3

Der Grund, warum Ihre sudoersÄnderung nicht wie erwartet funktioniert hat, ist folgender:

    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 der Abstand zwischen Defaultsund env_keepjedes Mal ein Tabulator ist.


3

Ich habe es geschafft, dies durch Bearbeiten /usr/lib/python3/dist-packages/softwareproperties/ppa.pyund Hinzufügen zu umgehen

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

unter der folgenden Zeile

"--keyserver", self.keyserver,

Weitere Hintergrundinformationen

ppa.pyist das Python-Skript, mit add-apt-repositorydem gpg aufgerufen wird. Manchmal scheint es einen Fehler mit gpg zu geben, bei dem die Umgebungsvariable http_proxy nicht verwendet wird. Dies kann bestätigt werden, indem die Datei /root/.gnupg/dirmngr.confangezeigt und überprüft wird, ob sie honor-http-proxynicht auskommentiert ist.


3

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

  1. sudo apt-add-repository ppa:brightbox/ruby-ng und lass es scheitern
  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 wird jetzt funktionieren

Beachten Sie, dass auf der Host-VM ein CNTLMProxyserver an Port 3128 ausgeführt wird.


1
Sie müssen nicht warten, bis apt Ihnen sagt, was der Schlüssel ist. Es ist dort in den technischen Details des PPA : "Fingerprint: 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6"
muru

Das stimmt, aber ich fand diesen Prozess etwas einfacher.
thegreendroid

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 vermute, dass es einige Umgebungsvariablen gibt, die im Befehl nicht benötigt werden, die aber nicht schaden.


1

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

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

Speichern Sie die Datei und führen Sie sie aus sudo apt-get update. 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, und denken Sie daran, den Schlüssel (5BB92C09DB82666C) für die entsprechende PPA zu ändern.

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

Lauf sudo apt-get updateund du bist fertig.

Ref: So fügen Sie Launchpad-PPAs in Debian über den add-apt-repositoryBefehl hinzu


1

Eigentlich stoße ich auf die gleichen Probleme, so habe ich diese Seite gefunden.

  • Umgebungsvariablen http_proxy (Groß- und Kleinschreibung beachten) und https_proxy (in jedem Fall) tun etwas. Wenn Sie sie nicht festlegen, schlägt dies in der ersten Phase fehl. Das Festlegen der Umgebungsvariablen scheint jedoch eine gewisse Auswirkung zu haben. es schlägt fehl, 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, dass sie manchmal einfach hängen bleibt und mit der üblichen Zeitüberschreitungsmeldung endet: PPA kann nicht hinzugefügt werden: '"Fehler beim Lesen von https://launchpad.net/api/1.0/~webupd8team/+archive/java : (7,' Verbindung zum launchpad.net-Port 443 fehlgeschlagen: Zeitüberschreitung bei 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, es gibt auch das, was Curl ausmacht (das übrigens von apt-add-repository verwendet wird). Das Handbuch fordert Sie auf, .curlrc in Ihr Home-Verzeichnis aufzunehmen. Da das apt-add-Verzeichnis dem root-Verzeichnis angehört, müssen Sie es zu /root/.curlrc hinzufügen:

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

Eine gute Idee ist, dasselbe in Ihrem eigenen ~ / .curlrc zu tun

Außerdem ist es eine gute Sache, den Proxy in / etc / wgetrc zu aktivieren, obwohl dies nichts mit der gestellten Frage zu tun hat. Ich speichere Ihnen nur eine weitere Suche bei Google (wenn Sie dies lesen, haben Sie mehrere mit einem Proxy ) ...


1

Dazu kommt so /etc/apt/apt.conf.d/01proxyetwas

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

Dies wird alle Aptitude-Downloads als Proxy speichern, aber ich denke, dies ist die einzige Möglichkeit, dies im Backend zu tun. Wenn Ihr Proxy dies unterstützt, können Sie auch eine URL verwenden, von http://my.proxy:port/www.target.site.com/urlder ich weiß, dass sie funktioniertapt-cache-ng

Ich bin nicht sicher, ob add-apt-repository diese Einstellungen verwendet, aber wenn Sie dies nicht tun können, können Sie das Repository jederzeit zu Ihrem /etc/apt/sources.listoder hinzufügen/etc/apt/sources.list.d/*mytoolchain*

Seit 11.10 gibt es im Hauptrepo auch ein Cross-Toolchailable, eben apt-get install gcc-arm-linux-gnueabihf. Es gibt auch Cross-Toolchains von Emdebian und einige Anweisungen hier: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/


user72421: woher wusstest du, dass dem proxy 01 und nicht eine andere nummer vorangestellt werden soll?
jgomo3

Funktioniert nicht mit apt-get & keyserver
Vik


0

Führen Sie den folgenden Befehl im Terminal aus

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/

0

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

  • Überprüfen Sie die Proxy-Einstellungen (wenn Sie Zugriff haben)
  • Überprüfen Sie, ob der Proxy die Ausgabe von verschlüsseltem Datenverkehr beeinträchtigt.
  • Führen Sie eine fortlaufende netstat aus, um festzustellen, ob tatsächlich eine Verbindung zum Proxy hergestellt wird
  • Das letzte Mittel wäre, tcpdump & inspect in wireshark durchzuführen
  • versuche einen http tunnel;)

0

Eine andere Lösung ist, eine APT- proxy.confDatei hinzuzufügen ,/etc/apt/apt.conf.d/proxy.conf

Acquire::http::Proxy "http://your.proxy.server.here.com:port/";
Acquire::https::Proxy "http://your.proxy.server.here.com:port/";
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.