Konfigurasikan proksi untuk APT?

72

Saya perlu mengkonfigurasi proxy. Tidak ada apt.conffile di etc/apt/jadi saya membuatnya menggunakan nano.

Tetapi saya tidak mengerti apa yang harus saya tulis di sana. Saya sudah menulis di http_proxy = http://lgn:[email protected]:8080/sana dan kemudian restart networking. Tetapi ketika saya mencoba apt-get update- itu tidak berhasil.

Sebenarnya saya tidak mengerti apa port dan ip yang harus saya tulis dalam apt.conffile (ada contoh dengan 192.168.1.254ip dan 8080port jadi saya memutuskan untuk menggunakannya).

lapot
sumber
Ada perubahan dalam pengaturan proxy untuk mendapatkan pekerjaan di proksi perusahaan di ubuntu, kunjungi github.com/navinas33/docker_ubuntu.git berfungsi ...
Navin as

Jawaban:

103

Untuk menggunakan proxy, Anda memerlukan server proxy. IP dan port harus dari server proxy ini. Login dan pwd haruslah pengguna dan kata sandi Anda di server proxy (jika proxy memerlukan login).

Dari situs help.ubuntu.com :

Metode file konfigurasi APT

Metode ini menggunakan file apt.conf yang ditemukan di direktori / etc / apt / Anda. Metode ini berguna jika Anda hanya ingin apt-get (dan bukan aplikasi lain) menggunakan http-proxy secara permanen.

Pada beberapa instalasi tidak akan ada file apt-conf yang diatur. Edit file apt-conf (atau buat yang baru jika Anda belum punya) menggunakan editor pilihan Anda.

sudo nano /etc/apt/apt.conf

Tambahkan baris ini ke file /etc/apt/apt.conf Anda (gantilah detail Anda untuk alamat proxy dan proxy Anda).

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

Simpan file apt.conf.

Jika proxy Anda memerlukan login / kata sandi, gantikan:

"http://yourproxyaddress:proxyport";

dengan:

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

menggunakan nama pengguna dan kata sandi dari server proxy.

laurent
sumber
6
Menambahkan file lokal yang terpisah /etc/apt/apt.conf.d/lebih disukai sehingga Anda tidak perlu mengedit file konfigurasi dasar sistem. Dengan begitu, jika mereka diperbarui dalam versi paket berikutnya, Anda tidak harus menggabungkan perubahan lokal Anda dengan tangan.
tripleee
Apakah ada file conf proxy di direktori pengguna?
becko
Jawaban ini membutuhkan pembaruan: gksudo sudah usang. Pertimbangkan untuk menyarankan editor non-GUI lain atau sudo -Hbukannya gksudo jika menggunakan gedit atau serupa.
24

Ini adalah jawaban yang lebih umum bersama dengan apt config.

Karena ada banyak tempat untuk mengonfigurasi pengaturan proxy, ini mungkin membingungkan pada awalnya. Izinkan saya merangkum beberapa hal dan menyarankan beberapa praktik yang baik.

Untuk program konsol

Mis: wget, git, dan hampir semua aplikasi konsol yang terhubung ke internet.

Jika Anda ingin mengonfigurasi proksi setiap kali Anda menjalankan perintah karena suatu alasan, tetapkan variabel lingkungan menggunakan perintah berikut.

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

Lain jika Anda ingin menggunakan pengaturan yang sama setiap kali untuk semua pengguna, maka gunakan ini.

Konfigurasikan dalam bashrc

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

Konfigurasikan masuk /etc/environment

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

Konfigurasikan menggunakan GUI

Buka pengaturan jaringan dan atur proxy jaringan lebar sistem Anda.

Jaringan -> Proxy jaringan -> Konfigurasi -> Terapkan sistem secara luas.

Tetapi ini mungkin tidak berguna jika Anda memiliki otentikasi untuk proxy.

Untuk apt.

Anda perlu melakukan beberapa pekerjaan tambahan untuk apt, karena kebetulan apt tidak mematuhi variabel lingkungan,

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

Untuk semuanya di luar ruang lingkup ini, harus ada opsi untuk mengonfigurasi pengaturan proxy di aplikasi itu sendiri. Jika tidak saya minta maaf;)

matrixisreal
sumber
2
konfigurasi di / etc / environment sangat penting karena jika Anda hanya mengatur http_proxy var untuk pengguna Anda, ketika Anda masuk ke mode sudo (untuk hal-hal seperti 'sudo apt-get update'), terminal biasanya tidak menjaga lingkungan saat ini vars; sangat penting untuk menguji pengaturan Anda: sudo echo $ http_proxy
belun
HTTP_PROXY(dalam huruf besar) tampaknya menjadi nama standar untuk variabel itu, meskipun banyak program akan kembali ke versi huruf kecil. https_proxy(perhatikan huruf kecil) adalah huruf besar yang benar untuk itu, tetapi Anda tidak akan pernah menggunakannya sendirian, seperti yang Anda lakukan di /etc/environmentatas. (Saya pikir sini adalah salah ketik.)
Curt J. Sampson
Apa alasan APT membutuhkan konfigurasi proxy tambahan? Mengapa tidak patuh saja pada / etc / environment?
Loreno
22

