กำหนดค่าพร็อกซีสำหรับ APT หรือไม่


72

ฉันต้องการกำหนดค่าพร็อกซี มีไม่ได้apt.confยื่นในดังนั้นฉันได้สร้างมันขึ้นมาใช้etc/apt/nano

แต่ฉันไม่เข้าใจสิ่งที่ฉันต้องเขียนที่นั่น ผมเคยเขียน มีแล้วเริ่มต้นใหม่http_proxy = http://lgn:pwd@192.168.1.254:8080/ networkingแต่เมื่อฉันพยายามapt-get update- มันไม่ทำงาน

ที่จริงแล้วฉันไม่เข้าใจว่าพอร์ตและ ip ใดที่ฉันควรเขียนในapt.confไฟล์ (มีตัวอย่างของ192.168.1.254ip และ8080พอร์ตดังนั้นฉันจึงตัดสินใจใช้)


มีการเปลี่ยนแปลงในการตั้งค่าพร็อกซีเพื่อให้ทำงานในพร็อกซีขององค์กรใน ubuntu ไปที่github.com/navinas33/docker_ubuntu.gitมันใช้งานได้ ...
Navin as

คำตอบ:


103

ในการใช้พร็อกซีคุณต้องมีพร็อกซีเซิร์ฟเวอร์ IP และพอร์ตต้องมาจากพร็อกซีเซิร์ฟเวอร์นี้ เข้าสู่ระบบและ pwd จะต้องเป็นผู้ใช้และรหัสผ่านของคุณบนเซิร์ฟเวอร์พร็อกซี่

จากเว็บไซต์ help.ubuntu.com :

วิธีการกำหนดค่าไฟล์ APT

วิธีนี้ใช้ไฟล์ apt.conf ที่พบใน / etc / apt / directory วิธีนี้มีประโยชน์หากคุณต้องการให้ apt-get (และไม่ใช่แอปพลิเคชันอื่น) เพื่อใช้ http-proxy อย่างถาวร

ในการติดตั้งบางอย่างจะไม่มีการตั้งค่าไฟล์ apt-conf แก้ไขไฟล์ apt-conf (หรือสร้างไฟล์ใหม่หากคุณยังไม่มี) โดยใช้เครื่องมือแก้ไขที่คุณเลือก

sudo nano /etc/apt/apt.conf

เพิ่มบรรทัดนี้ในไฟล์ /etc/apt/apt.conf ของคุณ (แทนที่รายละเอียดของคุณสำหรับ yourproxyaddress และ proxyport)

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

บันทึกไฟล์ apt.conf

หากพร็อกซีของคุณต้องการล็อกอิน / รหัสผ่านให้แทนที่:

"http://yourproxyaddress:proxyport";

ด้วย:

"http://username:password@yourproxyaddress:proxyport";

ใช้ชื่อผู้ใช้และรหัสผ่านจากพร็อกซีเซิร์ฟเวอร์


6
การเพิ่มไฟล์โลคัลแยกใน/etc/apt/apt.conf.d/จะดีกว่าดังนั้นคุณไม่จำเป็นต้องแก้ไขไฟล์คอนฟิกูเรชันพื้นฐานของระบบ ด้วยวิธีนี้หากมีการอัปเดตในรุ่นแพ็คเกจถัดไปคุณไม่จำเป็นต้องรวมการเปลี่ยนแปลงในท้องถิ่นด้วยมือ
tripleee

มีไฟล์พร็อกซี conf ในไดเรกทอรีผู้ใช้หรือไม่
becko

คำตอบนี้ต้องการการอัปเดต: gksudo ล้าสมัยแล้ว พิจารณาการแนะนำตัวแก้ไขที่ไม่ใช่ GUI อื่น ๆ หรือsudo -Hแทน gksudo หากใช้ gedit หรือคล้ายกัน

24

นี่เป็นคำตอบทั่วไปเพิ่มเติมพร้อมกับการกำหนดค่า apt

เนื่องจากมีหลายสถานที่ในการกำหนดการตั้งค่าพร็อกซีอาจทำให้เกิดความสับสนตั้งแต่เริ่มต้น ฉันขอสรุปบางสิ่งและเสนอแนวทางปฏิบัติที่ดี

สำหรับโปรแกรมคอนโซล

