在Linux中分为rpm包和二进制包安装,yum安装也属于rpm包安装的一种。
rpm包名原则
rpm包依赖性
树形依赖:a -> b -> c
环形依赖:a -> b-> c -> a
模块依赖:查询网站 www.rpmfind.net
模块依赖的实例报错:(实验机器为 Centos6.3 x64)
通过挂载第一张光盘后,进入光盘中的Package目录,安装 mysql-connector-odbc 这个包,报错如下
报错中说的很清楚,缺少libltdl.so.7这个软件包。
先解释一下libltdl.so.7 这个是啥?在linux中以 ".so.数字" 结尾的文件都是软件包组,这是某一个软件包中的一个软件,如要解决这个依赖,
需要在 www.rpmfind.net 中查找对应的软件包安装。
在命令行模式中,rpm包还有包名和包全名之分,在不同的情况下用不同的名字。
包名:以最上面的rpm包名原则那张图为例:包名就是 httpd
包全名:从头到尾就是包全名了~
当操作对象为已安装的软件那么接包名,若操作对象为未安装软件时则需要接包全名,除了安装和升级是需要用包全名,大多数时候使用包名即可。
rpm安装
# rpm ivh 包全名
选项: -i (install) 安装
-v (verbose) 显示详细信息
-h(hash) 显示进度
--nodeps 不检测依赖性
rpm包升级
# rpm Uvh 包全名
选项: -U (upgrade) 升级
rpm卸载
# rpm e 包名
选项:-e (erase) 卸载
查询是否安装rpm包
# rpm q 包名 查询该包是否安装
# rpm -qa 包名 查询所有已经安装的RPM包
-q 查询
-a 所有
查询软件包详细信息
# rpm qi 包名
选项: -i 查询软件信息
-l 列表(查询软件包的安装位置)
-p 查新未安装包信息
# rpm -qip zip-3.0-1.el6.x86_64.rpm 查询未安装软件的软件包的详细信息,因为操作对象是未安装的软件,所以接包全名
# rpm -qlp zlib-devel-1.2.3-27.el6.x86_64.rpm 查询未安装软件准备安装的位置
查询系统文件属于哪个rpm包
# rpm qf 系统文件名
选项: -f 查询系统文件属于哪个软件包
查询软件包的依赖性
# rpm qf 系统文件名
选项:-R 查询软件包的依赖性
-p 查询未安装包信息
RPM包校验
# rpm V 已安装的包名
选项:-V 校验指定RPM包中的文件
# rpm2cpio 包全名 | cpio idv .文件绝对路径
rpm2cpio 将rpm包转换为cpio格式的命令
cpio是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件
提取文件实例
[root@nfs-server ~]# rpm -qf /bin/ls 首先查看 ls 命令属于哪个软件包
coreutils-8.4-19.el6.x86_64
[root@nfs-server ~]# mv /bin/ls /tmp 造成ls命令误删除
[root@nfs-server ~]# ls ls命令失效
-bash: /bin/ls: No such file or directory
[root@nfs-server ~]# rpm2cpio /mnt/Packages/coreutils-8.4-19.el6.x86_64.rpm | cpio -idv ./bin/ls
./bin/ls 提取RPM包中ls命令到当前目录的 /bin/ls下
25190 blocks
[root@nfs-server ~]# cp /root/bin/ls /bin 把ls命令复制到 /bin/ls 目录,修复文件丢失
[root@nfs-server ~]# ls ls命令恢复
anaconda-ks.cfg bin install.log install.log.syslog