首页 > 服务器学习 > Linux > Linux中的RPM包管理rpm命令管理
2016
12-16

Linux中的RPM包管理rpm命令管理

一、RPM包的命名规则

如httpd-2.2.15-15.el6.centos.1.i686.rpm

httpd-2.2.15-15.el6.centos.1.i686.rpm:包全名

httpd:软件包名     2.2.15:软件版本

15:软件发布的次数   el6.centos:适合的Linux平台

i686:适合的硬件平台  rpm:rpm包的扩展名

包全名:操作的包是没有安装的软件包时,使用包全名,并且要注意路径

包名:操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm/中的数据

二、依懒性

1、树形依赖:a→b→c

2、环形依赖:a→b→c→a(用命令同时安装abc)

3、模块依赖,系统报错只提示说缺少一个库/模块,库是在安装包内在安装完安装包就有的,但是不会提示这个缺少的库是出自与哪一个安装包,这时候可以通过www.rpmfind.net来搜索查找。

也可以使用yum命令来查找,如查找libstdc++.so.6出自于哪个软件包,使用命令yum whatprovides libstdc++.so.6或者yum resolvedep libstdc++.so.6可以查找到软件包名。

三、RPM包安装、升级和卸载

rpm -ivh 包全名:安装RPM包。

-i:安装   -v:显示详细信息   -h:显示进度

--nodeps:不检测依赖性(不推荐使用)

rpm -Uvh 包全名:升级RPM包

rpm -e 包名:卸载已经安装的RPM包

--nodeps:不检查依赖性(不推荐使用)

四、RPM包的查询

查询语法:rpm [-选项] [包名或包全名]

-q:查询(查询语句一般都含有该选项)

rpm -q 包名:查询是否安装该RPM包

rpm -qa:查询所有已经安装的RPM包

rpm -qa | grep 关键字:查询所有已经安装的包含关键字的RPM包

-i:详细信息

rpm -qi 包名:查询已安装软件包的详细信息

-p:查询未安装包(如果使用该选项,后面应该使用包全名)

-l:列出已安装包中文件安装位置或未安装包中文件默认安装位置

-f:查询文件属于哪个软件包(使用该选项后面应使用文件名)

-R:查询软件包的依赖性

五、RPM包校验

rpm -V 已安装的包名:校验指定RPM包中的文件,显示包中被修改过的文件

校验的显示信息说明:

S:文件大小是否改变    M:文件类型或者文件权限是否被改变

5:文件的MD5校验和是否改变(文件内容改变MD5也改变,所以可以看成检测内容是否修改)

D:设备的中,从代码是否改变   L:文件路径是否改变

U:文件的属主(所有者)是否改变   G:文件的属组是否改变

T:文件的修改时间是否改变

如果没有修改对应显示".",改变则显示上面的字符

后面有一个小写的字母,代表的意义是:

c:配置未见  d:普通文件

g:“鬼”文件(表示该文件不应该被这个RPM包包含,很少见)

l:授权文件  r:描述文件

六、从RPM包中提取指定的文件

语法:rpm2cpio 包全名 | cpio -idv .文件绝对路径

rpm2cpio命令将RPM包转换为cpio格式,2的意义是to。

cpio是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

-i:copy-in模式,提取还原

-d:还原时自动新建目录

-v:显示还原过程

如果在操作时误删除了某个系统文件(假入是mkdir命令文件)可以使用该方法:

1、在其他正常Linux系统中which mkdir查看mkdir的文件位置(/bin/mkdir)

2、在其他正常Linux系统中rpm -qf /bin/mkdir查看该文件属于哪个RPM包(coreutils-8.4-37.el6.x86_64)。

3、挂载系统光盘

4、在丢失文件的系统中运行rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-37.el6.x86_64.rpm | cpio -idv ./bin/mkdir

最后的"."表示把后面的文件提取到当前目录

5、把提取到的文件复制到原目录,cp bin/mkdir /bin/mkdir

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。