linux包之包管理命令rpm-yum

背景

YUM(Yellow dog Updater, Modified)为多个Linux发行版的前端软件包管理器,例如 Redhat RHEL, CentOS & Fedora.  YUM通过调用RPM的软件包信息让用户更方便地进行软件安装,升级,卸载等软件包管理操作。
yum客户端采用python编写,采用sqlite存储 rpm客户端采用c编写,采用bdb存储 http://www.rpm.org/
The RPM Package Manager (RPM) is a powerful command line driven package management system capable of installing, uninstalling, verifying, querying, and updating computer software packages.
http://yum.baseurl.org/
Yum Package Manager
Yum is an automatic updater and package installer/remover for rpm systems. https://trac.edgewall.org/about
Trac是基于web的软件项目管理和缺陷/事务追踪系统. 强调使用方便, 而不是其外在形式. 它提供了集成Wiki/版本控制系统界面, 以及更多方便的项目管理渠道, 来掌控项目的事件和变化. http://refspecs.linuxfoundation.org/lsb.shtm
相关包及文件centos7

[root@my yum.repos.d]# rpm -qa|grep yum
yum-metadata-parser-1.1.4-10.el7.x86_64
yum-plugin-fastestmirror-1.1.31-29.el7.noarch
yum-3.4.3-125.el7.centos.noarch [root@my yum.repos.d]# rpm -qa|grep rpm
rpm-build-libs-4.11.1-25.el7.x86_64
rpm-libs-4.11.1-25.el7.x86_64
rpm-4.11.1-25.el7.x86_64
rpm-python-4.11.1-25.el7.x86_64 fastestmirror配置文件:(一般不用动)
/etc/yum/pluginconf.d/fastestmirror.conf
你的yum镜像的速度测试记录文件:
/var/cache/yum/timedhosts.txt [root@manage ~]# file /tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx
/tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx: ASCII text
[root@manage ~]# less /tmp/yum_save_tx-2016-03-29-17-24zCwK6e.yumtx [root@localhost ~]# cat /etc/yum.conf [main]
cachedir=/var/cache/yum/$basearch/$releasever         #yum下载的RPM包的缓存目录
keepcache=0             #缓存是否保存,1保存,0不保存。
debuglevel=2             #调试级别(0-10),默认为2(具体调试级别的应用,我也不了解)。
logfile=/var/log/yum.log         #yum的日志文件所在的位置
exactarch=1             #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes=1             #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck=1             #是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins=1             #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit=3         #允许保留多少个内核包。
exclude=selinux*         #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
distroverpkg=centos-release
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo

name,是对repository的描述,支持像$releasever $basearch这样的变量;  
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。 [fedora]      #方括号里面的是软件源的名称,将被yum取得并识别
name=Fedora $releasever - $basearch   #这里也定义了软件仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本,通常是8,9,10等数字,$basearch变量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,这可以方便yum升级的时候选择适合当前系统的软件包,以下同……
failovermethod=priority   #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,roundrobin表示在列出的服务器中随机选择
exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,可以使用通配符,并以空格分隔,可以视情况需要自行添加
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址)
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
#上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
http://mirrors.fedoraproject.org/mirrorlist?repo=rhel-7&arch=x86_64
http://mirrors.fedoraproject.org/mirrorlist?repo=rhel-6&arch=x86_64 http://mirror.symnds.com/distributions/CentOS/6.5/os/x86_64/repodata/
http://mirror.symnds.com/distributions/CentOS/$releasever/os/$basearch/
yum命令

