วิธีการเรียกใช้ "sudo apt-get update" ผ่าน proxy ใน commandline?


78

ในสำนักงานของฉันฉันต้องการอัปเดตและดาวน์โหลดผ่าน (wget) และที่นี่พวกเขาใช้พร็อกซีหรือไม่

ฉันจะทำสิ่งนี้ผ่าน commandline ได้อย่างไร


คำตอบ:


91

ในบางรุ่น sudo มีการกำหนดค่าในลักษณะที่ตัวแปรสภาพแวดล้อมทั้งหมดล้างทั้งหมดเมื่อใช้คำสั่ง หากต้องการเก็บค่าhttp_proxyของคุณไว้และแก้ไขสิ่งนี้คุณต้องแก้ไข / etc / sudoers แล้วรัน:

visudo

จากนั้นหาบรรทัดที่ระบุ:

Defaults env_reset 

และเพิ่มหลังจากนั้น:

Defaults env_keep = "http_proxy ftp_proxy" 

สิ่งต่าง ๆ จะเริ่มทำงานตามที่คาดไว้

ขอบคุณkdogksuในฟอรัม Ubuntu สำหรับการค้นหาวิธีแก้ปัญหานี้

เพื่อไม่เพียงแก้ไข apt-get แต่ยังรวมถึงกราฟิก X11 utils เช่น synaptic, mintintall, ... ) บรรทัดต่อไปนี้/etc/sudoersควรทำงาน:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"

7
จำเป็นต้องเพิ่ม "https_proxy" ด้วยหรือไม่
TenLeftFingers

2
$ export http_proxy = " ผู้ใช้: รหัสผ่าน @ proxy-server: พอร์ต " และหากรหัสผ่านของคุณมีอักขระพิเศษ - cyberciti.biz/faq/…
Alex Punnen

2
ควรเพิ่ม 'env_keep' หลังจาก 'env_reset' หรือวางไว้ในตำแหน่ง พวกเขาดูตรงข้ามกันดังนั้นจะมีเหตุผลในการรักษาทั้งสองหรือไม่
Rodrigo

ค่าเริ่มต้น env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" ได้ผลสำหรับฉัน! ขอบคุณมาก! -
Ronald

1
สะดุดในเรื่องนี้หลังจากการเรียกดูจำนวนมาก นี่เป็นการแก้ไขปัญหาของฉัน
Sudipta Basak

39

ใช้สิ่งนี้

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

นี่คือสิ่งที่ฉันใช้ ทำงานได้อย่างสมบูรณ์แบบ

Apt ยังอนุญาตให้วางการตั้งค่าส่วนบุคคลไว้ในไฟล์ด้านล่าง/etc/apt/apt.conf.d/ดังนั้นสิ่งนี้จึงมีผลเหมือนกับที่กล่าวมาข้างต้น แต่อาจรักษาได้ง่ายกว่าหากคุณมีสายอื่น ๆ ใน.confไฟล์:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:Password@proxy.foo.bar.edu.au:8080";

5
ฉันขอแนะนำให้แก้ไขสิ่งนี้เพื่ออธิบายวิธีเพิ่มบรรทัดนั้นในไฟล์กำหนดค่า ความพยายามในการเรียกใช้บรรทัดเหล่านั้นในบรรทัดคำสั่งจะไม่ทำ ตอนนี้คำตอบนี้ขึ้นอยู่กับความคิดที่ถูกต้อง แต่จะไม่เป็นประโยชน์สำหรับมือใหม่ ก็ไม่ได้ชัดเจนว่าคุณกำลังจะบอกว่าเส้นที่ควรจะเพิ่มapt.confการ
Eliah Kagan

ยอดเยี่ยม !!!! ทำงานได้อย่างมีเสน่ห์
Shantanu Bedajna

ในระบบของฉันฉันต้องสร้างไฟล์ภายใต้ /etc/apt/apt.conf.d แต่รายละเอียดเล็ก ๆ - ใช้งานได้ดี
dldnh

1
@dldnh: คุณสามารถสร้างไฟล์/etc/apt/apt.confหรือใช้วางไฟล์ปรับแต่งใน/etc/apt/apt.conf.d.... ใช้ได้ทั้งสองอย่าง! :-)
Paul Calabro

อย่าลืมเครื่องหมายอัฒภาคหรือคุณจะได้รับE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane

18

สิ่งที่ทำงานให้ฉันคือ:

sudo http_proxy=http://yourserver apt-get update

ซึ่งเป็นเรื่องแปลกเพราะเพียงส่งออก http_proxy แล้วเรียกใช้ sudo echo $ http_proxy พิมพ์ออกมาอย่างเชื่อฟังค่าส่งออก


