ฉันจะรับ add-apt-repository เพื่อทำงานผ่านพร็อกซีได้อย่างไร


119

ฉันกำลังพยายามทำตามคำแนะนำ"การติดตั้ง Cross Toolchain บน Ubuntu 10.04 (Lucid) และ 10.10 (Maverick) โฮสต์" คำแนะนำใน wiki.linaro.org (บน Ubuntu 10.04 VM ของฉัน) ขั้นตอนแรกคือ:

sudo add-apt-repository ppa:linaro-maintainers/toolchain

แต่เมื่อฉันเรียกใช้ที่ฉันได้รับ:

Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>

ฉันเดาว่าปัญหาคือการกำหนดค่าของฉันสำหรับพร็อกซีเซิร์ฟเวอร์ของนายจ้างโดยเฉพาะ HTTPS

เมื่อฉันเปิดhttps://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchainใน Firefox ฉันได้รับ "การเชื่อมต่อหมดเวลา" ฉันไปที่การตั้งค่า Firefox -> ขั้นสูง -> เครือข่าย -> การตั้งค่า ... และตั้งค่า HTTP Proxy เป็น "เกตเวย์" และพอร์ตเป็น 8080 และเลือก "ใช้พร็อกซีเซิร์ฟเวอร์นี้สำหรับโปรโตคอลทั้งหมด" จากนั้นโหลดหน้าเว็บ สิ่งนี้สนับสนุนทฤษฎีของฉัน

ฉันได้ลองตั้งค่าตัวแปรสภาพแวดล้อม http_proxy และ https_proxy (ทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่):

$ set | grep -i proxy
HTTPS_PROXY=https://gateway:8080
HTTP_PROXY=http://gateway:8080
http_proxy=http://gateway:8080
https_proxy=https://gateway:8080

ฉันได้ลองเปลี่ยนเป็น:

$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_proxy=gateway:8080

และฉันพยายามเพิ่มบรรทัดที่สองนี้ใน /etc/apt/apt.conf:

Acquire::http::proxy "http://gateway:8080/";
Acquire::https::proxy "https://gateway:8080/";

แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน

ฉันจะแก้ไขปัญหานี้ได้อย่างไร

อัปเดต:ฉันทำตามคำแนะนำในคำตอบที่ยอมรับไปที่"ปัญหาในการเพิ่มที่เก็บและการเชื่อมต่อจากเทอร์มินัลหลังพร็อกซี"และได้รับเพิ่มเติม:

$ 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

ฉันสงสัยว่า "ข้อผิดพลาดการดึงข้อมูล HTTP" หมายความว่าฉันต้องเพิ่ม "ค่าเริ่มต้น env_keep = http_proxy" ใน/etc/sudoers...

อัปเดต # 2:ฉันเพิ่ม:

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

... เช่นเดียวกับในความคิดเห็น 18 สำหรับข้อผิดพลาด 516032แต่ฉันยังคงได้รับข้อผิดพลาด "gpgkeys: HTTP ดึงข้อผิดพลาดที่ 7: ไม่สามารถเชื่อมต่อกับโฮสต์"

และนี่คือสิ่งที่อยากรู้:

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

... เนื่องจาก http_proxy ไม่อยู่ที่นั่น

คำแนะนำใด ๆ ที่ชื่นชม

อัปเดต # 3:เนื่องจากโฮสต์ของ VM ของฉันเป็นแล็ปท็อปฉันจึงนำมันกลับบ้านและลองใช้ที่นั่น (โดยไม่ต้องใช้ผู้รับมอบฉันทะ):

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

มันได้ผล ดังนั้นปัญหาเกี่ยวข้องกับการกำหนดค่าพร็อกซี แต่ฉันคิดว่าฉันมีวิธีแก้ปัญหา


เพียงสำหรับการอ้างอิง askubuntu.com/questions/60217/…
Deepak Rajput

คำตอบ:


183

นอกเหนือจากการกำหนดค่าพร็อกซีบอกsudoให้รักษาสภาพแวดล้อมด้วย-Eตัวเลือก:

export http_proxy=http://<proxy>:<port>
export https_proxy=http://<proxy>:<port>
sudo -E add-apt-repository ppa:linaro-maintainers/toolchain

