ฉันไม่สามารถเพิ่มที่เก็บ PPA หลังพร็อกซี


14

ฉันพยายามเพิ่มพื้นที่เก็บข้อมูล ppa (เป็น root) ด้วยคำสั่งต่อไปนี้:

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')

น่าเสียดายที่มันไม่ทำงาน ดูเหมือนว่า curl กำลังเชื่อมต่อกับพร็อกซี แต่พร็อกซีแจ้งว่าจำเป็นต้องมีการตรวจสอบสิทธิ์ ฉันได้ลองกับ. urlrc, http_proxy env แทน แต่มันไม่ทำงาน

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\

อาจเป็นเพราะมี @ ลงชื่อเข้าใช้ชื่อผู้ใช้? ทำงานได้กับพร็อกซี่ดี

ที่เกี่ยวข้อง: ฉันจะเพิ่มที่เก็บจากด้านหลังพร็อกซี่ได้อย่างไร

สิ่งแวดล้อม

Ubuntu 12.04

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

คุณสมบัติ curl: GSS- เจรจา IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP

UPDATE

เมื่อเพิ่มข้อมูลประจำตัวใน. curlrc

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

มันดูเหมือนว่าจะทำงานให้กับขดธรรมดา

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

ยัง 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

แต่ก็ยังไม่ทำงานเมื่อเพิ่มใบรับรอง ppa

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

หัวหน้าของ CURL

ส่วนหัวที่ส่ง:

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

ตอบ:

HTTP/1.1 200 Connection established

PyCURL HEADERS

ส่วนหัวที่ส่ง:

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

ตอบ:

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

ดูเหมือนว่า PyCURL จะไม่ส่งการอนุญาตใด ๆ อีกครั้งเมื่อมีการร้องขอ


ขอบคุณฉันได้ลองแล้ว แต่มันก็ไม่ได้ช่วยอะไร เพื่อให้แน่ใจว่าไม่ใช่กรณีนี้ฉันได้รวมข้อมูลประจำตัวของฉันใน. curlrc (โดยไม่ต้องหลบหนี @ ดูเหมือนจะใช้งานได้กับคำสั่ง curl มาตรฐาน) แต่ไม่ใช่สำหรับ pycurl ดูหัวข้อที่อัพเดท
kenorb

ขอบคุณฉันคิดว่าฉันพลาดอะไรบางอย่าง ฉันได้รายงานข้อผิดพลาดที่นี่: bugs.launchpad.net/ubuntu/+source/apt/+bug/1075180
kenorb

คุณตั้ง https_proxy แล้วหรือยัง ดู bug bug.launchpad.net/ubuntu/+source/software-properties/+bug/…
popey

อาจเป็นปัญหาที่เกี่ยวข้องกับเซสชันและสภาพแวดล้อม vars คุณสามารถลองส่งออก http_proxy และ https_proxy ใน / etc / profile จากนั้นรีบูทเครื่อง (ถ้าเป็นไปได้) และลองอีกครั้ง
jap1968

เกี่ยวข้องกับสิ่งที่ jap1968 พูดเหนือฉันฉันต้องแน่ใจว่ามีการตั้งค่าทั้ง http_proxy และ HTTP_PROXY (และ https_proxy และ HTTPS_PROXY) ต้องขอบคุณตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ของ Linux ซึ่งจริงๆแล้วมันเป็นตัวแปรสองตัวที่แตกต่างกันและที่สำคัญที่สุดไม่ใช่ว่าทุกโปรแกรมจะใช้อย่างใดอย่างหนึ่ง ได้รับมันฟังดูเหมือนเป็นปัญหามากขึ้นเกี่ยวกับวิธีการส่งชื่อผู้ใช้ / รหัสผ่าน (เพราะ '@') แต่มันก็คุ้มค่าที่จะยิงต่อไป
YellowApple

คำตอบ:


10

วิธีแก้ปัญหาถ้า apt-getยังคงทำงานอยู่หลังพร็อกซี

  • เพิ่มแหล่งที่มาด้วยตนเอง /etc/apt/sources.list
  • เพิ่มคีย์ gpg

การเพิ่มแหล่งข้อมูลด้วยตนเอง

ฉันคิดว่าใน launchpad.net ทุกคนยังมีคำอธิบายเล็ก ๆ น้อย ๆ เกี่ยวกับการเพิ่มแหล่งข้อมูลด้วยตนเอง เว็บไซต์ Launchpad สำหรับ ppa กล่าวถึงคุณppa:nilarimogard/webupd8เป็นhttps://launchpad.net/~nilarimogard/+archive/webupd8 หากคุณเลื่อนลงคุณจะเห็นป้ายกำกับที่ขยายได้รายละเอียดทางเทคนิคเกี่ยวกับ PPAนี้ หากคุณขยายมันคุณจะพบคำอธิบายวิธีเพิ่มแหล่งข้อมูลด้วยตนเอง เพิ่มบรรทัดต่อไปนี้เพื่อกล่าวถึง/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 

