Skonfigurować proxy dla APT?

72

Muszę skonfigurować proxy. Nie było apt.confpliku, etc/apt/więc utworzyłem go za pomocą nano.

Ale nie rozumiem, co muszę tam napisać. Napisałem http_proxy = http://lgn:[email protected]:8080/tam, a następnie uruchomiłem ponownie networking. Ale kiedy próbuję apt-get update- to nie działa.

Właściwie nie rozumiem, jaki port i ip powinienem napisać w apt.confpliku (był przykład z 192.168.1.254ip i 8080portem, więc zdecydowałem się ich użyć).

lapots
źródło
Nastąpiła zmiana ustawień proxy, aby uzyskać pracę w korporacyjnym proxy w Ubuntu. Wejdź na github.com/navinas33/docker_ubuntu.git . Działa ...
Navin jako

Odpowiedzi:

103

Aby korzystać z proxy, potrzebujesz serwera proxy. Adres IP i port muszą pochodzić z tego serwera proxy. Login i pwd muszą być Twoim użytkownikiem i hasłem na serwerze proxy (jeśli proxy wymaga logowania).

Od strony help.ubuntu.com :

Metoda pliku konfiguracyjnego APT

Ta metoda wykorzystuje plik apt.conf, który znajduje się w katalogu / etc / apt /. Ta metoda jest przydatna, jeśli chcesz, aby apt-get (a nie inne aplikacje) używał serwera proxy HTTP na stałe.

W niektórych instalacjach nie będzie skonfigurowanego pliku apt-conf. Edytuj plik apt-conf (lub utwórz nowy, jeśli jeszcze go nie masz) za pomocą wybranego edytora.

sudo nano /etc/apt/apt.conf

Dodaj tę linię do pliku /etc/apt/apt.conf (zamień swoje dane na adres_proxy i port proxy).

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

Zapisz plik apt.conf.

Jeśli Twój serwer proxy potrzebuje loginu / hasła, zastąp:

"http://yourproxyaddress:proxyport";

z:

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

za pomocą nazwy użytkownika i hasła z serwera proxy.

Laurent
źródło
6
Zalecane jest dodanie osobnego pliku lokalnego, /etc/apt/apt.conf.d/więc nie trzeba edytować podstawowych plików konfiguracyjnych systemu. W ten sposób, jeśli zostaną zaktualizowane w kolejnej wersji pakietu, nie musisz ręcznie scalać lokalnych zmian.
tripleee
Czy w katalogu użytkownika jest plik konf. Proxy?
becko
Ta odpowiedź wymaga aktualizacji: gksudo jest przestarzały. Rozważ zaproponowanie innego edytora bez GUI lub sudo -Hzamiast gksudo, jeśli używasz gedit lub podobnego.
24

To jest bardziej ogólna odpowiedź wraz z apt config.

Ponieważ istnieje wiele miejsc, w których można skonfigurować ustawienia proxy, na początku może to być mylące. Pozwól, że streszczę niektóre rzeczy i zasugeruję kilka dobrych praktyk.

Dla programów konsolowych

Np .: wget, git i prawie każda aplikacja konsolowa łącząca się z Internetem.

Jeśli chcesz skonfigurować proxy za każdym razem, gdy uruchamiasz komendy z jakiegoś powodu, ustaw zmienne środowiskowe za pomocą następujących poleceń.

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

Jeśli chcesz używać tych samych ustawień za każdym razem dla wszystkich użytkowników, skorzystaj z nich.

Skonfiguruj w bashrc

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

Skonfiguruj w /etc/environment

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

Skonfiguruj za pomocą GUI

Otwórz ustawienia sieciowe i ustaw serwer proxy całej sieci.

Sieć -> Serwer proxy sieci -> Konfiguruj -> Zastosuj cały system.

Ale może to nie być przydatne, jeśli masz uwierzytelnianie dla serwera proxy.

Dla apt.

Musisz wykonać dodatkową pracę dla apt, ponieważ nawiasem mówiąc, apt nie przestrzega zmiennych środowiskowych,

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

Dla wszystkich elementów poza tym zakresem musi istnieć opcja konfiguracji ustawień proxy w samej aplikacji. Jeśli nie, przepraszam;)