怎么使用YUM命令升级所有RPM软件包?
yum update
怎么使用YUM命令升级单个RPM软件包
yum update 软件名称
使用YUM安装RPM软件包
yum install 软件名称
使用YUM升级全部软件时怎么排除个别软件,假如你想升级所有软件包,但不想升级内核,就可以用下面的命令:
yum --exclude=package kernel* update
怎么使用YUM来确定某个软件需要升级,下面的命令会检测 Fedora/CentOS/RHEL上的所有软件是否需要升级
check-update
使用YUM卸载软件
yum remove 软件名称 或者 yum erase 软件名称
使用YUM查看软件包相关信息
yum list可以让你获取软件包相关信息,后面不指定软件包名的话,它会列出所有软件包的信息。 yum list 软件名称
使用yum了解软件的主要功能
比如你想知道httpd这个软件是干吗的,可以输入下面的的命令: yum provides httpd
使用YUM查找软件包
如果你不知道某个软件包的全称,这个命令就非常有用了,它会根据你提供的关键词在RPM的软件包数据库里搜索相适配的软件包。比方说我想找 samba这个软件的全称,我只需要输入下面的命令即可: yum search samba
使用YUM查看软件包的基本信息
yum info samba
怎么清除YUM缓存和下载包文件
每安装一个软件包,YUM都是先下载一个RPM软件包然后再安装,安装完后并不会自动删除。时间长了,这些文件占很多空间的。所以,需要定时清理: yum clean all
怎么使用YUM安装本地RPM包
如果你想要自己创建一个RPM软件包,你可以用YUM来确定存在哪些依赖关系: yum localinstall 软件名称.rpm
使用YUM升级本地RPM软件包
如果你想升级一个本地RPM软件包,可以用下面的命令: yum localupdate update-package.rpm
确定RPM包依赖哪些组件
如果你想自己源码安装软件,了解安装的软件包依赖哪些软件非常有必要的。deplist可以让你知道软件包依赖哪些组件,这些组件的全称是什么。 yum deplist 软件名称
查看YUM的版本信息
yum -v
使用YUM安装软件包到chroot环境(chroot)
你可以使用下面的命令把软件安装到chroot: yum --installroot=/path/to/chroot/
使用YUM启用已存在的软件源
如果你安装了第三方的软件源,你需要先启用该软件源才能从其安装软件,输入下面的命令启用EPEL软件源: yum --enablerepo=epel install rsnapshot
使用YUM禁用软件源
如果你安装了第三方软件源但不想从其安装软件,可以用下面的命令禁用: yum --disablerepo=epel install 软件名称
YUM软件集合
YUM软件集合是指多个共同协作的软件统称,比如“Development Tools”(开发工具)。 下面介绍下怎么用yum groupinstall命令来查看/安装/卸载yum软件集合
安装yum软件集合
yum groupinstall 'Development Tools'
卸载yum软件集合
yum groupremove 'Development Tools'
升级yum软件集合
yum groupupdate 'Development Tools'
查看yum软件集合信息
yum groupinfo 'Development Tools'
查看有哪些软件集合
yum grouplist | more
使用YUM输出已安装软件包列表
该命令适用所有使用YUM为软件管理器的linux版本,如CentOS, Fedora, RHEL: yum list installed yum [options] COMMAND package_name
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
安装最快镜像插件:       yum install yum-fastestmirror
安装yum图形窗口插件:    yum install yumex
显示所有已经安装和可以安装的程序包    yum list 蓝色已安装,白色未安装
显示库    yum repolist [root@localhost ~]# yum list installed|wc -l
276
[root@localhost ~]# rpm -qa|wc -l
220
这两个的数量是有差异的 可以在命令前加help查看具体的帮助,非常方便,意识到这一点是对yum的一次本质提升(20160412才意识到)
[root@localhost ~]# yum help list
Loaded plugins: fastestmirror
list [PACKAGE|all|installed|updates|extras|obsoletes|recent] List a package or groups of packages [root@localhost ~]# yum search varnish
[root@localhost ~]# yum search all varnish
[root@localhost ~]# yum provides varnish
[root@localhost ~]# yum list varnish
[root@localhost ~]# yum install varnish
[root@localhost ~]# yum info varnish
[root@localhost ~]# yum localinstall varnish.rpm
[root@localhost ~]# yum deplist httpd
[root@localhost ~]# cat /etc/yum.conf
[root@localhost ~]# cat /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
rm -rf /var/cache/yum/* [root@localhost dd]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                                 repo name                                                                       status
base                                                                    CentOS-6 - Base                                                                 6,367
repolist: 6,367 可以用whatprovides来确定哪个包提供了这个命令
[root@localhost base]# yum whatprovides which
[root@localhost base]# yum whatprovides awk
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Warning: 3.0.x versions of yum would erroneously match against filenames.
 You can use "*/awk" and/or "*bin/awk" to get that behaviour
No Matches found erroneously
adv. 错误地;不正确
下面这两个输出是不一样的
[root@localhost base]# yum whatprovides *awk
[root@localhost base]# yum whatprovides */awk [root@localhost dd]# yum clean
Loaded plugins: fastestmirror
Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
[root@localhost dd]# yum history
Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     9 | root <root>              | 2014-09-20 00:23 | Install        |    2
     8 | root <root>              | 2014-09-20 00:21 | Install        |    2
     7 | root <root>              | 2014-09-20 00:20 | Install        |    1
     6 | root <root>              | 2014-09-20 00:06 | Erase          |    1
     5 | root <root>              | 2014-09-20 00:02 | Install        |    1
     4 | root <root>              | 2014-09-20 00:01 | Erase          |    1
     3 | root <root>              | 2014-09-19 23:46 | Install        |    1
     2 | root <root>              | 2014-09-18 17:46 | Install        |    7
     1 | System <unset>           | 2014-09-18 17:32 | Install        |  205