แน่นอนคุณต้องปรับควอนตัมให้เป็นเวอร์ชั่นที่คุณใช้อยู่

การเพิ่มรหัสการเซ็นชื่อ

รายละเอียดนอกจากนี้ยังมีที่สำคัญการลงนาม นี่เป็นสิ่งสำคัญเพื่อให้ระบบของคุณสามารถยืนยันได้ว่าคุณเข้าถึงที่อยู่ที่น่าเชื่อถือ ppa-address ในกรณีที่ ppa ของคุณคือ1024R/4C9D234C(สามารถพบได้ภายใต้รายละเอียดทางเทคนิคเกี่ยวกับ PPA นี้ ) ซึ่งจำนวนที่อยู่เบื้องหลังเครื่องหมายทับมีความสำคัญ คุณสามารถเพิ่มลายนิ้วมือผ่านapt-keyโปรแกรม โดยทั่วไปแล้วคุณจะใช้คำสั่งต่อไปนี้

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

การเพิ่มถ้า apt-keyไม่ทำงานผ่านพร็อกซี

เนื่องจากคุณมีปัญหากับadd-apt-repositoryโปรแกรมนี้อาจไม่ทำงานเช่นกัน ดังนั้นคุณสามารถดาวน์โหลดและเพิ่มคีย์ 1024 บิตได้ด้วยตนเอง หากwgetทำงานคุณสามารถทำได้ในขั้นตอนเดียว

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

มิฉะนั้นจะปลอดภัย " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C " ในเช่น/path/keyและใช้sudo apt-key add /path/keyเพื่อเพิ่ม

ใกล้เคียงกับปกติ

หลังจากนั้นคุณต้องอัปเดตข้อมูลที่เก็บapt-get updateจากนั้นคุณควรจะสามารถดาวน์โหลดแพ็คเกจได้

ทรัพยากร

รายการโปรดส่วนตัวของฉันเกี่ยวกับวิธีการใช้กลไกการบรรจุ (เศร้าในภาษาเยอรมัน): http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA

เวอร์ชันของ launchpad ยังกล่าวถึงประเด็นสำคัญทั้งหมด: https://help.launchpad.net/Packaging/PPA/InstallingSoftware

เนื่องจากการใช้คีย์ apt-key ไม่ถูกวิธีในวิธีที่อธิบายฉันจึงพบข้อมูลใน man pages man apt-keyเท่านั้น

คำตอบที่เกี่ยวข้องที่อธิบายถึงวิธีการมาตรฐานในการติดตั้ง ppa ด้วยตนเอง: /ubuntu//a/38029/128349


@kenorb ไม่ทราบว่าคุณได้รับการแจ้งเตือนหรือไม่ถ้าฉันแก้ไขโพสต์ของฉันดังนั้น: ping: "เป็นไปได้ที่จะแก้ปัญหา"
LeoR

หากปัญหาของคุณคือพอร์ต 11371 ถูกบล็อกในไฟร์วอลล์องค์กรของคุณคุณสามารถใช้พอร์ต 80 แทน: "sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv-keys 4C9D234C "
leszek.hanusz

7

ที่จริงแล้วดูเหมือนจะง่ายกว่าคำตอบที่โพสต์ก่อนหน้านี้ คุณเพียงแค่ต้อง "sudo" เพื่อรู้ว่าคุณอยู่หลังพรอกซีและมันจะทำงานได้อย่างง่ายดาย ในการทำเช่นนี้คุณต้องส่งออกพร็อกซีของคุณhttpและhttpsวิธีการที่คุณทำตามปกติ:

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

แล้วเพิ่มDefaults env_keep="https_proxy"ไปยังจุดสิ้นสุด/etc/sudoersไฟล์ หลังจากนี้คุณควรจะสามารถเพิ่ม ppa โดยใช้คำสั่ง:

sudo add-apt-repository ppa:the_ppa_you_want_to_add

หรือใช้

sudo -E add-apt-repository ppa:the_ppa_you_want_to_add

หากคุณไม่ต้องการแก้ไข/etc/sudoersไฟล์ -Eตัวเลือกการส่งออกตัวแปรสภาพแวดล้อมให้กับผู้ใช้ sudo

ผมได้ให้คำอธิบายรายละเอียดเกี่ยวกับเรื่องนี้ที่นี่บนบล็อกของฉัน


1

ตรวจสอบให้แน่ใจว่าได้ตั้งค่าพร็อกซี aptดังนี้

sudo vi /etc/apt/apt.conf

เพิ่มการตั้งค่าพร็อกซีต่อไปนี้และบันทึกไฟล์

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

นอกเหนือจากการเอ็กซ์พอร์ตต่อไปนี้ในเทอร์มินัลก่อนที่คุณจะรันคำสั่ง

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

สิ่งนี้น่าจะใช้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.