RPM

RPM

RPM包在系统光盘中

RPM包命名规则

httpd-2.2.15-15.el6.CENTOS.1.i686.rpm
-httpd 软件包名
-2.2.15 软件版本 -15 软件包发布的次数
-el6.centos 适合的Linux平台 -i686 适合的硬件平台 -rpm rpm包扩展名

RPM包依赖性

  • 树形依赖: a -> b -> c
  • 环形依赖: a -> b -> c -> a
  • 模块依赖: 模块依赖, 查询网站: www.rpmfind.net

包全名与报名

  • 包全名 操作的包是没有安装的软件包时,使用包全名,而且要注意路径
  • 包名 操作已经安装的软件包时,使用包名,是搜索/var/lib/rpm中的数据库

RPM包安装

  • rpm -ivh 包全名
  • 选项: -i (install) 安装 -v (verbose) 显示详细信息 -h (hash) 显示进度 –nodeps 不检测依赖性

RPM包升级

  • rpm -Uvh 包全名
  • 选项: -U (upgrade) 升级

RPM包卸载

  • rpm -e httpd 包名
  • 选项: -e (erase)卸载 –nodeps 不检查依赖性

RPM包查询

1.查询是否安装

  • rpm -q 包名 #查询包是否安装

  • 选项:
    -q 查询

  • rpm -qa

  • 选项:
    -a 所有(all)

rpm -qa|grep “test”

2.查询软件包详细信息

  • rpm -qi 包名
  • 选项:
    -i 查询软件信息
    -p 查询未安装包信息

3.查询包中文件安装位置

  • rpm -ql 包名
  • 选项: -l 列表
    -p 查询未安装包信息

默认安装位置

路径 描述
/etc/ 配置文件安装目录
/usr/bin/ 可执行的命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc 基本的软件使用手册保存位置
/usr/share/man 帮助文件保存位置

4.查询系统文件属于哪个RPM包

  • rpm -qf 系统文件名
  • 选项:
    -f 查询系统文件属于哪个软件包

5.查询软件包的依赖性

  • rpm -qR 包名
  • 选项: -R 查询软件包的依赖性 -p 查询未安装包的信息

RPM包校验

1.rpm包校验

  • rpm -V 已安装的包名
  • 选项:
    -V 检验指定RPM包中的文件
# rpm -V httpd
S.5....T. c /etc/httpd/conf/httpd.conf

验证内容中的8个信息的具体内容如下:
S 文件大小是否改变
M 文件的类型或文件的权限(rwx)是否被改变
5 文件MD5校验和是否改变(可以看成文件内容是否改变)
D 设备的主从代码是否改变
L 文件路径是否改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否改变

文件类型:
c 配置文件
d 普通文档
g “鬼"文件, 很少见,就是该文件不应该被这个RPM包包含
L 授权文件
r 描述文件

2.RPM包中文件提取

  • rpm2cpio 包全名| cpio -idv .文件绝对路径
    -rpm2cpio 将rpm包转换为cpio格式的命令
    -cpio 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

  • cpio 选项 < [文件|设备]

  • 选项: -i copy-in模式, 还原
    -d 还原时自动新建目录
    -v 显示还原过程

过程:

  • 查询ls命令属于哪个软件包 rpm -qf /bin/ls
  • 造成ls命令误删除假象 mv /bin/ls/tmp
  • 提取RPM包中ls命令到当前目录的/bin/ls下
    rpm2cpio /mnt/cdrom/PACKAGES/coreutils-8.4-19.el6.i686.rpm| cpio -idv ./bin/ls
  • 把ls命令复制到/bin/目录,修复文件丢失 cp /root/bin/ls /bin/