history list [root@localhost dd]# yum --help |egrep "remove|erase"
erase          Remove a package or packages from your system
groupremove    Remove the packages in a group from your system [root@localhost dd]# yum deplist gcc
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Finding dependencies:
package: gcc.x86_64 4.4.7-4.el6
  dependency: libgcc >= 4.4.7-4.el6
   provider: libgcc.i686 4.4.7-4.el6
   provider: libgcc.x86_64 4.4.7-4.el6
  dependency: /sbin/install-info
   provider: info.x86_64 4.13a-8.el6
  dependency: libgomp.so.1()(64bit)
   provider: libgomp.x86_64 4.4.7-4.el6
  dependency: cloog-ppl >= 0.15
   provider: cloog-ppl.x86_64 0.15.7-1.2.el6
   provider: cloog-ppl.i686 0.15.7-1.2.el6
  dependency: glibc-devel >= 2.2.90-12
   provider: glibc-devel.x86_64 2.12-1.132.el6
   provider: glibc-devel.i686 2.12-1.132.el6
  dependency: cpp = 4.4.7-4.el6
   provider: cpp.x86_64 4.4.7-4.el6
  dependency: binutils >= 2.19.51.0.14-33
   provider: binutils.x86_64 2.20.51.0.2-5.36.el6
  dependency: libgomp = 4.4.7-4.el6
   provider: libgomp.x86_64 4.4.7-4.el6
   provider: libgomp.i686 4.4.7-4.el6
  dependency: rtld(GNU_HASH)
   provider: glibc.i686 2.12-1.132.el6
   provider: glibc.x86_64 2.12-1.132.el6
  dependency: libc.so.6(GLIBC_2.7)(64bit)
   provider: glibc.x86_64 2.12-1.132.el6
  dependency: /bin/sh
   provider: bash.x86_64 4.1.2-15.el6_4
  dependency: libgcc_s.so.1()(64bit)
   provider: libgcc.x86_64 4.4.7-4.el6
[root@localhost dd]# yum search w3m
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
====================================================================== N/S Matched: w3m ======================================================================
w3m-img.x86_64 : A helper program to display the inline images for w3m
w3m.x86_64 : A pager with Web browsing abilities   Name and summary matches only, use "search all" for everything. 必须选择下面的基本模式:Query, Verify,  Signature  Check, Install/Upgrade/Freshen, Uninstall, Initialize Database, Rebuild Database, Resign, Add Signature, Set Owners/Groups, Show Querytags, and Show Configuration。 rpm一般选项:可以用于所有的不同的模式中。
-vv rpm查询选项的通用格式:
rpm {-q|--query} [select-options] [query-options]
有两个查询的子集选项:包选择和包查询选择。即[select-options]和[query-options]
包选择选项:[select-options]
rpm -q tcpdump
rpm -qa
rpm -qf /usr/bin/bash
rpm -qg 组包名 包查询选择:[query-options]
rpm -q pam --changelog    查询包更改历史
rpm -qc pam    只列出配置文件
rpm -qc pam -vv
rpm -qd pam    只列出帮助文件
rpm -qi pam    显示包信息
rpm -qa --last|more      以包安装的顺序来列出包内容,结果是最后一个安装的包在最上层列出。
rpm -ql pam
rpm -q pam --provides
rpm -qR pam    列出依赖的包
rpm -q pam --scripts rpm -qpl http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm安装的通用命令如下:
rpm {-i|--install} [install-options] PACKAGE_FILE ... PACKAGE_FILE    形如oracle-instantclient-sqlplus-10.2.0.3-1.x86_64.rpm
PACKAGE_NAME    形如oracle-instantclient-sqlplus
yum源(软件仓库)
yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件源(光盘,iso,自定义的rpm包等),但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
在执行yum update命令的时候,这一步就是yum会从服务器的header目录下载rpm的header,放在本地的缓存中。
yum 的大致原理: yum会检查 $baseurl/repodata/repomd.xml,这个索引文件,找不到的会失败的。所以添加软件库的时候要注意一下,特别是第3方软件库.
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.
[root@localhost ~]# cd /var/cache/yum/x86_64/6/;ls
/etc/yum.repos.d/下面启用的源,cache目录下才会有相关的目录。
yum就是根据存放在这里的这些rpm的header来检测系统中安装的软件(rpm软件包)是不是最新版本,需不需要update.
如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,
[root@localhost yum]# yum clean
Loaded plugins: fastestmirror
Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
默认启用了base,updates,extras三个源
[root@localhost yum]# grep '\[' /etc/yum.repos.d/CentOS-Base.repo
[base]
[updates]
[extras]
[centosplus]
[contrib] yum的配置一般有两种方式,一种是直接配置/etc目录下的yum.conf文件,另外一种是在/etc/yum.repos.d目录下增加.repo文件。
http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/10/09/2203916.html 1.构建本地yum源
本地软件源(光盘,iso,自定义的rpm包等)

