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.
Antworten:
Problemumgehung, wenn
apt-get
immer noch hinter dem Proxy funktioniert/etc/apt/sources.list
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/webupd8
lautet 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
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 dasapt-key
Programm hinzufügen . Normalerweise führen Sie den folgenden Befehl ausHinzufügen, wenn
apt-key
nicht über Proxy funktioniertDa Sie bereits Probleme mit dem
add-apt-repository
Programm hatten, funktioniert dies möglicherweise auch nicht. Stattdessen können Sie den 1024-Bit-Schlüssel manuell herunterladen und hinzufügen. Wenn eswget
funktioniert, können Sie das in einem Schritt tun.Ansonsten sicher " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C " in z. B.
/path/key
undsudo apt-key add /path/key
zum Hinzufügen verwenden.Mit dem Üblichen schließen
Danach müssen Sie die Repository-Informationen aktualisieren
apt-get update
und 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
quelle
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
http
undhttps
wie gewohnt exportieren :und dann
Defaults env_keep="https_proxy"
zum Ende der/etc/sudoers
Datei 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
Wenn Sie die
/etc/sudoers
Datei nicht ändern möchten . Die-E
Option exportiert Umgebungsvariablen an den sudo-Benutzer.Eine ausführliche Beschreibung dazu habe ich hier in meinem Blog gegeben .
quelle
Stellen Sie sicher, dass der apt-Proxy wie folgt eingestellt ist
Fügen Sie die folgenden Proxy-Einstellungen hinzu und speichern Sie die Datei
Exportieren Sie außerdem Folgendes in Terminal, bevor Sie den Befehl ausführen
Das sollte funktionieren.
quelle