Come eseguire "sudo apt-get update" tramite proxy nella riga di comando?


Risposte:


91

In alcune versioni sudo è configurato in modo tale che tutte le variabili di ambiente siano state cancellate durante l'esecuzione del comando. Per mantenere il valore per il tuo http_proxy e risolverlo, devi modificare / etc / sudoers, eseguire:

visudo

Quindi trova una riga che indica:

Defaults env_reset 

e aggiungi dopo:

Defaults env_keep = "http_proxy ftp_proxy" 

Le cose inizieranno a funzionare come previsto.

Grazie a kdogksu nei forum di Ubuntu per aver trovato la soluzione per questo.

Al fine di risolvere non solo apt-get ma anche utilità grafiche X11 come ad esempio synaptic, mintintall, ...) la seguente riga /etc/sudoersdovrebbe fare il lavoro:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"

7
Sarebbe necessario aggiungere anche "https_proxy"?
TenLeftFingers

2
$ export http_proxy = " user: password @ proxy-server: port " e se la tua password contiene caratteri speciali - cyberciti.biz/faq/…
Alex Punnen,

2
'env_keep' dovrebbe essere aggiunto dopo 'env_reset' o posto al suo posto? Sembrano opposti l'uno all'altro, quindi ha senso mantenere entrambi?
Rodrigo,

Valori predefiniti env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" ha funzionato per me! Grazie ! -
Ronald,

1
Ci siamo imbattuti in questo dopo molta navigazione. Questo ha risolto il mio problema.
Sudipta Basak,

40

Usa questo.

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

Questo è quello che uso. Funziona perfettamente.

Apt consente inoltre di posizionare le singole impostazioni nei file /etc/apt/apt.conf.d/, quindi ha esattamente lo stesso effetto di cui sopra, ma può essere più semplice da mantenere se nel .conffile sono presenti altre righe :

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

5
Consiglio di modificarlo per spiegare come aggiungere quella riga al file di configurazione. Tentare di eseguire quelle righe sulla riga di comando non lo farà. In questo momento questa risposta si basa su un'idea corretta ma non sarà utile per un principiante. Non è nemmeno del tutto chiaro che stai dicendo che la linea dovrebbe essere aggiunta a apt.conf.
Eliah Kagan,

eccezionale !!!! funziona come per incanto
Shantanu Bedajna,

Sul mio sistema ho dovuto creare un file in /etc/apt/apt.conf.d ma piccoli dettagli - funzionavano alla grande
dldnh

1
@dldnh: è possibile creare il file /etc/apt/apt.confo utilizzare posizionare un file di configurazione in /etc/apt/apt.conf.d.... entrambi funzionano! :-)
Paul Calabro,

non dimenticare il punto e virgola o otterraiE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane,

18

La cosa che ha funzionato per me è stata:

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

Il che è un po 'strano perché semplicemente esportando http_proxy e quindi eseguendo sudo echo $ http_proxy è stato stampato obbedientemente il valore esportato


1
$http_proxyviene espanso prima ancora che sudo venga eseguito.
Elenco Jeremy

1
Questo ha funzionato alla grande in un Dockerfile!
Cory Ringdahl,

Non dimenticare la porta per il proxy, se necessario :)
Gilad Peleg,

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

L'esportazione non dovrebbe richiedere sudoing e se il proxy è anonimo, basta abbandonare la proxyusername:proxypassword@parte.


