12

Is it possible to specify domain for which yum should bypass proxy configuration ? I'm afraid this is not possible...

I read that it was possible to use the environment variable HTTP_PROXY then NO_PROXY, is it the most elegant solution?

[EDIT]

I tried the solution with the environment variables:

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 uses proxy but the repos *.domain are not bypassed.

[WORKAROUND]

Using http://cntlm.sourceforge.net/ I can configure which domain should be ignore. But this wotks only with proxy that requires NTLM authentication...

25

I have not been able to get this to work using environment variables as you describe here. Yum does support proxies itself, however, and you should be able to do something like this:

proxy=http://proxy:port

Into yum.conf and then adding

proxy=_none_

Into the repo definitions you don't want to access via the global proxy. This is detailed (albeit succinctly) in the yum.conf man page.

  • Successful, finally. Thanks! I don't want to go through all the hosts again where I did it. But would it also be possible to add the proxy directly to these repo files where it is needed (e.g. all repos with external package servers, in contrast to the repo files that use internal package managers which don't need proxy) – erikbwork Jun 27 '18 at 12:06
  • 1
    proxy=_none_ Brilliant, thanks. That is a ship load of awesome sauce. I'd up-vote you twice if I could :) – Scottie H Feb 26 at 0:41
  • @erikbwork I just added a proxy=http://proxy:port to my .repo file and it worked. Is that what you are asking? – Scottie H Feb 26 at 0:44
4

If I understand this question correctly the desired behaviour is

packages.centos.com gets pulled via a proxy.

packages.internal.lan goes direct without going via the proxy.

I've just arrived here having googled how to do this myself, and used the above info to achieve what I wanted, however I'm not sure if the above answer is complete.

To do this I used the following.

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

export no_proxy=internal.lan

yum install package1 package2

package1 got pulled from the internet via the proxy,

package2 got pulled from my local mirror not going through the proxy.

3

My solution involves setting up Privoxy, a light http proxy.

yum install privoxy

Add two forward clauses in /etc/privoxy/config :

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

And also disable privoxy's default actions (ensure no header got corrupted) : (@line 175 in RHEL5 privoxy config)

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

Then setting up http_proxy and ftp_proxy environment variable to privoxy's port:

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

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

yum install package1 package2

Note: if you have proxy lines in yum.conf, remove it, it would override the environment variable.

  • I was looking for ways to whitelist hosts from privoxy and I've got my answer here :) – ahmadali shafiee Jan 13 at 13:33
2

You can just specify it in the repo file. For example:

[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_

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.