matrycowy
źródło
2
konfiguracja w / etc / environment jest bardzo ważna, ponieważ jeśli właśnie skonfigurujesz http_proxy var dla swojego użytkownika, kiedy przejdziesz do trybu sudo (dla rzeczy takich jak 'sudo apt-get update'), terminal zwykle nie zachowuje bieżącego środowiska Vars; bardzo ważne, aby przetestować ustawienia: echo sudo $ http_proxy
belun
HTTP_PROXY(wielkimi literami) wydaje się być standardową nazwą tej zmiennej, choć wiele programów powróci do wersji pisanej małymi literami. https_proxy(zwróć uwagę na małe litery) to poprawna wielkość liter, ale nigdy nie używałbyś jej osobno, jak to zrobiono /etc/environmentpowyżej. (Myślę, że sto literówka.)
Curt J. Sampson,
Jaki jest powód, dla którego APT wymaga dodatkowej konfiguracji proxy? Dlaczego nie jest po prostu posłuszny z / etc / environment?
Loreno
22

Powinno działać coś takiego:

Acquire::http::proxy "http://lgn:[email protected]:8080/";
Acquire::https::proxy "http://lgn:[email protected]:8080/";
Dennis Kaarsemaker
źródło
Czy jest różnica, jakiego portu i adresu IP należy użyć?
lapots
Cóż, tak, musisz podać poprawne dane dla serwera proxy, którego oczywiście chcesz używać.
Dennis Kaarsemaker
er ... ip - czy to ip routera? Mam na myśli to ip, którego użyłem z przykładu, ale wszystkie ustawienia routera konfiguruję w przeglądarce za pomocą 192.168.1.1ip. Powinienem użyć .1? a login i hasło powinny być rootem lub routerem Ubuntu?
lapots
2
Czy ty w ogóle wiesz co robisz? Skąd wiesz, że musisz użyć serwera proxy, jeśli nie znasz jego szczegółów?
Dennis Kaarsemaker
5
Zapytaj swojego nauczyciela. To nie jest strona „zrób dla mnie zadanie domowe”.
Dennis Kaarsemaker
5

Możesz także spróbować uruchomić polecenie sudo -E, które przejmie ustawienia środowiska. Wydaje mi się, że działa, gdy próbuję zaktualizować, dodać repozytorium i zainstalować. Przykład:

sudo -E add-apt-repository ppa:xxxxx

Według @David Foerster działa to tylko w przypadku ręcznej interakcji przy użyciu powłoki, ale nie działa w przypadku zautomatyzowanych zadań i usług wywołujących Apt bez interakcji użytkownika.

Frank Qiu
źródło
Nie pomoże to jednak w automatycznych zadaniach i usługach wywołujących Apt bez interakcji użytkownika.
David Foerster,
Dziękuję za powiadomienie, dodam komentarz do odpowiedzi.
Frank Qiu,
2

Jeśli potrzebujesz użyć apt za proxy, prawdopodobnie wszystko inne również potrzebuje konfiguracji proxy. Lubię zarządzać ustawieniami serwera proxy w jednym miejscu, które byłoby zmienną środowiskową.

W tym celu tworzę a /etc/profiles.d/99-proxy.sh, który zawiera niezbędne ustawienia proxy (jak opisany larent):

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

w ten sposób wszyscy użytkownicy na tym komputerze mają dostęp do serwera proxy. (nie zapomnij chmod a+x)

Kiedy używasz apt lub apt-get jako użytkownik, ten użytkownik może używać sudo. Jak opisał Frank Qiu, sudo nie przekazuje zmiennych środowiskowych. Do tego możesz dodać

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

do (np.)

/etc/sudoers.d/00-environment 

lub bezpośrednio do

/etc/sudoers

plik. W ten sposób musisz zarządzać ustawieniami proxy tylko w jednym miejscu.

muluman88
źródło
0

Pierwotne pytanie może być w złym kierunku. Uważam, że chcesz skonfigurować serwer proxy w systemie Linux?

Cóż, to zupełnie coś innego niż chęć korzystania z istniejącego serwera proxy ze środowiska Linux.

Jeśli twoje pytanie jest pierwsze, skorzystaj z usług stron trzecich, aby skonfigurować serwer proxy w systemie Linux. Przykładem może być kałamarnica.

Proste polecenia do zainstalowania kałamarnicy:

$ sudo apt-get install squid3

Następnie edytuj konfigurację, aby umożliwić sieć lokalną (w tym przypadku własną maszynę). $ sudo vi /etc/squid3/squid.conf

Dodaj / edytuj następujące linie:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

Zakładając, że twój adres IP komputera z systemem Linux znajduje się w bloku 192.168.1 / 24.

Neo
źródło
Prawdopodobnie większość czytelników tego pytania już zainstalowała kałamarnicę;), również ustawiła http[s]_proxyzmienne ENV, a teraz zastanawia się, dlaczego APT nadal nie działa. Ale jeśli otrzymujesz HTTP 403 ze wszystkiego oprócz maszyny z squid- ponownie spójrz na wszystkie wystąpienia słowa, denyktóre nie są komentowane. (zwłaszcza z http_accesstej samej linii.
Tomasz Gandor