1
$http_proxyได้รับการขยายก่อนที่ sudo แม้กระทั่งวิ่ง
รายการ Jeremy

1
สิ่งนี้ใช้งานได้ดีใน Dockerfile!
Cory Ringdahl

อย่าลืมพอร์ตสำหรับพรอกซีถ้าจำเป็น :)
Gilad Peleg

11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

การส่งออกไม่จำเป็นต้องมีsudoไอเอ็นจีและหากพร็อกซีของคุณไม่ระบุชื่อเพียงคลองproxyusername:proxypassword@ส่วน


:-( ฉันได้รับข้อผิดพลาด "ปฏิเสธการเข้าถึงบริการเว็บพรอกซี!"
Renjith G

การตั้งค่าพร็อกซีเดียวกันนี้ใช้งานได้ง่ายwgetหรือไม่?
Oli

ใช่ .. ข้อผิดพลาดเดียวกันซ้ำอีกครั้ง ...
Renjith G

2
แล้วการแก้ไข /etc/apt/apt.conf ด้วย Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: MYPASS@MY.PROXY.COM: MYPORT"?
Renjith G

คุณสามารถเพิ่มสิ่งนี้ลงใน ~ / .bashrc ของคุณ ความเสี่ยงด้านความปลอดภัยที่น่ากลัวแม้ว่า
Scaine

3

หากเป็นการกำหนดค่าชั่วคราวคุณสามารถลองนี้: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

คุณต้องการสิ่งนี้เนื่องจากจำเป็นต้องกำหนดตัวแปรสภาพแวดล้อมสำหรับบัญชี "root" การทำและส่งออกก่อนไม่ควรทำงาน

สำหรับการกำหนดค่าถาวรคุณจะต้องแก้ไขไฟล์ระบบ คำอธิบายนี้ได้อธิบายไว้แล้วในคำตอบต่อไปนี้เกี่ยวกับวิธีตรวจสอบเครือข่ายพร็อกซีที่ใช้จริง ๆ .


:-( ฉันได้รับข้อผิดพลาด "ปฏิเสธการเข้าถึงบริการเว็บพรอกซี!"
Renjith G

คุณอาจต้องเข้าสู่ระบบและรหัสผ่านใช่ไหม? หากเป็นเช่นนั้น http_proxy ควรมีรูปแบบ "http: // <user>: <pass> @ <host>: <port> /"
Huygens

3

อูบุนตูเป็นศัตรูต่อการพิสูจน์ตัวตนของผู้รับมอบฉันทะอย่างไม่น่าเชื่อ ฉันใช้แล็ปท็อป Ubuntu ในที่ทำงานและจำนวนของการแตกก็ไม่น่าเชื่อ

Synaptic, Apt, Firefox, Chromium และอื่น ๆ ทั้งหมดใช้วิธีการที่แตกต่างกันสำหรับการระบุพร็อกซีและไม่มีที่ไหนที่จะระบุข้อมูลรับรองอย่างปลอดภัย

ข้อบกพร่องบางอย่างในเรื่อง: https://bugs.edge.launchpad.net/ubuntu/+source/msttcorefonts/+bug/220070

https://bugs.edge.launchpad.net/ubuntu/+source/apt-cacher/+bug/198138

https://bugs.edge.launchpad.net/ubuntu/+source/apt/+bug/433827

https://bugs.edge.launchpad.net/ubuntu/+source/b43-fwcutter/+bug/683630

ข้อเสนอแนะของ Oli ในการใช้การส่งออกเป็นวิธีเดียวที่จะทำได้อย่างปลอดภัย บางครั้งอาจเป็นไปได้ที่จะสนับสนุนพร็อกซี "fudge" หากพร็อกซีเซิร์ฟเวอร์ใช้การตรวจสอบความถูกต้องรองเพื่อลดการโหลดบนเซิร์ฟเวอร์การตรวจสอบความถูกต้องหลัก (อาจเป็น Active Directory) นี่คือที่ที่การเชื่อมต่อพร็อกซีแรกได้รับการรับรองความถูกต้องโดยพร็อกซีกับ AD จากนั้นสำหรับช่วงเวลาที่กำหนด (โดยปกติ 5 นาที) การเชื่อมต่ออื่น ๆ ทั้งหมดจะ "เชื่อถือ" เพื่อเป็นผู้ใช้นั้น ดังนั้นคุณสามารถเปิด firefox ท่องอินเทอร์เน็ต (ที่ใดก็ได้) จากนั้นลองใช้ยูทิลิตี้ของคุณ (wget, synaptic, อะไรก็ตาม) โดยระบุ proxy แต่ปล่อยให้ชื่อผู้ใช้ว่างเปล่า

โดยทั่วไปแล้ว Ubuntu เป็นศัตรูกับสภาพแวดล้อมขององค์กรเพียงเพราะช่วยให้อ่านรหัสผ่านได้ง่าย Seahorse เป็นตัวการสำคัญ แต่ตัวจัดการเครือข่ายก็ตกตะลึง - เชื่อมต่อกับเครือข่ายรับรองความถูกต้อง PEAP ใด ๆ และคุณเพิ่งเก็บรหัสผ่านไว้ในแอปเพล็ตเพื่อให้ทุกคนได้เห็นว่าใครจะยืมแล็ปท็อปของคุณ เห็นได้ชัดว่าการใช้แล็ปท็อปร่วมกันนั้นถือว่าเป็นสิ่งศักดิ์สิทธิ์ในดินแดนลินุกซ์ หลังจากนั้นฉันไม่มีหัวใจที่จะติดต่อ devs ผู้จัดการเครือข่าย


ฉันแนะนำ cntlm เพื่อเป็นการรักษาสำหรับสิ่งนี้ มันจัดการกับการตรวจสอบความถูกต้องด้วย AD และคุณตั้งค่าพร็อกซีทั้งหมดของคุณให้ใช้ 127.0.0.1 โดยไม่ต้องมีข้อมูลรับรองใด ๆ
laz

หากคุณต้องการรับรองความถูกต้องกับเครื่องอื่นก็จะต้องเก็บรหัสผ่านแบบธรรมดา "การเข้ารหัส" จะไม่เพิ่มความปลอดภัยใด ๆ เนื่องจากคีย์การเข้ารหัสจะต้องเก็บไว้ในอุปกรณ์เดียวกันเพื่อให้สามารถใช้รหัสผ่านได้
Jeremy List

Jeremy คุณใช้วิธีการเปิด / ปิดเช่นเดียวกับการรักษาความปลอดภัยเช่นเดียวกับ Seahorse devs ฉันไม่ได้บอกว่าจะทำให้สิ่งนี้เป็นไปไม่ได้เพียงทำให้มันยาก ตอนนี้การขโมยข้อมูลประจำตัวจากแล็ปท็อป Ubuntu ที่ปลดล็อคนั้นเป็นเรื่องเล็กน้อย - อาจมีห้าคลิกและคุณได้รับแล้ว สิ่งนี้ไม่เป็นความจริงกับ Windows - อาจเป็นไปได้ แต่ฉันก็ไม่รู้จะทำยังไง ไม่มีวิธีง่ายๆในการยกรหัสผ่านจากเครื่อง Windows ในเวลา 10 นาทีหรือดังนั้นคุณอาจปล่อยให้เวิร์กสเตชันถูกปลดล็อกโดยไม่ตั้งใจ ทำเช่นเดียวกันใน Ubuntu และคุณก็อาจต้องลาออก มันไม่ดีพอ
Scaine

3

คุณลองแก้ไข/etc/apt/apt.confไหม ฉันใช้สิ่งนี้เพื่อใช้ฉลาดหลัง บริษัท ของเรา

Acquire::http::proxy "http://user:password@host:port/";

ฉันเชื่อว่า apt ใช้ค่านี้ยกเว้นว่ามีการกำหนด $ http_proxy ในสภาพแวดล้อมเชลล์ของคุณ (เช่น $ http_proxy มีความสำคัญกว่า)


ฉันไม่แน่ใจว่า apt.conf ยังคงใช้งานอยู่ ... เมื่อฉันอัปเดตจาก 8.04 ถึง 10.04 ฉันลงเอยด้วยการอัพเดตที่เป็นไปไม่ได้จนกว่าฉันจะลบการตั้งค่าพร็อกซีในไฟล์นั้น - จากนั้นการตั้งค่าพร็อกซีใน Synaptic เริ่ม ทำงานอีกครั้ง ...
จาวาน้อย

มันแปลกมาก - ฉันใช้ apt.conf กับ 10.04 ฉันพบว่าการตั้งค่าในไฟล์นี้แยกจากการกำหนดค่าในการกำหนดค่าตามความชอบของผู้จัดการแพคเกจ Synaptic
Jon Brett

1
ใช่apt.confยังควรใช้ apt-config dumpคุณสามารถดูการกำหนดค่าการตั้งค่าที่ฉลาดคิดว่ามันมีการตั้งค่าโดยใช้
Steve Beattie

0

หากคุณต้องการเรียกใช้“ sudo apt-get update” ผ่านพร็อกซีใน commandline ใช้คำสั่งด้านล่าง

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.