Proxy'nin arkasına PPA deposunu ekleyemiyorum


14

Aşağıdaki komutla (kök olarak) ppa deposunu eklemeye çalışıyorum:

export HTTP_PROXY="http://firstname.surname@xxx.com:my_pass@165.x.x.232: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')

Ne yazık ki işe yaramıyor. Kıvrılma proxy'ye bağlanıyor gibi görünüyor, ancak proxy Kimlik Doğrulama Gerekli olduğunu söylüyor. Bunun yerine .curlrc, http_proxy env ile denedim, ama çalışmıyor.

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\

Belki de kullanıcı adında @ işareti olduğu için? Wget proxy para cezası ile çalışır.

İlgili: Proxy'nin arkasından bir havuzu nasıl eklerim?

çevre

Ubuntu 12.04

kıvrım 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

kıvırmak Özellikler: GSS-Anlaşma IDN IPv6 Büyük Dosya NTLM NTLM_WB SSL libz TLS-SRP

GÜNCELLEME

.Curlrc dosyasına kimlik bilgileri eklendiğinde

cat ~/.curlrc 
proxy = 165.x.x.232:8080
proxy-user = name.surname@xxx.com:mypass0

Düz kıvırmak için çalışıyor gibi görünüyor .

curl www.google.com | head

* Proxy auth using Basic with user 'name.surname@xxx.com'
GET HTTP://www.google.com HTTP/1.1
Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
HTTP/1.1 302 Found

Ayrıca HTTPS:

curl -v https://www.google.com | head
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user 'name.surname@xxx.com'
> 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

Ancak ppa sertifikası eklenirken hala çalışmıyor.

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

CURL BAŞLIKLARI

Gönderilen başlıklar:

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

Cevap:

HTTP/1.1 200 Connection established

PyCURL BAŞLIKLARI

Gönderilen başlıklar:

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

Cevap:

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

PyCURL istendiğinde herhangi bir Yetkilendirme göndermiyor gibi görünüyor.