เช่น wget, git และเกือบทุกแอปพลิเคชั่นคอนโซลที่เชื่อมต่อกับอินเทอร์เน็ต

หากคุณต้องการกำหนดค่าพร็อกซีทุกครั้งที่คุณเรียกใช้คำสั่งด้วยเหตุผลบางประการให้ตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้คำสั่งต่อไปนี้

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

ถ้าคุณต้องการใช้การตั้งค่าเดียวกันทุกครั้งสำหรับผู้ใช้ทั้งหมดจากนั้นใช้

กำหนดค่าใน bashrc

$ nano /etc/bash.bashrc
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

กำหนดค่า /etc/environment

$ nano /etc/environment
https_proxy="http://myproxy.server.com:8080/" 
ftp_proxy="http://myproxy.server.com:8080/" ...

กำหนดค่าโดยใช้ GUI

เปิดการตั้งค่าเครือข่ายและตั้งค่าพร็อกซีเครือข่ายทั่วทั้งระบบของคุณ

เครือข่าย -> เครือข่ายพร็อกซี่ -> กำหนดค่า -> ใช้ความกว้างของระบบ

แต่นี่อาจไม่เป็นประโยชน์หากคุณมีการตรวจสอบความถูกต้องสำหรับพร็อกซี

สำหรับคนฉลาด

คุณต้องทำงานพิเศษสำหรับ apt โดยที่ apt ไม่ทำตามตัวแปรสภาพแวดล้อม

$ nano /etc/apt/apt.conf
Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT";
Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";

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


2
config ใน / etc / environment มีความสำคัญมากเพราะถ้าคุณเพียงแค่ตั้งค่า http_proxy var สำหรับผู้ใช้ของคุณเมื่อคุณเข้าสู่โหมด sudo (สำหรับสิ่งต่าง ๆ เช่น 'sudo apt-get update') เทอร์มินัลจะไม่รักษาสภาพแวดล้อมปัจจุบัน vars; สำคัญมากสำหรับการทดสอบการตั้งค่าของคุณ: sudo echo $ http_proxy
belun

HTTP_PROXY(ในกรณีที่สูงกว่า) ดูเหมือนจะเป็นชื่อมาตรฐานสำหรับตัวแปรนั้นแม้ว่าหลายโปรแกรมจะถอยกลับไปเป็นรุ่นกรณีที่ต่ำกว่า https_proxy(หมายเหตุตัวพิมพ์เล็ก) เป็นตัวพิมพ์ใหญ่ที่ถูกต้องสำหรับสิ่งนั้น แต่คุณจะไม่ใช้มันอย่างเดียวตามที่คุณทำใน/etc/environmentข้างต้น (ฉันคิดว่าsมันเป็นตัวพิมพ์ผิด)
Curt J. Sampson

สาเหตุที่ APT ต้องการการกำหนดค่าพร็อกซีเพิ่มเติมคืออะไร ทำไมไม่เชื่อฟังกับ / etc / environment?
Loreno

22

สิ่งต่อไปนี้ควรใช้งานได้:

Acquire::http::proxy "http://lgn:pwd@192.168.1.254:8080/";
Acquire::https::proxy "http://lgn:pwd@192.168.1.254:8080/";

มีความแตกต่างอะไรกับพอร์ตและไอพีที่จะใช้?
lapots

ใช่คุณต้องใส่รายละเอียดที่ถูกต้องสำหรับพร็อกซีที่คุณต้องการใช้แน่นอน
Dennis Kaarsemaker

เอ้อ ... ip - มันเป็น ip ของเราเตอร์เหรอ? ฉันหมายถึง ip นี้ฉันใช้จากตัวอย่าง แต่การตั้งค่าเราเตอร์ทั้งหมดที่ฉันกำหนดค่าในเบราว์เซอร์โดยใช้192.168.1.1ip ฉันควรใช้. 1? และการเข้าสู่ระบบและรหัสผ่านควรเป็นรูตหรือเราเตอร์ของ Ubuntu หรือไม่
lapots

2
คุณรู้หรือไม่ว่าคุณกำลังทำอะไรอยู่? คุณจะรู้ได้อย่างไรว่าคุณต้องใช้พรอกซีถ้าคุณไม่ทราบรายละเอียด
Dennis Kaarsemaker

