MyException - 我的异常网
当前位置:我的异常网» 操作系统 » centos软件包治理之rpm的使用

centos软件包治理之rpm的使用

www.MyException.Cn  网友分享于:2013-12-04  浏览:0次
centos软件包管理之rpm的使用
centos使用的二进制软件包扩展名为 .rpm , 同时rpm也是一个命令,专门用来安装,升级,查询和卸载这些二进制软件包.

一,rpm包的命名规则
比如包全名 httpd-2.2.15-15.el6.centos.l.i686.rpm, 分解如下:
httpd------软件包名
2.2.15-----软件版本
15---------当前版本的发布次数
el6.centos-适合的linux平台
i686-------适合的硬件平台

其中特别说明一下:
包全名是httpd-2.2.15-15.el6.centos.l.i686.rpm, 但是包名是httpd,记得这个概念,下面会提到.

el6-----EL 即 Enterprise Linux,就是企业级 Linux,,由于RedHat 的EL 已经成了行业标准了,所以一般 EL 表示都是 RedHat的EL, 6 就是指所有的 RHEL 6.x 系列版本.
有的包写的是el6.noarch ,表示适用任何平台,有的没有写适合的linux平台,也表示适用任何平台

i686----i386,i486,i686....只要不是x64就是32位的系统用的.


一,rpm包的依赖性
树形依赖: a依赖于b, b依赖于c,这种情况就要反过来装,先装c,再装b,再装a
环形依赖: a->b->c->a ,环形依赖时把依赖的包全部准备好,用rpm -ivh a b c 一次性安装

这种仅仅是依赖另一个rpm包的问题好解决,直接下载对应的rpm包安装即可,
不好解决的是库依赖,即报错  xxxx.so is needed by 或者 xxxx.so.2 is needed by , 他们并不是一个rpm包, 而是某个rpm包里面的一个函数库,要想得到这个库,就得安装对应的rpm包, 可是我们根本不知道这个库属于哪个rpm包, 怎么解决?
1, 官方给出了一个可以查询的网站: www.rpmfind.net ,专门根据库名称查询rpm包名称.
2, 使用yum来安装软件,缺失的库yum会自动下载对应的软件包并且安装

二,rpm包的安装:
rpm -ivh 包全名
比如 rpm -ivh  httpd-2.2.15-15.el6.centos.l.i686.rpm
i 即install ,安装
v 即verbos, 输出安装的详细信息,log等
h 即hash,显示安装进度

三,rpm包的升级
rpm -Uvh 包全名
-U 即upgrade ,大写的U, 升级
此命令是非在线升级,意义不大, 也可作为安装命令使用,效果等同于 rpm -ivh.

四,rpm的卸载
rpm -e 包名
注意,卸载使用的是包名,不是全名,比如 rpm -e httpd
-e 即 erase
rpm的卸载同样有依赖性, a依赖于b, b依赖于c, 要卸载c的话要先卸载a和b


五,rpm包的查询(查询某软件是否安装等)
不论是通过rpm还是yum安装的, 都可以用rpm命令来查询已安装的软件包.
1,查是否安装(已知包名)
rpm -q 包名
q 即query ,查询
如 rpm -q httpd

2,如果不知道包名呢?
rpm -qa | grep 关键字
a 即 all ,表示查询所有已安装的软件包名,然后用管道过滤下

3,查询已安装包的版本,发行日期,安装日期等详细信息?
rpm -qi 包名
i 即infomation
比如 rpm -qi httpd

4,查询未安装包的详细信息呢?
rpm -qip 包全名
p 即 package
由于还未安装,所以加上-p参数后要用包全名进行查询

5,查询已安装包中各个文件被安装到了哪个目录
rpm -ql 包名
如 rpm -ql httpd
l 即 list
会列出包中每一个文件安装后的绝对路径.

6,查未安装软件包将要被安装到哪个目录.
每个rpm包的安装位置其实是在别人打包时就指定好了的,所以安装前和安装后都能查询.
rpm -qlp 包全名
如 rp -qlp  httpd-2.2.15-15.el6.centos.l.i686.rpm
p 即 package

