众所周知,yum安装软件是分省心也很方便的。不过在平时有可能遇到无法上网的问题,而无法连结源服务器进行软件安装或更新。生产环境中我也遇到了这样的问题。不过还好,所幸的是局域网内有台web备机是连结外网的。是windows服务器,使用ccproxy软件开启局域网代理。(linux下可以使用iptables nat或者squid server代理,当然还有很多其他方法,不一而足。)
linux不能上网的服务器上如果想通过上面开启代理的服务器进行连结时,有以下几种方法:
1、在 /etc/yum.conf 中定义代理服务器,配置 http_proxy=”http://ip或域名:端口” ftp_proxy=”ftp://ip或域名:端口” proxy_username=XXX proxy_password=XXXX 配置完后可直接yum,如果不生效,可以source一下,或者在文件内部再加export命令生效。(该处是全局配置,配置生效后,所有用户都可以通过代理使用。)
2、通过/etc/profile环境变量文件设置 http_proxy=”http://ip或域名:端口” ftp_proxy=”ftp://ip或域名:端口” proxy_username=XXX proxy_password=XXXX export http_proxy ftp_proxy proxy_username proxy_password source /etc/profile 使配置生效。
3、配置针对单个用户生效 配置其自已的环境变量文件~/.bash_profile,配置过程同上面一样,上面的写法也可以写生 http_proxy=”用户名:密码@http://ip或域名:端口” ftp_proxy=”用户名:密码@ftp://ip或域名:端口” export http_proxy ftp_proxy
注:环境变量 http_proxy 也为 curl 、wget其他工具所用,不过curl 要求环境变量的名称是小写。yum可以识别大写或小写的 http_proxy。
在使用yum 进行文件更新时,可能会遇到一大串python的错误,大致如下: Setting up Install Process
Traceback (most recent call last):
File “/usr/bin/yum”, line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File “/usr/share/yum-cli/yummain.py”, line 309, in user_main
…… File “/usr/lib/python2.4/urllib2.py”, line 580, in proxy_open
if ‘@’ in host:
TypeError: iterable argument required
解决方法: #yum clean all
#rm -f /var/lib/rpm/__db*
#rpm –rebuilddb #yum check-update
#yum update 如果操作了还是有File “/usr/lib/python2.4/urllib2.py”, line 580, in proxy_open的错误,这是因为代理配置有问题,看下是不是ftp代理未设置。因为源里有除有http站点外还有ftp站点。如果只想使用http源,可以把ftp源注释掉。另外看下代地址前是不是忘记了http://之类的字符串,还有是不是需要用户名密码认证。DNS设置是不是有也设置了(可以不设置,但最好设置上。)在此之前可以先用wget下载个东西试下。