ด้วยชื่อผู้ใช้และรหัสผ่าน:

export https_proxy=https://<username>:<password>@<proxy>:<port>

ยาใช้งานได้จริง
Shashwat Kumar

14
-E (หลังจากทำสิ่งอื่น ๆ ทั้งหมดข้างต้น) ทำให้ฉันทำงานได้
cschooley

2
และใช่https_proxyจำเป็นต้องมีการกำหนดค่า ... : P
monkut

1
วิธีเพิ่มพร็อกซีอย่างถาวรและหลีกเลี่ยงการสลับ -E ฉันได้ไฟล์ / etc / environment ได้รับการกำหนดค่าอย่างเหมาะสมโดยเพิ่มบรรทัด ... ขอบคุณ
Enrique

1
จากman sudo: -E, --preserve-envระบุถึงนโยบายความปลอดภัยที่ผู้ใช้ต้องการเก็บรักษาตัวแปรสภาพแวดล้อมที่มีอยู่ นโยบายความปลอดภัยอาจส่งคืนข้อผิดพลาดหากผู้ใช้ไม่ได้รับอนุญาตให้รักษาสภาพแวดล้อม
Pablo A

39

ใช้รหัสต่อไปนี้ในเทอร์มินัลเพื่อเพิ่มคีย์ gpg หลังพร็อกซี

sudo apt-key adv --keyserver-options http-proxy=http://USER:PASSWORD@PROXY_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

และแทนที่ตัวอักษรตัวพิมพ์ใหญ่ตามลำดับ หากคุณใช้พรอกซีโดยไม่มีการตรวจสอบผู้ใช้ (เช่นชื่อผู้ใช้และรหัสผ่าน) ให้ใช้http-proxy=http://PROXY_URL:PORT/แทน

ตัวอย่างเช่นGPG_KEY=C2514567EEA14886คุณสามารถใช้

sudo apt-key adv --keyserver-options http-proxy=http://user:abc123@10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

ที่ไหน

USER_ID=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

หากคุณไม่มีการตรวจสอบผู้ใช้เพียงแค่ใช้

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

3
นี่ไม่ใช่การดำเนินการคำสั่ง add-apt-repository จริง ๆ อันที่จริงมันทำงานรอบหนึ่งในงานของมัน จำเป็นต้องมีคำสั่งเพิ่มเติมอย่างน้อยหนึ่งรายการ: sudoedit /etc/apt/sources.list.d/XXXX.list + รุ่นคู่มือเพื่อเพิ่ม URL deb ...
Chucky

จะสมบูรณ์แบบถ้าคุณเพิ่มข้อมูลวิธีแก้ไขพร็อกซีชั่วนิรันดร์ โซลูชันที่คุณระบุต้องการการพิมพ์จำนวนมาก
Danatela

9

ที่สุด! คุณต้องตั้งค่า https_proxy ผ่าน:

export https_proxy=....

http_proxy เท่านั้นที่ตั้งค่าไม่เพียงพอ

และฉันต้องการเรียกใช้งานคำสั่ง add-apt-repository เป็น root ไม่ใช่ผ่าน sudo

รหัส:

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

6

ดูเหมือนว่าการกำหนดค่าพร็อกซีถูกตั้งค่า แต่อย่างใดไม่สามารถติดต่อเซิร์ฟเวอร์ ...

ฉันมีปัญหาที่คล้ายกันมากซึ่งฉันแก้ไขเช่นนี้: พร็อกซีขององค์กรอนุญาตเฉพาะพอร์ต 80 และ 443 เพื่อเหตุผลด้านความปลอดภัยดังนั้นเหตุการณ์เมื่อมีการตั้งค่าเนื่องจากโปรโตคอล HKP ใช้พอร์ต 11371 จะไม่ทำให้คุณผ่าน

ดังนั้นขาด SSH-out และรับคีย์จากหนึ่งในเซิร์ฟเวอร์ของคุณภายนอกดาวน์โหลดและติดตั้งภายในเครื่องคุณสามารถระบุเซิร์ฟเวอร์หลักจากด้านล่างและระบุพอร์ต:

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

เช่น:

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

บูม Voila!


ได้. สิ่งนี้ใช้ได้ผลสำหรับฉันในขณะติดตั้ง Mono บน Debian 7:sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
ken