5
จากนั้นถามอาจารย์ของคุณ นี่ไม่ใช่ไซต์ "ทำการบ้านให้ฉัน"
Dennis Kaarsemaker

5

สิ่งที่คุณสามารถทำได้คือลองใช้คำสั่งด้วยsudo -Eซึ่งจะทำการตั้งค่าสภาพแวดล้อม ดูเหมือนว่าจะใช้งานได้สำหรับฉันเมื่อฉันพยายามอัปเดตเพิ่มพื้นที่เก็บข้อมูลและติดตั้ง ตัวอย่าง:

sudo -E add-apt-repository ppa:xxxxx

ตามที่ @David Foerster ใช้งานได้เฉพาะสำหรับการโต้ตอบแบบแมนนวลโดยใช้เชลล์ แต่จะไม่ทำงานกับงานอัตโนมัติและบริการที่เรียก Apt โดยไม่ต้องมีการโต้ตอบกับผู้ใช้


นั่นจะไม่ช่วยงานอัตโนมัติและบริการที่เรียกใช้ Apt โดยไม่ต้องมีการโต้ตอบกับผู้ใช้
David Foerster

ขอบคุณสำหรับการแจ้งเตือนฉันจะเพิ่มความคิดเห็นของคุณในการตอบสนอง
Frank Qiu

2

หากคุณต้องการใช้ apt หลังพร็อกซี่อาจเป็นทุกอย่างอื่นที่จำเป็นต้องกำหนดค่าพร็อกซี ฉันต้องการจัดการการตั้งค่าพร็อกซีในที่เดียวซึ่งจะเป็นตัวแปรสภาพแวดล้อม

สำหรับการที่ฉันสร้าง/etc/profiles.d/99-proxy.shที่มีการตั้งค่าพร็อกซีที่จำเป็น (เช่น larent อธิบาย):

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export https_proxy=$http_proxy
export ftps_proxy=$http_proxy

ด้วยวิธีนี้ผู้ใช้ทั้งหมดในเครื่องนั้นสามารถเข้าถึงพรอกซี (อย่าลืมchmod a+x)

เมื่อคุณใช้ apt หรือ apt-get ในฐานะผู้ใช้ผู้ใช้นั้นจะสามารถใช้ sudo ได้ เช่นเดียวกับ Frank Qiu อธิบาย sudo ไม่ผ่านตัวแปรสภาพแวดล้อม เพื่อที่คุณสามารถเพิ่ม

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

ถึง (เช่น)

/etc/sudoers.d/00-environment 

หรือโดยตรงไปที่

/etc/sudoers

ไฟล์. ด้วยวิธีนี้คุณจะต้องจัดการการตั้งค่าพร็อกซีในที่เดียวเท่านั้น


0

คำถามดั้งเดิมอาจผิดไป ฉันเชื่อว่าคุณต้องการตั้งค่าพร็อกซีเซิร์ฟเวอร์ใน Linux หรือไม่

นั่นแตกต่างอย่างสิ้นเชิงจากการต้องการใช้พร็อกซีที่มีอยู่จากสภาพแวดล้อม Linux

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

คำสั่งง่ายๆในการติดตั้งปลาหมึก:

$ sudo apt-get install squid3

จากนั้นแก้ไขการกำหนดค่าเพื่ออนุญาต Local Net (ในกรณีนี้เครื่องของคุณเอง) $ sudo vi /etc/squid3/squid.conf

เพิ่ม / แก้ไขบรรทัดต่อไปนี้:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

สมมติว่า IP ของคุณสำหรับเครื่อง Linux อยู่ใน 192.168.1 / 24 block


ผู้อ่านส่วนใหญ่ของคำถามนี้อาจติดตั้ง squid แล้ว) ตั้งค่าhttp[s]_proxyตัวแปร ENV และตอนนี้สงสัยว่าทำไม APT ยังใช้งานไม่ได้ แต่ถ้าคุณได้รับ HTTP 403 จากทุกอย่างยกเว้นเครื่องที่มีsquid- ให้ดูอีกครั้งสำหรับคำdenyที่ไม่ได้แสดงความคิดเห็นทั้งหมด (โดยเฉพาะhttp_accessในบรรทัดเดียวกัน
Tomasz Gandor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.