Comment exécuter “sudo apt-get update” via un proxy en ligne de commande?

Réponses:

91

Dans certaines versions, sudo est configuré de manière à ce que toutes les variables d'environnement soient toutes effacées lors de l'exécution de la commande. Pour conserver la valeur de votre http_proxy et résoudre ce problème, vous devez modifier / etc / sudoers, exécutez:

visudo

Ensuite, trouvez une ligne qui dit:

Defaults env_reset 

et ajouter après:

Defaults env_keep = "http_proxy ftp_proxy" 

Les choses vont commencer à fonctionner comme prévu.

Merci à kdogksu des forums Ubuntu d’avoir trouvé la solution à ce problème .

Afin de corriger non seulement apt-get, mais également les utils graphiques X11 tels que, par exemple, synaptic, mintintall, ...), la ligne suivante /etc/sudoersdevrait faire l'affaire:

Defaults env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY"
paulo.albuquerque
la source
7
Serait-il nécessaire d'ajouter "https_proxy" aussi?
TenLeftFingers
2
$ export http_proxy = " utilisateur: mot de passe @ serveur proxy: port " et si votre mot de passe contient des caractères spéciaux - cyberciti.biz/faq/…
Alex Punnen
2
'env_keep' doit-il être ajouté après 'env_reset' ou placé à sa place? Ils ont l’air opposés, alors est-il judicieux de garder les deux?
Rodrigo
Par défaut env_keep = "http_proxy https_proxy ftp_proxy DISPLAY XAUTHORITY" a fonctionné pour moi! Merci ! -
Ronald
1
Je suis tombé sur cela après beaucoup de navigation. Cela a résolu mon problème.
Sudipta Basak le
40

Utilisez ceci.

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

C'est ce que j'utilise. Fonctionne parfaitement.

Apt permet également de placer des paramètres individuels dans des fichiers sous /etc/apt/apt.conf.d/. Cela a donc exactement le même effet que précédemment, mais peut être plus facile à gérer si vous avez d'autres lignes dans le .conffichier:

ubuntu@ubuntu:~$ cat /etc/apt/apt.conf.d/05proxy
Acquire::http::Proxy "http://Username:[email protected]:8080";
John Cartwright
la source
5
Je recommande de modifier ceci pour expliquer comment ajouter cette ligne au fichier de configuration. Tenter d'exécuter ces lignes sur la ligne de commande ne le fera pas. Pour le moment, cette réponse est basée sur une idée correcte mais ne sera pas utile pour un novice. Il est même pas tout à fait clair que vous dites que la ligne devrait être ajouté à apt.conf.
Eliah Kagan
impressionnant !!!! fonctionne à merveille
Shantanu Bedajna
Sur mon système, je devais créer un fichier sous /etc/apt/apt.conf.d mais avec un petit détail - fonctionnait très bien
dldnh
1
@dldnh: Vous pouvez créer le fichier /etc/apt/apt.confou utiliser placer un fichier de configuration dans /etc/apt/apt.conf.d.... soit cela fonctionne! :-)
Paul Calabro
n'oubliez pas le point-virgule ou vous obtiendrezE: Syntax error /etc/apt/apt.conf:2: Extra junk at end of file
Florian Castellane
18

La chose qui a fonctionné pour moi était:

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

Ce qui est un peu étrange, simplement parce que simplement exporter http_proxy puis exécuter sudo echo $ http_proxy imprimait docilement la valeur exportée

Sam
la source
1
$http_proxyse développe avant même que sudo ne soit exécuté.
Jeremy List
1
Cela a très bien fonctionné dans un fichier Dockerfile!
Cory Ringdahl
N'oubliez pas le port pour le proxy si nécessaire :)
Gilad Peleg
11
export http_proxy=http://proxyusername:proxypassword@proxyaddress:proxyport
sudo apt-get update

L'exportation ne devrait pas sudoêtre nécessaire et si votre proxy est anonyme, abandonnez simplement la proxyusername:proxypassword@pièce.