:-(, visualizzo l'errore "Accesso al servizio proxy Web negato!"
Renjith G

Le stesse impostazioni proxy funzionano per qualcosa di semplice wget?
Oli

sì ... lo stesso errore si ripete ...
Renjith G

2
Che ne dici di modificare /etc/apt/apt.conf con Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: MYPASS@MY.PROXY.COM: MYPORT"?
Renjith G,

Puoi anche aggiungere questo al tuo ~ / .bashrc. Orribile rischio per la sicurezza però.
Scaine,

3

Se si tratta di una configurazione temporanea , è possibile provare questo: sudo bash -c 'http_proxy = "http: // <proxy_host>: <proxy_port> /" apt-get update'

Questo è necessario perché la variabile di ambiente deve essere definita per l'account "root". Fare ed esportare prima non dovrebbe funzionare.

Per una configurazione permanente , dovrai modificare un file di sistema. Questo è già descritto nella seguente risposta su Come verificare che il proxy di rete sia realmente applicato? .


:-(, visualizzo l'errore "Accesso al servizio proxy Web negato!"
Renjith G,

Probabilmente devi inserire un login e una password, vero? In tal caso, http_proxy dovrebbe avere il formato "http: // <utente>: <passaggio> @ <host>: <porta> /"
Huygens,

3

Ubuntu è incredibilmente ostile all'autenticazione dei proxy. Uso un laptop Ubuntu al lavoro e il numero di rotture è incredibile.

Synaptic, Apt, Firefox, Chromium, ecc. Usano tutti metodi diversi per specificare un proxy e non c'è nessun posto dove specificare le credenziali in modo sicuro.

Alcuni bug sull'argomento: 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

Il suggerimento di Oli di utilizzare un'esportazione è l'unico modo vagamente sicuro per farlo. Talvolta è anche possibile "fudge" il supporto proxy se il server proxy utilizza l'autenticazione secondaria per ridurre al minimo il carico sui server di autenticazione principali (ad esempio, Active Directory). Qui è dove la prima connessione proxy è autenticata dal proxy rispetto ad AD, quindi per un periodo di tempo prestabilito (di solito 5 minuti) tutte le altre connessioni sono "fidate" per essere quell'utente. Pertanto, puoi aprire Firefox, navigare in Internet (ovunque lo farà), quindi provare la tua utility (wget, synaptic, qualunque cosa) specificando un proxy, ma lasciando vuoto il nome utente.

Ubuntu è generalmente ostile a qualsiasi ambiente aziendale semplicemente perché consente di leggere le password così facilmente. Seahorse è un colpevole principale, ma anche Network Manager è scioccante: connettiti a qualsiasi rete autenticata PEAP e hai appena archiviato la password nell'applet per far vedere a chiunque chi potrebbe prendere in prestito il tuo laptop. Apparentemente la condivisione di laptop è considerata un sacrilegio in terra Linux, poiché gli sviluppatori di Seahorse hanno respinto le affermazioni di insicurezza. Successivamente, non ho avuto il coraggio di contattare gli sviluppatori del gestore di rete.


Raccomando cntlm come cura per questo. Gestisce l'autenticazione con AD e hai impostato tutte le impostazioni del proxy per utilizzare 127.0.0.1 senza richiedere credenziali.
Laz

Se è necessario eseguire l'autenticazione con un'altra macchina, è necessario archiviare la password in chiaro. la "crittografia" non aggiungerebbe alcuna sicurezza, perché la chiave di crittografia deve essere archiviata sullo stesso dispositivo affinché le password siano disponibili.
Elenco Jeremy

Jeremy, stai adottando lo stesso approccio on / off alla sicurezza degli sviluppatori Seahorse. Non sto dicendo di rendere impossibile questa roba, solo di renderla difficile. In questo momento, rubare le credenziali da un laptop Ubuntu sbloccato è banale - forse cinque clic e il gioco è fatto. Lo stesso non vale per Windows: potrebbe essere ancora possibile, ma anche io non saprei come farlo. Non esiste un modo semplice per estrarre una password da un computer Windows in circa 10 minuti, quindi potresti lasciare una workstation sbloccata per sbaglio. Fai lo stesso con Ubuntu e potresti anche consegnare le tue dimissioni. Non è abbastanza buono.
Scaine,

3

Hai provato a modificare /etc/apt/apt.conf? Lo uso per usare apt dietro il nostro proxy aziendale.

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

Credo che apt usi questo valore a meno che $ http_proxy non sia definito nel proprio ambiente shell (ovvero $ http_proxy abbia la precedenza).


Non sono sicuro che apt.conf sia ancora in uso ... Quando ho aggiornato dall'8.04 al 10.04 ho finito con un aggiornamento impossibile, fino a quando non mi sono sbarazzato delle impostazioni proxy in quel file - quindi le impostazioni proxy impostate in Synaptic hanno iniziato a lavorare di nuovo ...
Little Jawa,

È strano - Uso apt.conf con 10.04. Trovo che le impostazioni in questo file siano separate da quelle configurate nella GUI delle preferenze del gestore pacchetti Synaptic.
Jon Brett,

1
Sì, apt.confdovrebbe ancora essere usato. Puoi vedere quali impostazioni di configurazione apt pensa siano state impostate usando apt-config dump.
Steve Beattie,

1

Se si desidera eseguire "sudo apt-get update" tramite proxy nella riga di comando, utilizzare il comando seguente,

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.