Jak uruchomić „sudo apt-get update” przez proxy w wierszu poleceń?

Odpowiedzi:

91

W niektórych wersjach sudo jest skonfigurowane w taki sposób, że wszystkie zmienne środowiskowe są czyszczone podczas uruchamiania polecenia. Aby zachować wartość dla http_proxy i naprawić to, musisz edytować / etc / sudoers, uruchom:

visudo

Następnie znajdź wiersz, który mówi:

Defaults env_reset 

i dodaj po nim:

Defaults env_keep = "http_proxy ftp_proxy" 

Wszystko zacznie działać zgodnie z oczekiwaniami.

Dzięki kdogksu na forach Ubuntu za znalezienie rozwiązania tego problemu .

Aby nie tylko naprawić apt-get, ale także graficzne narzędzia X11, takie jak np. Synaptic, mintintall, ...), powinna wystarczyć następująca linia /etc/sudoers:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
paulo.albuquerque
źródło
7
Czy konieczne byłoby również dodanie „https_proxy”?
TenLeftFingers
2
$ export http_proxy = " użytkownik: hasło @ serwer proxy: port ", a jeśli hasło zawiera znaki specjalne - cyberciti.biz/faq/…
Alex Punnen
2
należy dodać „env_keep” po „env_reset” czy umieścić na jego miejscu? Wyglądają na siebie przeciwstawne, więc czy warto zachować jedno i drugie?
Rodrigo
Domyślne env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" działało dla mnie! Dzięki ! -
Ronald,
1
Natknąłem się na to po wielu przeglądaniach. To rozwiązało mój problem.
Sudipta Basak
39

Użyj tego.

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf
Acquire::http::Proxy "http://Username:[email protected]:8080";

Tego używam. Działa świetnie.

Apt pozwala również na umieszczenie poszczególnych ustawień w plikach pod /etc/apt/apt.conf.d/, więc ma to dokładnie taki sam efekt jak powyżej, ale może być łatwiejsze do utrzymania, jeśli masz inne linie w .confpliku:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:[email protected]:8080";
John Cartwright
źródło
5
Polecam edycję tego, aby wyjaśnić, jak dodać tę linię do pliku konfiguracyjnego. Próba uruchomienia tych linii w wierszu polecenia nie spowoduje tego. W tej chwili odpowiedź jest oparta na poprawnym pomyśle, ale nie będzie pomocna nowicjuszowi. To nawet nie jest całkowicie jasne, że mówisz, że linia powinna być dodana do apt.conf.
Eliah Kagan
niesamowite !!!! działa jak urok
Shantanu Bedajna
W moim systemie musiałem utworzyć plik pod /etc/apt/apt.conf.d, ale mały szczegół - działał świetnie
dldnh
1
@dldnh: Możesz utworzyć plik /etc/apt/apt.conflub użyć pliku konfiguracyjnego w /etc/apt/apt.conf.d.... albo działa! :-)
Paul Calabro
nie zapomnij średnika, bo dostanieszE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane,
18

Dla mnie zadziałało:

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

Co jest nieco dziwne, ponieważ po prostu eksportując http_proxy, a następnie uruchamiając sudo echo $ http_proxy posłusznie wydrukowałem wyeksportowaną wartość

Sam
źródło
1
$http_proxyrozszerza się, zanim sudo się uruchomi.
Jeremy List,
1
Działa to świetnie w Dockerfile!
Cory Ringdahl
W razie potrzeby nie zapomnij portu dla serwera proxy :)
Gilad Peleg
11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

Eksport nie powinien być potrzebny, sudoa jeśli twoje proxy jest anonimowe, po prostu porzuć proxyusername:proxypassword@część.