3

สาเหตุที่sudoersการเปลี่ยนแปลงของคุณไม่ทำงานตามที่คาดไว้คือแทนที่จะ:

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

คุณควรจะเขียน:

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

ตรวจสอบให้แน่ใจช่องว่างระหว่างDefaultsและenv_keepเป็นแท็บในแต่ละครั้ง


3

ฉันจัดการเพื่อแก้ไขปัญหานี้โดยการแก้ไข/usr/lib/python3/dist-packages/softwareproperties/ppa.pyและเพิ่ม

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

ภายใต้บรรทัดต่อไปนี้

"--keyserver", self.keyserver,

ข้อมูลพื้นฐานเพิ่มเติม

ppa.pyเป็นสคริปต์ไพ ธ อนที่ใช้add-apt-repositoryเรียก gpg บางครั้งดูเหมือนว่ามีข้อผิดพลาดกับ gpg ซึ่งไม่ได้ใช้ตัวแปรสภาพแวดล้อม http_proxy สิ่งนี้สามารถยืนยันได้โดยการดูไฟล์/root/.gnupg/dirmngr.confและตรวจสอบเพื่อดูว่าไม่ได้honor-http-proxyมีความคิดเห็น


3

วิธีสี่ขั้นตอนนี้ใช้ได้กับฉันบน Ubuntu 17.04 VM ที่อยู่เบื้องหลังพร็อกซีขององค์กร

  1. sudo apt-add-repository ppa:brightbox/ruby-ng และปล่อยให้มันล้มเหลว
  2. sudo apt update และค้นหาข้อความแสดงข้อผิดพลาดเช่น 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 ตอนนี้จะทำงาน

โปรดทราบว่าโฮสต์ VM กำลังเรียกใช้พรCNTLMอกซีเซิร์ฟเวอร์บนพอร์ต 3128


1
คุณไม่ต้องรอให้ฉลาดบอกคุณว่าสำคัญคืออะไร It '; มีรายละเอียดทางเทคนิคของPPA : "ลายนิ้วมือ: 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6"
muru

เป็นเรื่องจริง แต่ฉันพบว่ากระบวนการนี้ง่ายขึ้นเล็กน้อย
thegreendroid

1

สิ่งนี้ช่วยฉัน:

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

ฉันเดาว่ามีตัวแปรสภาพแวดล้อมบางอย่างที่ไม่ต้องการในคำสั่ง แต่ไม่เป็นอันตราย


1

เพิ่ม PPA ด้วยตนเองในของคุณ/etc/apt/sources.list:

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

sudo apt-get updateบันทึกไฟล์และเรียกใช้ ข้อผิดพลาดนี้อาจปรากฏขึ้น:

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

รันคำสั่งต่อไปนี้เพื่อยอมรับคีย์สำหรับ PPA โดยจดจำการเปลี่ยนคีย์ (5BB92C09DB82666C) สำหรับ PPA ที่สอดคล้องกัน

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

ทำงานsudo apt-get updateและเสร็จแล้ว

Ref: วิธีเพิ่ม PPAs ของ Launchpad ในadd-apt-repositoryคำสั่งDebian Via


1

จริงๆแล้วฉันพบปัญหาเดียวกันนั่นคือวิธีที่ฉันพบหน้านี้

  • ตัวแปรสภาวะแวดล้อม http_proxy (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) และ https_proxy (แบบตัวพิมพ์เล็กและใหญ่) ทำอะไรบางอย่าง การไม่ตั้งค่ามันล้มเหลวในระยะแรกดูเหมือนว่าการตั้งค่าตัวแปรสภาพแวดล้อมจะมีผลบ้าง มันจะล้มเหลวหากคุณไม่ส่งออก

    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.
    

    (ส่วนที่เหลือจะประสบความสำเร็จ - คราวนี้)

บางครั้งมันก็ติดและจบลงด้วยข้อความหมดเวลาปกติ: ไม่สามารถเพิ่ม PPA: '"เกิดข้อผิดพลาดในการอ่านhttps://launchpad.net/api/1.0/~webupd8team/+archive/java : (7,' ไม่สามารถเชื่อมต่อกับพอร์ต launchpad.net 443: การเชื่อมต่อหมดเวลา ') "'