Teşekkürler, denedim ama bu yardımcı olmuyor. Durumun böyle olmadığından emin olmak için, kimlik bilgilerimi .curlrc içine ekledim (@ 'den kaçmadan standart curl komutu için çalışıyor gibi görünüyor), ancak pycurl için değil. Güncellenmiş bölüme bakın.
kenorb

Teşekkürler, bir şeyleri özlediğimi düşündüm. Hatayı
kenorb

Ayrıca https_proxy ayarladınız mı? Hata Bkz bugs.launchpad.net/ubuntu/+source/software-properties/+bug/...
Popey

Belki oturumlar ve ortam değişkenleri ile ilgili bir sorundur. Http:proxy ve https_proxy dosyasını / etc / profile dışa aktarmayı deneyebilir, ardından makineyi yeniden başlatabilir (mümkünse) ve tekrar deneyebilirsiniz.
jap1968

Üzerimde söylediğini jap1968 şeyle ilgili, emin hem http_proxy o yapmıştı ve http_proxy ayarlanır (ve https_proxy ve https_proxy). Linux'un büyük / küçük harfe duyarlılığı sayesinde, bunlar aslında iki farklı değişkendir - ve en iyisi, tüm programlar birini veya diğerini kullanmaz. Kabul edildiğinde, daha çok kullanıcı adı / şifre kombinasyonunun nasıl gönderildiği ile ilgili bir soruna benziyor ('@' nedeniyle), ancak yine de denemeye değer.
YellowApple

Yanıtlar:


10

apt-getHala proxy'nin arkasında çalışıyorsa geçici çözüm

  • kaynakları manuel olarak ekle /etc/apt/sources.list
  • gpg anahtarı ekle

Kaynakları manuel olarak ekleme

Ben launchpad.net her ppa hala elle kaynak eklemek için küçük bir açıklama içeriyor düşünüyorum. Senin belirtilen ppa için launchpad sitesi ppa:nilarimogard/webupd8olan https://launchpad.net/~nilarimogard/+archive/webupd8 . Aşağı kaydırırsanız, bu PPA hakkında Genişletilebilir bir etiket Teknik ayrıntılar görürsünüz . Genişletirseniz, kaynakların manuel olarak nasıl ekleneceği açıklamasını bulabilirsiniz. Belirtilen satırlara aşağıdaki satırları ekleyin/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 

Tabii ki quantal'ı şu anda kullandığınız sürüme göre ayarlamanız gerekir.

İmzalama Anahtarını Ekleme

Açıklama ayrıca bir imzalama anahtarı içerir . Sisteminizin her zaman güvenilir bir ppa adresine eriştiğinizi doğrulayabilmesi için bu önemlidir. Bölgenizdeki sayının önemli olduğu ( bu PPA ile ilgili Teknik detaylar1024R/4C9D234C altında da bulunabilir ). Parmak izini program aracılığıyla ekleyebilirsiniz . Genellikle aşağıdaki komutu yerine getirirsinizapt-key

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

apt-keyProxy üzerinden çalışmazsa ekleme

add-apt-repositoryProgramla ilgili sorunlar yaşadığınız için bu da çalışmayabilir. Bunun yerine 1024 Bit anahtarını manuel olarak indirip ekleyebilirsiniz. Çalışırsa wget, bunu tek adımda yapabilirsiniz.

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

Aksi takdirde, güvenli bir şekilde " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C " girin /path/keyve sudo apt-key add /path/keyeklemek için kullanın .

Her zamanki ile yakın

Daha sonra depo bilgilerini güncellemeniz apt-get updateve paketleri indirebilmeniz gerekir.

kaynaklar

Ambalaj mekanizmasının nasıl kullanılacağına dair kişisel favorim (ne yazık ki Almanca): http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA

Launchpad sürümünde tüm önemli noktalardan bahsediliyor: https://help.launchpad.net/Packaging/PPA/InstallingSoftware

Apt anahtarını tarif edilen şekilde kullanmanın normal olmadığı için, bilgiyi sadece man sayfalarında buldum man apt-key.

Ppa'ları manuel olarak kurmanın standart yolunu hemen hemen açıklayan ilgili cevap: /ubuntu//a/38029/128349


@kenorb Mesajımı düzenlersem bir bildirim alıp alamayacağınızı bilmiyorum, bu yüzden: ping: "olası geçici çözüm"
LeoR

Sorununuz şirket güvenlik duvarınızda 11371 numaralı bağlantı noktasının engellenmiş olması durumunda, bunun yerine 80 numaralı bağlantı noktasını kullanabilirsiniz: "sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys 4C9D234C "
leszek.hanusz

7

Aslında daha önce yayınlanan cevaptan çok daha kolay görünüyor. Sadece bir proxy arkasında olduğunu bilmek için "sudo" gerekir ve zahmetsizce çalışacaktır. Bunu yapmak için, proxy'nizi httpve httpsgenellikle yaptığınız şekilde dışa aktarmanız gerekir :

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

ve sonra dosyanın Defaults env_keep="https_proxy"sonuna ekleyin /etc/sudoers. Bundan sonra şu komutu kullanarak ppa ekleyebilmeniz gerekir:

sudo add-apt-repository ppa:the_ppa_you_want_to_add

ya da kullan

sudo -E add-apt-repository ppa:the_ppa_you_want_to_add

/etc/sudoersdosyayı değiştirmek istemiyorsanız . Bu -Eseçenek ortam değişkenlerini sudo kullanıcısına verir.

Burada blogumda bununla ilgili ayrıntılı bir açıklama yaptım .


1

Apt proxy'nin aşağıdaki gibi ayarlandığından emin olun

sudo vi /etc/apt/apt.conf

aşağıdaki proxy ayarlarını ekleyin ve dosyayı kaydedin

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

ek olarak komutu çalıştırmadan önce Terminal'de dışa aktarma

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

Bu çalışmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.