rpm及yum的优缺点

**RPM是由红帽公司开发的软件包管理方式,使用rpm我们可以方便的进行软件的安装、查询、卸载、升级等工作。但是rpm软件包之间的依赖性问题往往会很繁琐,尤其是软件由多个rpm包组成时。 YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

一丶rpm命令详解

-i 安装 -v 显示安装过程 -vv 显示安装详细过程 -h 显示安装进度

-ivh 常用的安装选项
	--nodeps忽略安装包依赖性关系检测
	--replacepkgs 重复安装已安装过的安装包,文件覆盖
	--replacefiles 即将安装的安装包的部分文件与其他已安装的安装包文件冲突,可继续安装,文件不覆盖
	--nosignature: 不检查来源合法性
	--nodigest:不检查安装包的完整性
	--noscripts:不执行程序包脚本

-U 指定的安装包比已安装的安装包新或者未安装

  -F 指定的包比已安装的包新
  --oldpackage 指定的包比已安装过的包旧
-q 查询包是否安装
  -qa 查询已安装的所有包
  -qf 文件路径  查询指定的文件来源于哪一个rpm包
  -ql 包名 查询该包提供了哪些文件
  -qp rpm包 对未安装的包,指定rpm文件再配合其他查询子选项来进行各项查询操作
  -q --changelog 包名 查看更新日志
  -qc 包名 查看该软件包所提供的配置文件
  -qd 包名 查看该软件包所提供的文档文件
  -qi 包名 查看该软件包的详细信息
  -q** --scripts 查看安装前及安装后的脚本** 
  -q --provides 包名 查看一个软件包提供了哪些能力
  -qR 包名 查看一个软件包的运行所依赖的能力
  -q --whatprovides 能力名 查看一个能力由哪个包提供
  -q --whatrequires 能力名 查看一个能力依赖于哪些包
-e 卸载
	-e 包名
		rpm -e `rpm -q vsftpd` 
		或
		rpm -e vsftpd --allmatches 安装了多个版本的某个rpm可以一次性全部删除
		--nodeps 删除时不检查依赖性关系

-K rpm包 验证包的合法性 --import 公钥 导入公钥 rpm -qa "gpg-pubkey*" 查询公钥 rpm -e rpm -qa "gpg-pubkey*" 删除公钥

--initdb 初始化/var/lib/rpm数据库 --rebuilddb 重建包头索引目录 rpm2cpio 将rpm包转换为cpio归档文件

例子:模拟删除/etc/init/rcS.conf文件并恢复
	1.rm -f /etc/init/rcS.conf      #删除文件
	2.rpm -qf /etc/init/rcS.conf        #查询删除的文件来自哪个包
		initscripts-9.03.58-1.el6.centos.x86_64        #查出拥有该文件的安装包		
	3.cp /media/Packages/initscripts-9.03.58-1.el6.centos.x86_64 /app  #将安装包拷贝出来
	4.cd /app    #进入安装包所在目录
	5.rpm2cpio initscripts-9.03.58-1.el6.centos.x86_64 |cpio -id  #将安装包转换为归档文件
	6.cp etc/init/rcS.conf /etc/init    #找到该文件拷贝至所欲要的目录

二丶yum

yum repolist
		all 显示所有的仓库
		enabled 显示已启用的仓库
		disabled 显示已禁用的仓库 

yum list [all] available 显示所有可用的,且未安装的 installed 显示所有已安装的包 updates 显示可更新的包

yum info pkg1 显示包的详细信息 yum provides | whatprovides 文件路径(支持文件名通配符) 查询一个文件来自哪一个rpm包无论是否已安装 yum clean all清空缓存 yum makecache 建立新缓存 yum deplist pkg1 查询指定包所依赖的能力 yum localinstall |install rpm路径 安装本地的rpm包,并用yum解决依赖性关系 yum localupdate |update rpm路径 更新本地的rpm包,并用yum解决依赖性关系

yum groupinstall grppkg1 grouplist 列出所有的包组 groupinfo grppkg1 显示该包组包含的rpm包 groupremove grppkg1 卸载包组