一、RPM、YUM 软件包管理管理工具的简介

1、首先讲一下自己的感觉:对于 初学linux的人来说安装软件是比较头疼的事,大家习惯了windos的操作,是中文的,只要上网一搜什么都有,然后下一步安装就行啦,卸载的话更是简单,在卸载或更改程序了么也很简单,还有360等。linux软件包大致分三种:以.rpm 、压缩包、源码包最为常见,却他们的安装方法也是有差别的。掌握好软件安装卸载工具是以后搭建服务不可缺少的必备能力,而 RPM、YUM 就是不可或缺的利器。

2、rpm的简单介绍

1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;     
3、可以在查询系统中的软件包是否安装以及其版本;
4、作为开发者可以把自己的程序打包为RPM 包发布;
5、软件包签名GPG和MD5的导入、验证和签名发布 
6、对于报的依赖性不是很好的处理工具
7、对已安装和未安装的软件是个很好的查询工具

1、yum是yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题. 它能便于管理大量系统的更新问题 
2、可以同时配置多个资源库(Repository)
3、简洁的配置文件(/etc/yum.conf)
4、自动解决增加或删除rpm包时遇到的倚赖性问题
5、使用方便
6、保持与RPM数据库的一致性

二、软件包安装的地方

程序包的组成格式:

二进制程序

/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin, /usr/local/APP/{bin,sbin}

有些特殊的应用程序放置于libexec目录中

有些第三方应用默认安装于/opt目录

库文件(开发库、运行库)

/lib64, /usr/lib64, /usr/local/lib64, /usr/local/APP/lib
/etc   /usr/local/APP/etc或conf目录

帮助文件

/usr/share/man, /usr/local/share/man, /usr/local/APP/man
doc: README, INSTALL, ChangeLog
ldd:
ldd /path/to/binary_file

源代码:

name-version.tar.{gz,bz2,xz}
version:major.minor.release
name-version-relase.arch.rpm
bash-4.2.3-3.centos5

x86: i386, i486, i586, i686等;
x86_64: x86_64
powerpc: ppc

例如:

bash-4.2.3-3.centos5.x86_64.rpm


一个程序有20个功能:常用功能有8个,特殊A:3个,特殊B:6个,二次开发相关功能:3

分包机制:

核心包,主包:命名与源程序一致

bash-4.2.3-3.centos7.x86_64.rpm

子包:

bash-a-4.2.3-3.centos7.x86_64.rpm
bash-b-4.2.3-3.centos7.x86_64.rpm
bash-devel-4.2.3-3.centos7.x86_64.rpm

获取rpm包的途径:

1、OS Vendor: 系统发行商提供的

发行的光盘或站点服务器

镜像:

http://mirrors.163.com
http://mirrors.sohu.com

源代码

rpm包

3、很多第三方机构或个人制作并公开发布许多rpm包

http://rpmfind.net
http://rpm.pbone.net

Fedora-EPEL

六、基本命令

rpm包管理器的常见使用场景:

安装程序包:

rpm [option] /path/to/package_file 
-i: install  安装
-v: verify   查证核实,详细
-h: 以-v组合更好的显示详细信息

组合选项:-ivh

--test: 仅作测试,有真正执行安装

如果依赖于其它包:

1、解决依赖关系

2、忽略依赖关系

能安装上,但有可能无法运行;

--nodeps

重新安装:

--replacepkgs

如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

卸载程序包:

rpm [option] package_name
-e: erase

1、将依赖于此包的所有包一并卸载

2、忽略依赖关系

能卸载,但依赖于此包程序包可能会运行不正常;

--nodeps

升级程序包:

新版本替换老版本

rpm [option] /path/to/package_file

1、升级或安装

-Uvh

2、纯升级

-Fvh

X --> Y-2.2.1

Y-2.2.3

升级后的版本冲突等;

--force: 强制升级

注意:不应该对内核执行升级操作,而是安装系统允许多内核并存

查询操作:

1、查询某包是否安装
rpm -q package_name...
2、查询所有已经安装的包
rpm -qa 
按条件过滤:rpm -qa | grep 'PATTERN'
3、查询包的描述信息
rpm -qi package_name
4、查询某包安装生成了哪些文件
rpm -ql package_name
(1) 查询某包安装生成了哪些配置文件
pm -qc package_name
(2) 查询某包安装生成了哪些帮助文件
rpm -qd package_name
(3) 查询程序包的相关脚本
rpm -q --scripts package_name
脚本有四类:
preinstall:安装前脚本
postinstall: 安装后脚本
preuninstall: 卸载前脚本
postuninstall: 年前后脚本
5、查询某文件是由哪个包安装生成的
rpm -qf /path/to/some_file
6、对尚未安装的包执行查询
rpm [option] /path/to/package_file
-qpi 查询未安装包未安装的描述信息
-qpl 查询未安装生包会生成了哪些文件
-qpc 查询未安装包会生成了哪些帮助文件
-qpd 查询未安装程序包的相关脚本
2、yum客户端命令的使用:
1、列出所有可用repo
yum repolist {enabled|disabled|all}
2、列出rpm包
yum list {all|installed|available} 
yum list KEYWORD*
3、包的描述信息
yum info package_name
4、列出所有的包组信息
yum grouplist
5、显示包组的信息:例如组中包含的程序包列表
yum groupinfo "GROUP NAME"
CentOS6 跟开发相关的包组:
Development Tools
Server Platform Development
Desktop Platform Development
6、清理缓存
yum clean {all|packages|metadata|expire-cache|rpmdb|plugins}
7、安装程序包
yum install package_name
重新安装:
yum reinstall package_name
8、升级
yum check-update: 检查可用的升级包
yum update package_name
x-1.3.1
x-1.3.2, x-1.3.3, x-2.0.1
yum update x-1.3.2
yum downgrade package_name
9、卸载
yum remove|erase package_name
10、查询某文件是由哪个包安装生成的
yum whatprovides|provides /path/to/somefile
11、安装包组
yum groupinstall "GROUP NAME"
12、卸载包组
yum groupremove "GROUP NAME"

以httpd软件为例

1、查询安装了那些rpm包

LINUX RPM、YUM软件包的管理

2、查询httpd的详细信息

LINUX RPM、YUM软件包的管理

3、查询是否安装了httpd

LINUX RPM、YUM软件包的管理

4、查询httpd安装生成了那些文件

LINUX RPM、YUM软件包的管理

5、查询httpd安装生成了那些配置文件

LINUX RPM、YUM软件包的管理

6、查询httpd安装生成了那些帮助文件

LINUX RPM、YUM软件包的管理

7、查询yum有几个yum仓库源

LINUX RPM、YUM软件包的管理

8、查询yum仓库有那些安装包

LINUX RPM、YUM软件包的管理

9、查询包中与mysql相关的包

LINUX RPM、YUM软件包的管理

10、查询yum当中的包组信息

LINUX RPM、YUM软件包的管理

11、重新安装http软件

LINUX RPM、YUM软件包的管理

12、查询需要升级的安装包

LINUX RPM、YUM软件包的管理

13、卸载httpd软件包

LINUX RPM、YUM软件包的管理

14、安装httpd软件

LINUX RPM、YUM软件包的管理

七、总结

   个人觉得用rpm管理工具查询好用,查询信息详细。用yum管理工具安装好用,解决了包依赖关系。其它的就是命令打熟就好啦!