Comment spécifier que Yum ne doit pas utiliser de proxy pour un domaine spécifique

12

Est-il possible de spécifier le domaine pour lequel yum doit contourner la configuration du proxy? J'ai bien peur que ce ne soit pas possible ...

J'ai lu qu'il était possible d'utiliser la variable d'environnement HTTP_PROXYalors NO_PROXY, est - il la solution la plus élégante?

[ÉDITER]

J'ai essayé la solution avec les variables d'environnement:

export HTTP_PROXY=http://user:pass@host:port
export http_proxy=http://user:pass@host:port
export no_proxy=.domain
export NO_PROXY=.domain

Yum utilise un proxy mais le repos * .domain n'est pas contourné.

[SOLUTION DE CONTOURNEMENT]

En utilisant http://cntlm.sourceforge.net/, je peux configurer le domaine à ignorer. Mais cela ne fonctionne qu'avec un proxy qui nécessite une authentification NTLM ...

chepseskaf
la source

Réponses:

26

Je n'ai pas pu faire fonctionner cela en utilisant des variables d'environnement comme vous le décrivez ici. Yum prend en charge les procurations lui-même, cependant, et vous devriez pouvoir faire quelque chose comme ceci:

proxy=http://proxy:port

Dans yum.confpuis en ajoutant

proxy=_none_

Dans les définitions de référentiel auxquelles vous ne souhaitez pas accéder via le proxy global. Ceci est détaillé (quoique succinctement) dans la page de manuel yum.conf.

sauge
la source
Réussi, enfin. Merci! Je ne veux pas revoir tous les hôtes où je l'ai fait. Mais serait-il également possible d'ajouter le proxy directement à ces fichiers repo là où il est nécessaire (par exemple, tous les dépôts avec des serveurs de packages externes, contrairement aux fichiers repo qui utilisent des gestionnaires de packages internes qui n'ont pas besoin de proxy)
erikbwork
1
proxy=_none_Génial, merci. C'est une cargaison de sauce géniale. Je vous voterais deux fois si je le pouvais :)
Scottie H
@erikbwork Je viens d'ajouter un proxy=http://proxy:portfichier à mon fichier .repo et cela a fonctionné. C'est bien ce que vous demandez?
Scottie H
4

Si je comprends bien cette question, le comportement souhaité est

packages.centos.com est extrait via un proxy.

packages.internal.lan va directement sans passer par le proxy.

Je viens d'arriver ici après avoir googlé comment le faire moi-même et utilisé les informations ci-dessus pour atteindre ce que je voulais, mais je ne suis pas sûr que la réponse ci-dessus soit complète.

Pour ce faire, j'ai utilisé ce qui suit.

export HTTP_PROXY=http://myproxy.internal.lan:port

export no_proxy=internal.lan

yum install package1 package2

package1 a été retiré d'Internet via le proxy,

package2 a été retiré de mon miroir local ne passant pas par le proxy.

Geai
la source
3

Ma solution consiste à configurer Privoxy, un proxy http léger.

yum install privoxy

Ajoutez deux clauses avant dans / etc / privoxy / config:

 forward / myproxy.internal.lan:3128
 forward .internal.lan .

Et désactivez également les actions par défaut de privoxy (assurez-vous qu'aucun en-tête n'est corrompu): (@line 175 dans la configuration privoxy RHEL5)

#actionsfile standard  # Internal purpose, recommended
#actionsfile default   # Main actions file
#actionsfile user      # User customizations

Ensuite, configuration de la variable d'environnement http_proxy et ftp_proxy sur le port privoxy:

declare -x http_proxy = http://127.0.0.1:8118

declare -x ftp_proxy = http://127.0.0.1:8118

yum install package1 package2

Remarque: si vous avez des lignes proxy dans yum.conf, supprimez-les, cela remplacerait la variable d'environnement.

YudhiWidyatama
la source
Je cherchais des moyens de mettre des hôtes sur liste blanche de privoxy et j'ai ma réponse ici :)
ahmadali shafiee
2

Vous pouvez simplement le spécifier dans le fichier repo. Par exemple:

[hduser@n0 cloudera-manager-installer]$ cat /etc/yum.repos.d/cloudera-cdh4.repo  
[cloudera-cdh4]  
name=Cloudera's Distribution for Hadoop, Version 4  
baseurl=http://"yourhost"/cdh4/  
gpgcheck = 0
enabled=1
proxy=_none_
lzhshen
la source