光盘

默认有这个文件,就不需要新建repo文件了
[root@localhost yum]# less /etc/yum.repos.d/CentOS-Media.repo
[root@localhost yum]# mkdir /media/cdrom;mount /dev/sr0 /media/cdrom
[root@localhost yum]# rm -rf /var/cache/yum/*
[root@localhost yum]# rm -rf /tmp/yum* yum --disablerepo=\* --enablerepo=c6-media
yum --disablerepo=base,updates,extras --enablerepo=c6-media
[root@localhost yum]# yum --enablerepo=c6-media --disablerepo=\* install perl
Loaded plugins: fastestmirror
Determining fastest mirrors
 * c6-media:
file:///media/CentOS/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/CentOS/repodata/repomd.xml
Trying other mirror.
file:///media/cdrecorder/repodata/repomd.xml: [Errno 14] Could not open/read file:///media/cdrecorder/repodata/repomd.xml
Trying other mirror.
c6-media                                                 | 4.0 kB     00:00 ...
c6-media/primary_db                                      | 4.4 MB     00:00 ...
Setting up Install Process

自定义rpm 1、将所有的rpm包拷贝到一个目录中,此处放在/mnt/local/下
2、安装createrepo包
rpm -ivh createrepo-0.9.8-4.el6.noarch或者
yum install createrepo
3、createrepo -v /mnt/local    #-v指定
#vi local.repo
[local]
name=local
baseurl=file:///mnt/local/
gpgcheck=0
#yum clean all
#yum --enablerepo=local --disablerepo=\* install 包名
iso

mount -o loop -t iso9660 rhel6.iso /mnt/iso/
这时在local.repo文件添加
[server]                             
name=RHEL                       
baseurl=file:///mnt/iso/   
gpgcheck=0                     
#yum clean all
#yum --enablerepo=server --disablerepo=\* install perl
与上相同 2.构建远程yum源 架设本地,远程(ftp,http都可以)
首先架设vsftp服务器
rpm -ivh Createrepo-xxx.rpm
createrepo /var/ftp/pub/     #生成数据库
/etc/init.d/vsftpd start     #启动ftp服务
baseurl=ftp://192.168.1.88/pub/
安装单个服务已经可以了,下面我们来解决安装组包的问题
修改文件:/usr/lib/python2.4/sit-pachages/yum/yumRepo.py
#第441行vi +441 /usr/lib/python2.4/sit-pachages/yum/yumRepo.py
#敲命令将 remote= url + '/' +relative  修改为  remote= "/var/ftp/pub/Server" + '/' +relative
http类似于ftp,只是路径不同,协议不同而已。http方式是将源文件放入html目录中 http源
# vim /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/rhel/4.2/
enabled=1
gpgcheck=0 因网络慢问题,可以先下载所有安装包,然后创建本地源:
yum -y install httpd createrepo
wget -c -r -nd -A rpm http://cloudstack.apt-get.eu/rhel/4.2/ -P /var/www/html/4.2
createrepo /var/www/html/4.2/
service httpd start -c 断点续传
-nd 递归下载时不创建一层一层的目录,把所有的文件下载到当前目录
-A 指定分号分隔的被接受扩展名的列表 yum配置改为:
[cloudstack]
name=cloudstack
baseurl=http://<http_server_ip>/4.2  #修改成自己服务器的IP地址
enabled=1
gpgcheck=0 3.第三方源

