yum 是linux环境安装软件包的一种方式。
很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件
yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库
如果你的linux环境不能访问外网,那你装yum没有意义,因为他需要访问http的仓库里面的。
当然如果你有本地仓库,就把/etc/yum.repos.d改一下地址就可以
安装:
所有操作均在ROOT用户下,系统版本是
[root@test2 ~]# uname -an Linux test2 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [root@test2 ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
一、删除原有YUM
# rpm -aq|grep yum|xargs rpm -e --nodeps
二、下载yum,注意自己的LINUX系统版本,是什么版本就进相关版本目录去下载。但小版本的目录就不用进了。如版本是6.5,就只需进6 目录,版本是 7.2,只需进7目录。
打开浏览器,登录 http://mirrors.163.com/centos/7/os/x86_64/Packages/ ,找四个文件,如下:(*号代表小版本号,不同版本不同)
1、yum-*.rpm 2、yum-metadata-parser-*.rpm 3、yum-plugin-fastestmirror-*.rpm 4、python-iniparse-*.rpm
使用wget 下载,前提是你的环境可以上外网。我是下载后自己ftp上传上去的
python-urlgrabber-3.10-8.el7.noarch.rpm yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm yum-3.4.3-154.el7.centos.noarch.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm python-iniparse-0.4-9.el7.noarch.rpm
三、下载完之后,安装YUM
因文件有相互依赖性,注意顺序,故先安装python-iniparse-*.rpm 文件
# rpm -ivh python-iniparse-0.4-9.el7.noarch.rpm # rpm -ivh yum-metadata-parser-1.1.4-10.el7.x86_64.rpm # rpm -ivh yum-3.4.3-154.el7.centos.noarch.rpm yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm
注:rpm -ivh 要安装的rpm --nodeps --force (加上 --nodeps --force 为強制安裝,不管依赖性文件)
安装完之后,可以使用rm 命令删除当前目录下的RPM文件(装完就没有用处了)。
四、修改来源文件
1、进入到系统yum源的目录下:
#cd /etc/yum.repos.d
2、下载yum源:
进入:http://mirrors.163.com/.help/centos.html
里面有下载对应版本repo文件, 放入/etc/yum.repos.d/(操作前请做好相应备份)
#wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
3、修改repo源: 将文件中的$releasever替換成7 (7是指LINUX版本號)
修改$basearch 改成操作系统版本:x86_64(也可以不替换)
#vi CentOS6-Base-163.repo
更改后的效果:
[base] name=CentOS-7 - Base - 163.com #mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=os baseurl=http://mirrors.163.com/centos/7/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-7 - Updates - 163.com #mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=updates baseurl=http://mirrors.163.com/centos/7/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-7 - Extras - 163.com #mirrorlist=http://mirrorlist.centos.org/?release=7&arch=$basearch&repo=extras baseurl=http://mirrors.163.com/centos/7/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-7 - Plus - 163.com baseurl=http://mirrors.163.com/centos/7/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
baseurl地址是外网,本地主机要能连接外网,否则白扯。一般公司都有内部镜像
gpgkey没有的话,将gpgcheck设置0
4、改名成默认repo
#mv CentOS7-Base-163.repo CentOS7-Base.repo (这步可做可不做)
5、导入key(具体啥用不知道)
rpm --import RPM-GPG-KEY-CentOS-7
五、运行makecache 生成缓存
#yum makecache
六、运行yum clean all(等同于 yum cleanheaders ; yum cleanpackages);
#yum clean all
七、更新YUM文件
#yum update
八、是否安装成功
yum install perl-DBI
提示安装,就说明可以了。
问题:No module named yum错误的解决办法
今天用yum安装软件的时候出现如下错误:
There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named yum Please install a package which provides this module, or verify that the module is installed correctly. It’s possible that the above module doesn’t match the current version of Python, which is: If you cannot solve this problem yourself, please go to the yum faq at:
yum和Python是依赖关系,yum是python的模块,所以采用以下解决方案:
[root@test2 yum]# whereis python python: /usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz
注意是python2.7
所以修改yum的配置,修改文件:
vim /usr/bin/yum
修改头
#!/usr/bin/python => #!/usr/bin/python2.7
此方法存在弊端,因为后面会报错:
yum 出现错误ImportError: No module named urlgrabber.grabber
是因为
/usr/libexec/urlgrabber-ext-down
把头部的python改成和/usr/bin/yum中一样的。
所以最好软连接方式:
ln -s python2.7 python
解决