Oli
la source
:-(, je reçois l'erreur "Accès au service de proxy Web refusé!"
Renjith G
Les mêmes paramètres de proxy fonctionnent-ils pour quelque chose de simple, comme wget?
Oli
oui ..la même erreur qui se répète ...
Renjith G
2
Qu'en est-il de l'édition de /etc/apt/apt.conf avec Acquire :: http :: Proxy " MYDOMAIN \ MYNAME: [email protected]: MYPORT"?
Renjith G
Vous pouvez également ajouter ceci à votre ~ / .bashrc. Risque de sécurité horrible cependant.
Scaine
3

S'il s'agit d'une configuration temporaire , vous pouvez essayer ceci: sudo bash -c 'http_proxy = "http: // <hôte_proxy>: <proxy_port> /" apt-get update "

Vous en avez besoin, car la variable d'environnement doit être définie pour le compte "racine". Faire et exporter avant ne devrait pas marcher.

Pour une configuration permanente , vous devrez modifier un fichier système. Ceci est déjà décrit dans la réponse suivante à propos de Comment vérifier que le proxy réseau est réellement appliqué? .

Huygens
la source
:-(, je reçois l'erreur "Accès au service de proxy Web refusé!"
Renjith G
Vous devez probablement entrer un identifiant et un mot de passe, n'est-ce pas? Si tel est le cas, http_proxy devrait avoir la forme "http: // <utilisateur>: <pass> @ <hôte>: <port> /"
Huygens
3

Ubuntu est incroyablement hostile à l'authentification des mandataires. J'utilise un ordinateur portable Ubuntu au travail et le nombre de casse est incroyable.

Synaptic, Apt, Firefox, Chromium, etc. utilisent différentes méthodes pour spécifier un proxy et il n’existe nulle part où spécifier des informations d’authentification en toute sécurité.

Quelques bugs sur le sujet: 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

La suggestion d'Oli d'utiliser un export est le seul moyen vaguement sécurisé de le faire. Il est également parfois possible de "fudge" la prise en charge du proxy si le serveur proxy utilise une authentification secondaire pour minimiser la charge sur les serveurs d'authentification principaux (par exemple, Active Directory). C'est là que la première connexion proxy est authentifiée par le proxy contre AD, puis pendant une période de temps définie (généralement 5 minutes), toutes les autres connexions sont "approuvées" pour devenir cet utilisateur. Par conséquent, vous pouvez ouvrir Firefox, naviguer sur Internet (n'importe où), puis essayer votre utilitaire (wget, synaptic, ou autre) en spécifiant un proxy, mais en laissant le nom d'utilisateur vide.

Ubuntu est généralement hostile à tout environnement d'entreprise simplement parce qu'il permet de lire les mots de passe aussi facilement. Seahorse est un coupable majeur, mais Network Manager est également choquant - connectez-vous à n’importe quel réseau authentifié PEAP et vous venez de stocker votre mot de passe dans l’applet pour que tout le monde sache qui peut emprunter votre ordinateur portable. Apparemment, le partage d'ordinateurs portables est considéré comme un sacrilège sur Linux, car les développeurs de Seahorse ont rejeté les allégations d'insécurité. Après cela, je n’ai pas eu le courage de contacter les développeurs du gestionnaire de réseau.

Scaine
la source
Je recommande Cntlm comme un remède pour cela. Il gère l'authentification avec AD et vous définissez tous vos paramètres de proxy pour utiliser 127.0.0.1 sans nécessiter d'informations d'identification.
laz
Si vous devez vous authentifier auprès d'un autre ordinateur, le mot de passe en clair doit être stocké. Le "cryptage" n'apporte aucune sécurité, car la clé de cryptage doit être stockée sur le même appareil pour que les mots de passe soient disponibles.
Jeremy List
Jeremy, vous adoptez la même approche on / off de la sécurité que les développeurs de Seahorse. Je ne dis pas pour rendre ce genre de choses impossible, mais simplement pour le rendre difficile. À l'heure actuelle, voler les informations d'identification d'un ordinateur portable Ubuntu déverrouillé est trivial - peut-être cinq clics et vous l'aurez. La même chose n’est pas vraie pour Windows: c’est peut-être encore possible, mais même moi, je ne saurais pas le faire. Il n’existe pas de moyen simple de lever un mot de passe d’une machine Windows dans les 10 minutes ou vous pouvez laisser un poste de travail déverrouillé par accident. Faites de même dans Ubuntu et vous pourriez aussi remettre votre démission. Ce n'est pas assez bon.
Scaine
3

Avez-vous essayé l'édition /etc/apt/apt.conf? J'utilise ceci pour utiliser apt derrière notre proxy d'entreprise.

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

Je crois qu'apt utilise cette valeur sauf si $ http_proxy est défini dans votre environnement shell (c'est-à-dire que $ http_proxy est prioritaire).

Jon Brett
la source
Je ne suis pas sûr que apt.conf soit toujours utilisé ... Quand j'ai mis à jour de 8.04 à 10.04, j'ai eu une mise à jour impossible, jusqu'à ce que je me suis débarrassé des paramètres de proxy de ce fichier - les paramètres de proxy définis dans Synaptic ont alors commencé à travailler à nouveau ...
Little Jawa
C'est étrange - j'utilise apt.conf avec 10.04. Je trouve que les paramètres de ce fichier sont distincts de ceux configurés dans l'interface graphique des préférences du gestionnaire de paquets Synaptic.
Jon Brett
1
Oui, apt.confdevrait toujours être utilisé. Vous pouvez voir quels paramètres de configuration apt pense avoir été définis en utilisant apt-config dump.
Steve Beattie
1

Si vous voulez exécuter “sudo apt-get update” via un proxy en ligne de commande, utilisez la commande ci-dessous,

sudo apt-get -o Acquire::http::proxy="http://user:password@host:port/" update;
Prashant Adlinge
la source