epel源
Extra Packages for Enterprise Linux(企业版 Linux 附加软件包)(以下简称 EPEL)是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版 Linux(RHEL)及其衍生发行版(比如 CentOS、 Scientific Linux)的一个高质量附加软件包项目。
EPEL 的软件包通常不会与企业版Linux官方源中的软件包发生冲突,或者互相替换文件。EPEL与Fedora项目基本一致,包含完整的构建系统、升级管理器、镜像管理器等等。
EPEL 包含一个叫做epel-release的包,这个包包含了EPEL源的gpg密钥和软件源信息。您可以通过yum安装到您的企业版Linux发行版上。除了epel-release源,还有一个叫做epel-testing的源,这个源包含最新的测试软件包,其版本很新但是安装有风险,请自行斟酌。
注意: 有些第三方软件源需要 EPEL 的'epel-testing'源来安装依赖组件,请务必在系统设置中启用本源。这里有相关的开启教程。(相关配置文件位于:/etc/yum.repos.d/epel-testing.repo)。 首先安装epel包,下面两种方法均可以
#yum install epel-release或者下面的
#rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
#rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
先查看一下这个包都安装了那些文件
rpm -qpl http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
导入key:
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 注意:
1、要安装最新版本的EPEL,请前往 http://mirrors.ustc.edu.cn/fedora/epel/ 中查找最新版本的URL地址,这里采用的是6.8版本
32位:http://mirrors.ustc.edu.cn/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
64位:http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
2、若出现下面类似错误,则表示对应的URL已经不存在,需要重新找EPEL的版本,请前往 http://mirrors.ustc.edu.cn/fedora/epel/ 获取需要的版本
如下报错,安装epel-release成功,但没有提示导入key。
[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum install x2goserver x2goserver-xsession
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解决办法是
处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。
163的yum源

1.导入CentOS-6的GPG证书
rpm –import http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
http://mirrors.163.com/.help/centos.html
2.让yum使用163的yum源:
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 先备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
再下载对应版本的库文件
curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
curl -O http://mirrors.163.com/.help/CentOS6-Base-163.repo
再生成缓存
yum clean all
yum makecache 3.修改repo文件
在所有mirrorlist前面加上#,把所有$releasever替换成6,保存
sed -i ‘/mirrorlist/d’ CentOS-Base-163.repo
sed -i ‘/\[addons\]/,/^$/d’ CentOS-Base-163.repo
sed -i ‘s/\$releasever/6/’ CentOS-Base-163.repo
sed -i ‘s/RPM-GPG-KEY-CentOS-5/RPM-GPG-KEY-CentOS-6/’ CentOS-Base-163.repo
4.清理并重新生成yum缓存
yum clean metadata 安装额外的软件仓库:
rpm.livna.org 的软件包仓库:
rpm -ivh http://livna-dl.reloumirrors.net … ease-7-2.noarch.rpm
freshrpms.net 的软件包仓库:
rpm –ivh http://ftp.freshrpms.net/pub/fre … 1.1-1.fc.noarch.rpm
问题:
[root@name user]# yum
File "/usr/bin/yum", line 30
except KeyboardInterrupt, e:
原因:
这是因为yum采用python作为命令解释器,这可以从/usr/bin/yum文件中第一行#!/usr/bin/python发现。而python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题。而CentOS 5自带的yum采用的是python2.4,当系统将python升级到2.6或3.0后,出现语法解释错误。
解决办法:
很简单,一是升级yum,一是修改yum的解释器为旧版本python2.4(如果你没有采用覆盖升级的话)
升级yum的作法就不详述了;
修改yum的解释器为旧版本python2.4:
vi /usr/bin/yum
将第一行"#!/usr/bin/python" 改为 "#!/usr/bin/python2.4"即可
当YUM时,注:如出现:Existing lock /var/run/yum.pid: another copy is running. Aborting.错误,
要运行: rm -f /var/run/yum.pid 将该文件删除!
yum Existing lock 错误的解决办法
如果系统启动的时候, yum 出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting.
可以用下面的办法解决:
可以 /etc/init.d/yum-updatesd stop
也可以 rm -f /var/run/yum.pid 主要原因就是yum在自动更新,所以再运行yum就会报这个错。
只要关掉正在执行的yum更新就可以了就可以了,停止正在运行的yum进程,或者禁用开机自动启动yum进程。
1。rm -rf /var/run/yum.pid
2./etc/init.d/yum-updatesd stop
为什么会有一个yum进程在执行呢?
原来是yum自动更新机制自动激活了yum进程,用下面的命令停止自动更新:
如果我们不需要自动更新服务,可以直接删除它。
#yum remove yum-updatesd
不过删除该服务之后,以后的更新要用下面的命令手工来完成了。
#yum update
上一篇:关于mybatis的xml文件中使用 >= 或者 <= 号报错的解决方案


下一篇:debian linux sudo 无法执行以添加普通用户到sudo