7,反查某个文件属于哪个包
注意这个文件必须是包安装时产生的,而不是这个包运行时产生的日志文件等,比如想知道httpd这个命令属于哪个包,或者/var/www/incons/tar.png 这个图片属于哪个包(httpd-2.2.15-15.el6.centos.l.i686.rpm安装后会有这个文件)都是可以查的,但是httpd在运行时产生的日志文件,我们不能根据它产生的日志文件反查包,因为这个日志文件不属于这个包.
rpm -qf  文件绝对路径及名称
如 rpm -qf  /var/www/incons/tar.png
执行后会显示包全名httpd-2.2.15-15.el6.centos.l.i686.rpm

如 rpm -qf /etc/yum.conf
执行后会显示包全名yum3.2.29-30.el6.centos.noarch

8,查依赖性
在安装之前或安装后我们都可以查这个包的依赖性
如果安装之前查询依赖:
rpm -qRp 包全名
如 rpm -qRp httpd-2.2.15-15.el6.centos.l.i686.rpm
R 即requires ,大写的
p 即package

如果安装后查询依赖
rpm -qR 包名
如 rpm -qR httpd

六, rpm包文件校验
比如httpd安装好了后,某个文件被其他人修改或者删除了,我想知道是哪个文件被改或删了.
rpm -V 已安装的包名
-V 即verify
比如rpm -V httpd
如果执行后没有任何输出,说明该包安装后,任何文件都没有变化
如果输出有内容,说明有文件被修改或删除等, 具体的是修改还是删除呢?
可以了解下输出的第一列有8个项,代表8种含义,有值的表示此项有变化,如果是点表示此项未变化,此8项信息一次是:
S 文件大小是否变化
M 文件类型或权限变化
5 MD5校验变化,证明文件内容被修改
D 从代码是否改变
L 文件的路径变化
U 文件所有者变化
G 文件的所属组变化
T 修改时间变化

七, 从rpm包中提取文件
假设某个文件被改的面目全非想还原,某个文件误删想恢复,都可以从rpm包直接提取出这个文件
rpm2cpio  包全名 | cpio -idv .要提取的文件路径和名称
rpm2cpio-----是一个包格式转换命令,将rpm格式的包转换成cpio格式
转换成cpio格式之后传送给管道,再用cpio命令处理,cpio的参数 -idv 解释如下:
-i cppy-in 模式,还原
-d 还原时自动新建目录
-v 显示还原过程

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

注意: 提取的文件路径前面有个点,表示提取到当前目录, 假设你在 /home目录下执行从mmm.rpm包中提取/usr/local/xx.conf 的文件,命令如下:
rpm2cpio mmm.rpm | cpio -idv ./usr/local/xx.png
执行后,会产生一个/home/usr/local/xx.png的文件, 即在当前目录(/home)下自动创建新的目录/usr/local 并且还原xx.png这个文件

假设我们把ls这个命令误删除了,想要恢复这个命令,过程如下:
1,你首先得知道ls这个命令属于哪个包,所以在别的机器上反查一下包全名
rpm -qf /bin/ls
查出包全名为coreutils-8.4-19.el6.i686.rpm

2,下载这个包
3,还原,执行命令如下,假设是在/opt目录下执行的:
rpm2cpio coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
那么会产生一个 /opt/bin/ls 的文件

4,将提取的文件移动到真正的目录中
mv /opt/bin/ls /bin/ls





文章评论

要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
代码女神横空出世
代码女神横空出世
那些争议最大的编程观点
那些争议最大的编程观点
程序员必看的十大电影
程序员必看的十大电影
如何成为一名黑客
如何成为一名黑客
我的丈夫是个程序员
我的丈夫是个程序员
每天工作4小时的程序员
每天工作4小时的程序员
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
一个程序员的时间管理
一个程序员的时间管理
编程语言是女人
编程语言是女人
程序员的鄙视链
程序员的鄙视链
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
中美印日四国程序员比较
中美印日四国程序员比较
程序员都该阅读的书
程序员都该阅读的书
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
漫画:程序员的工作
漫画:程序员的工作
Java程序员必看电影
Java程序员必看电影
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
老程序员的下场
老程序员的下场
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
总结2014中国互联网十大段子
总结2014中国互联网十大段子
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
10个调试和排错的小建议
10个调试和排错的小建议
 程序员的样子
程序员的样子
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有