Sesuatu seperti yang berikut ini seharusnya berfungsi:

Acquire::http::proxy "http://lgn:[email protected]:8080/";
Acquire::https::proxy "http://lgn:[email protected]:8080/";
Dennis Kaarsemaker
sumber
Apakah ada perbedaan port dan ip apa yang digunakan?
lapot
Ya, Anda harus memasukkan detail yang benar untuk proksi yang ingin Anda gunakan, tentu saja.
Dennis Kaarsemaker
eh ... ip - ini ip router? Maksud saya ip ini saya gunakan dari contoh tetapi semua pengaturan router saya konfigurasikan di browser menggunakan 192.168.1.1ip. Saya harus menggunakan .1? dan login dan kata sandi harus menjadi root atau router ubuntu?
lapot
2
Apakah Anda tahu apa yang Anda lakukan? Bagaimana Anda tahu Anda perlu menggunakan proxy jika Anda tidak tahu detailnya?
Dennis Kaarsemaker
5
Kemudian tanyakan pada gurumu. Ini bukan situs "kerjakan pekerjaan rumahku".
Dennis Kaarsemaker
5

Yang dapat Anda lakukan adalah juga mencoba menjalankan perintah sudo -E, yang akan mengambil pengaturan lingkungan. Tampaknya bekerja untuk saya ketika saya mencoba untuk memperbarui, menambah-apt-repositori, dan menginstal. Contoh:

sudo -E add-apt-repository ppa:xxxxx

Menurut @David Foerster ini hanya berfungsi untuk interaksi manual menggunakan shell, tetapi tidak akan bekerja pada tugas dan layanan otomatis yang melibatkan Apt tanpa interaksi pengguna.

Frank Qiu
sumber
Itu tidak akan membantu dengan tugas dan layanan otomatis yang melibatkan Apt tanpa interaksi pengguna.
David Foerster
Terima kasih atas pemberitahuannya, saya akan menambahkan komentar Anda ke tanggapan.
Frank Qiu
2

Jika Anda perlu menggunakan apt di belakang proxy, mungkin yang lainnya juga membutuhkan konfigurasi proxy. Saya suka mengelola pengaturan proxy saya di satu tempat, yang akan menjadi variabel lingkungan.

Untuk itu saya membuat /etc/profiles.d/99-proxy.sh, yang berisi pengaturan proxy yang diperlukan (seperti yang dijelaskan larent):

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

dengan begitu, semua pengguna di mesin itu memiliki akses ke proxy. (jangan lupa chmod a+x)

Saat Anda menggunakan apt atau apt-get sebagai pengguna, pengguna itu dapat menggunakan sudo. Seperti yang dijelaskan Frank Qiu, sudo tidak lulus variabel lingkungan. Untuk itu bisa Anda tambahkan

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

ke (misalnya)

/etc/sudoers.d/00-environment 

atau langsung ke dalam

/etc/sudoers

mengajukan. Dengan begitu Anda hanya perlu mengatur pengaturan proxy di satu tempat.

muluman88
sumber
0

Pertanyaan aslinya mungkin salah arah. Saya yakin Anda ingin mengatur server proxy di Linux?

Yah itu sama sekali berbeda dari keinginan untuk menggunakan proxy yang ada dari lingkungan Linux.

Jika pertanyaan Anda adalah yang pertama maka gunakan layanan pihak ketiga untuk mengkonfigurasi server proxy di Linux. Contohnya bisa cumi-cumi.

Perintah sederhana untuk menginstal squid:

$ sudo apt-get install squid3

Kemudian edit konfigurasi untuk memungkinkan Net Lokal (dalam hal ini mesin Anda sendiri). $ sudo vi /etc/squid3/squid.conf

Tambahkan / Edit baris berikut:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

Dengan asumsi IP Anda untuk mesin Linux ada di blok 192.168.1 / 24.

Neo
sumber
Mungkin sebagian besar pembaca pertanyaan ini sudah menginstal squid;), juga mengatur http[s]_proxyvariabel ENV, dan sekarang bertanya-tanya, mengapa APT masih tidak berfungsi. Tetapi jika Anda mendapatkan HTTP 403 dari segalanya kecuali mesin dengan squid- jangan mencari sekali lagi untuk semua kemunculan kata denyyang tidak dikomentari. (Terutama dengan http_accessdi jalur yang sama.
Tomasz Gandor