Oli
źródło
:-(, pojawia się błąd „Odmowa dostępu do internetowej usługi proxy!”
Renjith G
Czy te same ustawienia proxy działają dla czegoś tak prostego jak wget?
Oli
tak .. ten sam błąd powtarzający się ...
Renjith G
2
Co powiesz na edycję /etc/apt/apt.conf za pomocą Acquire :: http :: Proxy „ MYDOMAIN \ MYNAME: [email protected]: MYPORT”?
Renjith G,
Możesz także dodać to do swojego ~ / .bashrc. Straszne ryzyko bezpieczeństwa.
Scaine
3

Jeśli jest to konfiguracja tymczasowa , możesz spróbować: sudo bash -c 'http_proxy = "http: // <serwer_ proxy>: <port_ proxy> /„ apt-get update ”

Potrzebujesz tego, ponieważ zmienna środowiskowa musi być zdefiniowana dla konta „root”. Robienie i eksportowanie wcześniej nie powinno działać.

Aby uzyskać trwałą konfigurację , musisz zmodyfikować plik systemowy. Jest to już opisane w poniższej odpowiedzi na temat sprawdzania, czy serwer proxy sieci naprawdę jest stosowany? .

Huygens
źródło
:-(, pojawia się błąd „Odmowa dostępu do internetowej usługi proxy!”
Renjith G
Prawdopodobnie musisz podać login i hasło, prawda? Jeśli tak, http_proxy powinien mieć postać „http: // <użytkownik>: <pass> @ <host>: <port> /”
Huygens
3

Ubuntu jest niezwykle wrogi w uwierzytelnianiu serwerów proxy. Używam laptopa Ubuntu w pracy, a liczba awarii jest niesamowita.

Synaptic, Apt, Firefox, Chromium itp. Używają różnych metod określania serwera proxy i nie ma bezpiecznego miejsca na podanie danych uwierzytelniających.

Niektóre błędy na ten temat: 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

Sugestia Oli, by skorzystać z eksportu, jest jedynym niejasno bezpiecznym sposobem. Czasami możliwe jest również „zakodowanie” obsługi proxy, jeśli serwer proxy korzysta z wtórnego uwierzytelnienia, aby zminimalizować obciążenie głównych serwerów uwierzytelniania (powiedzmy być może Active Directory). To tutaj pierwsze połączenie z serwerem proxy jest uwierzytelniane przez serwer proxy względem usługi AD, a następnie przez określony czas (zwykle 5 minut) wszystkie pozostałe połączenia są „zaufane” dla tego użytkownika. Dlatego możesz otworzyć Firefoksa, przeglądać Internet (gdziekolwiek to zrobi), a następnie wypróbować narzędzie (wget, synaptic, cokolwiek), określając proxy, ale nazwę użytkownika pozostaw pustą.

Ubuntu jest zasadniczo wrogi każdemu środowisku korporacyjnemu, ponieważ pozwala na łatwe odczytywanie haseł. Konik morski jest głównym winowajcą, ale Menedżer sieci jest również szokujący - połącz się z dowolną siecią z uwierzytelnieniem PEAP i właśnie zapisałeś hasło w aplecie, aby każdy mógł zobaczyć, kto może pożyczyć Twój laptop. Najwyraźniej dzielenie się laptopami jest uważane za świętokradztwo na ziemi Linuksa, ponieważ programiści Seahorse odrzucili twierdzenia o niepewności. Po tym nie miałem serca skontaktować się z deweloperami menedżera sieci.

Scaine
źródło
Polecam cntlm jako lekarstwo na to. Obsługuje uwierzytelnianie za pomocą AD, a Ty ustawiasz wszystkie ustawienia proxy tak, aby używały 127.0.0.1 bez konieczności podawania poświadczeń.
laz
Aby uwierzytelnić się na innym komputerze, należy zapisać zwykły tekst hasła. „szyfrowanie” nie dodałoby żadnych zabezpieczeń, ponieważ klucz szyfrujący musi być przechowywany na tym samym urządzeniu, aby hasła były dostępne.
Jeremy List,
Jeremy, masz takie samo podejście do bezpieczeństwa, jak twórcy Seahorse. Nie mówię, żeby to uniemożliwić, po prostu utrudnij. W tej chwili kradzież danych uwierzytelniających z odblokowanego laptopa Ubuntu jest banalna - może pięć kliknięć i już to masz. To samo nie dotyczy systemu Windows - może być nadal możliwe, ale nawet ja nie wiedziałbym, jak to zrobić. Nie ma prostego sposobu, aby usunąć hasło z komputera z systemem Windows w ciągu 10 minut, więc możesz pozostawić stację roboczą odblokowaną przez przypadek. Zrób to samo w Ubuntu, a równie dobrze możesz złożyć rezygnację. To nie wystarczy.
Scaine,
3

Czy próbowałeś edytować /etc/apt/apt.conf? Używam tego, aby używać apt za naszym korporacyjnym proxy.

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

Uważam, że apt używa tej wartości, chyba że $ http_proxy jest zdefiniowane w twoim środowisku powłoki (tzn. $ Http_proxy ma pierwszeństwo).

Jon Brett
źródło
Nie jestem pewien, czy apt.conf jest nadal używany ... Kiedy zaktualizowałem z 8.04 do 10.04, zakończyłem się niemożliwą aktualizacją, dopóki nie pozbyłem się ustawień proxy w tym pliku - wtedy ustawienia proxy ustawione w Synaptic zaczęły pracować ponownie ...
Mała Jawa,
To dziwne - używam apt.conf z 10.04. Uważam, że ustawienia w tym pliku są inne niż skonfigurowane w GUI preferencji menedżera pakietów Synaptic.
Jon Brett,
1
Tak, apt.confnadal powinien być używany. Możesz zobaczyć, jakie ustawienia konfiguracji apt sądzi, że zostały ustawione przy użyciu apt-config dump.
Steve Beattie,
0

Jeśli chcesz uruchomić „sudo apt-get update” przez proxy w wierszu poleceń, użyj polecenia poniżej,

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Prashant Adlinge
źródło