... แต่ฉันกำลังโกงฉันทำทั้งหมดนี้เพื่อเป็นราก ทางออกที่ง่ายคือแก้ไข / etc / profile หรือบน Ubuntu / Mint เพียงเพิ่มสคริปต์ใน /etc/profile.d:

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

โอ้ใช่มีสิ่งที่เกี่ยวกับการขด (ซึ่งถูกใช้โดย apt-add-repository โดยวิธี) คู่มือบอกว่าจะเพิ่ม. curlrc ในโฮมไดเร็กตอรี่ของคุณ เนื่องจาก apt-add-directory เป็นของตัวเองรูทจึงหมายถึงการเพิ่มลงใน /root/.curlrc:

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

ความคิดที่ดีคือทำใน ~ / .curlrc ของคุณเอง

นอกจากนี้การเปิดใช้งานพร็อกซีใน / etc / wgetrc เป็นสิ่งที่ดีที่ต้องทำแม้ว่าจะไม่เกี่ยวข้องกับคำถามที่ถามฉันแค่ช่วยคุณค้นหาอีกครั้งบน Google (ถ้าคุณอ่านสิ่งนี้คุณมีพร็อกซีหลายอัน ) ...


1

ในการ/etc/apt/apt.conf.d/01proxyเพิ่มบางสิ่งเช่นนี้

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

นี่จะเป็นพร็อกซี่การดาวน์โหลดความถนัดทั้งหมดแต่ฉันคิดว่านี่เป็นวิธีเดียวที่จะทำได้ในแบ็กเอนด์ หากพร็อกซีของคุณรองรับคุณสามารถใช้ URL แบบhttp://my.proxy:port/www.target.site.com/urlที่ฉันรู้ว่าใช้ได้apt-cache-ng

ฉันไม่แน่ใจว่า add-apt-repository ใช้การตั้งค่าเหล่านี้หรือไม่ แต่ถ้าคุณไม่สามารถใช้งานได้คุณสามารถเพิ่มที่เก็บลงใน/etc/apt/sources.listหรือ/etc/apt/sources.list.d/*mytoolchain*

ตั้งแต่ 11.10 นอกจากนี้ยังมีข้าม toolchailable ใน repo apt-get install gcc-arm-linux-gnueabihfหลักเพียง นอกจากนี้ยังมี cross-toolchains จาก emdebian และคำแนะนำบางอย่างที่นี่: http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/


user72421: คุณทราบได้อย่างไรว่าพร็อกซีควรนำหน้าด้วย 01 และไม่มีหมายเลขอื่น
jgomo3

ไม่สามารถใช้งานกับ apt-get & keyserver ได้
Vik

1

สิ่งที่ฉันทำคือใช้ http ผ่านทาง curl แทนที่จะพยายามใช้ apt-key หรือ gpg proxy:

curl -sSL \ ' http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886 ' \ | sudo apt-key add -

ควรใช้วิธีนี้แทนการใช้apt-keyบรรทัดคำสั่งhttp_proxyหรือhttps_proxyการตั้งค่าตัวแปรสภาพแวดล้อม (ซึ่งถูกปิดใช้งานใน apt-key รุ่นใหม่ล่าสุด)


0

ดำเนินการคำสั่งด้านล่างในเทอร์มินัล

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

0

ควรเพิ่มตัวแปรสภาพแวดล้อมทั้งระบบใน/etc/environment(ใช้sudoหรือgksu) แต่ข้อผิดพลาดที่รายงานให้คุณดูเหมือนจะไม่พบข้อมูล gpg ไอเดีย:

  • ตรวจสอบการตั้งค่าพร็อกซี (หากคุณมีสิทธิ์เข้าถึง)
  • ตรวจสอบว่าพร็อกซีทำการเอาพุตของทราฟฟิกที่เข้ารหัสไว้
  • เรียกใช้ netstat อย่างต่อเนื่องเพื่อดูว่าการเชื่อมต่อกับพร็อกซีนั้นเกิดขึ้นจริงหรือไม่
  • วิธีสุดท้ายคือการ tcpdump & ตรวจสอบใน wireshark
  • ลองใช้อุโมงค์ http;)

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