Ich kann kein PPA-Repository hinter dem Proxy hinzufügen

14

Ich versuche, das ppa-Repository (als Root) mit dem folgenden Befehl hinzuzufügen:

export HTTP_PROXY="http://[email protected]:[email protected]:8080"
add-apt-repository ppa:nilarimogard/webupd8


Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 125, in <module>
    ppa_info = get_ppa_info_from_lp(user, ppa_name)
  File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 84, in get_ppa_info_from_lp
    curl.perform()
pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')

Leider klappt es nicht. Anscheinend stellt curl eine Verbindung zum Proxy her, der Proxy meldet jedoch, dass eine Authentifizierung erforderlich ist. Ich habe es stattdessen mit .curlrc und http_proxy env versucht, aber es funktioniert nicht.

strace -e network,write -s1000 add-apt-repository ppa:nilarimogard/webupd8
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, [16]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(46025), sin_addr=inet_addr("161.20.75.220")}, [16]) = 0
sendto(4, "CONNECT launchpad.net:443 HTTP/1.1\r\nHost: launchpad.net:443\r\nUser-Agent: PycURL/7.22.0\r\nProxy-Connection: Keep-Alive\r\nAccept: application/json\r\n\r\n", 146, MSG_NOSIGNAL, NULL, 0) = 146
recvfrom(4, "HTTP/1.1 407 Proxy Authentication Required\r\nProxy-Authenticate: BASIC realm=\"proxy\"\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=utf-8\r\nProxy-Connection: close\r\nSet-Cookie: BCSI-CS-91b9906520151dad=2; Path=/\r\nConnection: close\

Vielleicht liegt es daran, dass der Benutzername ein @ -Zeichen enthält? Wget funktioniert mit Proxy gut.

Verwandte Themen: Wie füge ich ein Repository hinter einem Proxy hinzu?

Umgebung

Ubuntu 12.04

locken 7.22.0 (x86_64-pc-linux-gnu) libcurl / 7.22.0 OpenSSL / 1.0.1 zlib / 1.2.3.4 libidn / 1.23 librtmp / 2.3

Curl-Funktionen: GSS-Negotiate-IDN-IPv6-Largefile-NTLM-NTLM_WB-SSL-libz-TLS-SRP

AKTUALISIEREN

Wenn Anmeldeinformationen in .curlrc hinzugefügt wurden

cat ~/.curlrc 
proxy = 165.x.x.232:8080
proxy-user = [email protected]:mypass0

Es scheint für die einfache Locke zu arbeiten .

curl www.google.com | head

* Proxy auth using Basic with user '[email protected]'
GET HTTP://www.google.com HTTP/1.1
Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
HTTP/1.1 302 Found

Auch HTTPS:

curl -v https://www.google.com | head
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user '[email protected]'
> CONNECT www.google.com:443 HTTP/1.1
> Host: www.google.com:443
> Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
    > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1     zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Proxy-Connection: Keep-Alive
< HTTP/1.1 200 Connection established
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations

Funktioniert aber immer noch nicht, wenn ein ppa-Zertifikat hinzugefügt wird.

pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')

CURL HEADERS

Überschriften gesendet:

CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
Proxy-Authorization: Basic cGVvcGxlcmVhbGx5c2hvdWxkQHNhbml0aXplcG9zdHM=
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Proxy-Connection: Keep-Alive

Antworten:

HTTP/1.1 200 Connection established

PyCURL HEADERS

Überschriften gesendet:

CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
User-Agent: PycURL/7.22.0
Proxy-Connection: Keep-Alive
Accept: application/json

Antworten:

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: BASIC realm="proxy"

Es scheint, dass PyCURL auf Anfrage keine Autorisierung erneut sendet.

Kenorb
quelle
Danke, ich habe es versucht, aber das hilft nicht. Um sicherzustellen, dass dies nicht der Fall ist, habe ich meine Anmeldeinformationen in .curlrc aufgenommen (ohne dass @ für den Standardcurl-Befehl funktioniert), aber nicht für Pycurl. Siehe den aktualisierten Abschnitt.
Kenorb
Danke, ich dachte, ich hätte etwas verpasst. Ich habe den Fehler hier gemeldet: bugs.launchpad.net/ubuntu/+source/apt/+bug/1075180
kenorb
Haben Sie auch https_proxy eingestellt? Siehe bug bugs.launchpad.net/ubuntu/+source/software-properties/+bug/…
popey
Möglicherweise handelt es sich um ein Problem im Zusammenhang mit Sitzungen und Umgebungsvariablen. Sie können versuchen, http_proxy und https_proxy in / etc / profile zu exportieren, dann den Computer neu starten (falls möglich) und es erneut versuchen.
jap1968
In Bezug auf das, was jap1968 über mir sagt, habe ich sichergestellt, dass sowohl http_proxy als auch HTTP_PROXY festgelegt sind (und https_proxy und HTTPS_PROXY). Aufgrund der Groß- und Kleinschreibung von Linux handelt es sich hierbei eigentlich um zwei verschiedene Variablen - und das Beste ist, dass nicht alle Programme die eine oder die andere verwenden. Zugegeben, es klingt eher nach einem Problem, wie die Kombination aus Benutzername und Passwort gesendet wird (wegen '@'), aber es ist trotzdem einen Versuch wert.
YellowApple

Antworten:

10

Problemumgehung, wenn apt-getimmer noch hinter dem Proxy funktioniert

  • Manuelles Hinzufügen von Quellen zu /etc/apt/sources.list
  • gpg key hinzufügen

Manuelles Hinzufügen von Quellen

Ich denke auf launchpad.net enthält jedes ppa noch eine kleine Beschreibung, wie man Quellen manuell hinzufügt. Die Launchpad-Site für Ihr erwähntes ppa ppa:nilarimogard/webupd8lautet https://launchpad.net/~nilarimogard/+archive/webupd8 . Wenn Sie nach unten scrollen, sehen Sie ein erweiterbares Etikett. Technische Details zu dieser PPA . Wenn Sie es erweitern, finden Sie die Beschreibung zum manuellen Hinzufügen von Quellen. Fügen Sie die folgenden Zeilen hinzu/etc/apt/sources.list

deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main 
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main 

Natürlich müssen Sie quantal an die Version anpassen, die Sie gerade verwenden.

Hinzufügen des Signaturschlüssels

Die Beschreibung enthält auch einen Signaturschlüssel . Dies ist wichtig, damit Ihr System immer überprüfen kann, ob Sie tatsächlich auf eine vertrauenswürdige ppa-Adresse zugreifen. Im Falle Ihres PPA ist das 1024R/4C9D234C( siehe auch Technische Details zu diesem PPA ), wo die Zahl hinter dem Schrägstrich wichtig ist. Sie können den Fingerabdruck über das apt-keyProgramm hinzufügen . Normalerweise führen Sie den folgenden Befehl aus

 sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4C9D234C

Hinzufügen, wenn apt-keynicht über Proxy funktioniert

Da Sie bereits Probleme mit dem add-apt-repositoryProgramm hatten, funktioniert dies möglicherweise auch nicht. Stattdessen können Sie den 1024-Bit-Schlüssel manuell herunterladen und hinzufügen. Wenn es wgetfunktioniert, können Sie das in einem Schritt tun.

wget "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C" -O out && sudo apt-key add out && rm out

Ansonsten sicher " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C " in z. B. /path/keyund sudo apt-key add /path/keyzum Hinzufügen verwenden.

Mit dem Üblichen schließen

Danach müssen Sie die Repository-Informationen aktualisieren apt-get updateund sollten dann in der Lage sein, die Pakete herunterzuladen.

Ressourcen

Mein persönlicher Favorit zum Umgang mit dem Verpackungsmechanismus: http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA

Die Launchpad-Version erwähnt auch alle wichtigen Punkte: https://help.launchpad.net/Packaging/PPA/InstallingSoftware

Da es untypisch ist, apt-key wie beschrieben zu verwenden, habe ich nur die Informationen in den Manpages gefunden man apt-key.

Zugehörige Antwort, die ziemlich genau die Standardmethode für die manuelle Installation von ppa beschreibt: /ubuntu//a/38029/128349

LeoR
quelle
@kenorb weiß nicht, ob Sie eine Benachrichtigung erhalten, wenn ich meinen Beitrag bearbeite.
Also
Wenn Ihr Problem darin besteht, dass der Port 11371 in Ihrer Unternehmens-Firewall blockiert ist, können Sie jetzt stattdessen den Port 80 verwenden: "sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys 4C9D234C "
leszek.hanusz
7

Tatsächlich scheint es viel einfacher zu sein als die zuvor veröffentlichte Antwort. Sie brauchen nur "sudo", um zu wissen, dass Sie sich hinter einem Proxy befinden und es wird mühelos funktionieren. Dazu müssen Sie Ihren Proxy für httpund httpswie gewohnt exportieren :

export http_proxy=http://username:password@host:port/
export https_proxy=https://username:password@host:port/

und dann Defaults env_keep="https_proxy"zum Ende der /etc/sudoersDatei hinzufügen . Danach sollten Sie in der Lage sein, das ppa mit dem folgenden Befehl hinzuzufügen:

sudo add-apt-repository ppa:the_ppa_you_want_to_add

oder verwenden

sudo -E add-apt-repository ppa:the_ppa_you_want_to_add

Wenn Sie die /etc/sudoersDatei nicht ändern möchten . Die -EOption exportiert Umgebungsvariablen an den sudo-Benutzer.

Eine ausführliche Beschreibung dazu habe ich hier in meinem Blog gegeben .

Job in
quelle
1

Stellen Sie sicher, dass der apt-Proxy wie folgt eingestellt ist

sudo vi /etc/apt/apt.conf

Fügen Sie die folgenden Proxy-Einstellungen hinzu und speichern Sie die Datei

Acquire::http::proxy "http ://proxy.company.com:port/";
Acquire::https::proxy "https ://proxy.company.com:port/";
Acquire::ftp::proxy "ftp://proxy.company.com:port/";

Exportieren Sie außerdem Folgendes in Terminal, bevor Sie den Befehl ausführen

export http_proxy=http ://proxy.company.com:port/
export https_proxy=https ://proxy.company.com:port/

Das sollte funktionieren.

Manjula
quelle