rpm包管理_命名原则_rpm命令

时间:2023-02-14 19:55:26
RPM包命名原则

比如:httpd-2.2.15-15.e16.centos.1.i686.rpm

httpd  软件包名

2.2.15  软件版本

15  软件发布次数

e16.centos  适合的linux平台

i686  适合的硬件平台

rpm  rpm扩展包名

rpm包依赖性

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

    一般服务器安装都是最小化安装,这样是为了降低被攻击的可能性,由于服务器的最下话安装,导致安装一个软件需要很多依赖,比如树形依赖,在安装依赖a的时候可能需要安装依赖包g,e,y,j,u等,安装b依赖时又需要其他各种依赖,树形依赖虽然麻烦,可以依旧可以解决。环形依赖也不是很难解决,只需要用一条命令a、b、c同时安装就能解决依赖问题。还有一种依赖时模块依赖,它依赖的是某个软件中的程序,我们可以通过查询www.rpmfind.net来安装依赖。

 

  RPM包管理包括rpm命令管理yum在线管理rpm命令管理如上所说,遇到各种依赖问题的时候需要我们自己动手查找依赖包,后手动解决依赖问题,进行后装。后来人们发现有没有一种什么简单的方法进行安装软件,于是就有了yum命令,事先准备一个包含所有rpm包的网站,作为在线服务器源我们只要使用在线命令安装软件,不管我去依赖那一个包,yum都会自动到服务器上把依赖下载安装。

 


 rpm的安装更新与卸载

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

包全名:如httpd-2.2.15-15.e16.centos.1.i686.rpm,操作没有安装的软件包时,使用

    包全名,一定要注意路径。

 

rpm安装:

rpm -ivh 包全名

  -i(install)  安装

  -v(verbose)  显示详细信息

  -h(hash)  显示进度

  --nodeps  不检测依赖性  

rpm包管理_命名原则_rpm命令

上面就是通过rpm命令安装的,会产生各种依赖,这是rpm安装的缺点

 

rpm更新:

rpm -Uvh 软件包

  -U(upgrade)  升级

有时候可以用更新命令代替安装命令是没问题的

 

rpm卸载:

rpm -e 包名

  -e(erase)  卸载

  --nodeps  不检查依赖性 

  一般rpm包的卸载顺序是按照安装顺序进行的,安装时是a->b->c,卸载时也是a->b->c。假如要卸载的rpm包是依赖于其他包,而没有其他软件包依赖要卸载的件,则卸载应该没什么问题,如果有其他包依赖于要卸载的软件,则需要考虑依赖,如果你输入rpm -e httpd命令,系统会提示你有依赖关系,不能卸载。所以要加上--nodeps不检查依赖强制删除,这个结果就是只删除了httpd,跟他有依赖关系的其它软件是不会删除的,但是这些软件因为系统里没有了httpd也会不能运行,这是所谓的没有删除干净,而yum -y remove httpd这种方式是把与httpd有依赖关系的所有软件一并删除。比如PHP,mod_ssl等等。这就干净了。


rpm查询

查询是否安装

rpm -q 包名

  -q(query)  查询

rpm包管理_命名原则_rpm命令

查询所有已经安装的rpm包

rpm -qa

  -a(all)  所有

rpm包管理_命名原则_rpm命令

不过我们常用的查询命令是rpm -qa | grep 包名

 

查询软件的详细信息

rpm -qip 包名(包全名)

  -i(information)  查询软件信息

  -p(package)  查询未安装包信息

rpm包管理_命名原则_rpm命令

rpm包管理_命名原则_rpm命令

 

查询软件的安装位置

rpm -qlp  包名(包全名)

  -l(list)  查询位置

  -p(package)  查询未安装的软件打算安装的位置

rpm包管理_命名原则_rpm命令

rpm包管理_命名原则_rpm命令

 

查询系统文件属于哪个rpm包

rpm -qf 系统文件名

  -f(file)  查询系统文件属于哪个软件包

rpm包管理_命名原则_rpm命令

 

查询软件包的依赖性

rpm -qRp 包名(包全名)

  -R(requires)  查询软件包的依赖性

  -p(package)  查询未安装包的信息

rpm包管理_命名原则_rpm命令

rpm包管理_命名原则_rpm命令


 

rpm包的校验

rpm -V 包名

 -V(verify)  校验指定rpm包中的文件

 如果文件没有进行修改,不会出现变化,如果文件被修改,则会出现修改信息

rpm包管理_命名原则_rpm命令

S.5. . . . T. c 是有含义的:

S  文件大小是否改变

M  文件类型或文件权限是否改变

5  文件MD5校验和是否改变,可以看成文件内容是否改变

D  设备的中,从代码是否被改变

L  文件路径是否被改变

U  文件所有者是否改变

G  文件属组是否被改变

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

c  配置文件

d  普通文件

g  ghost文件,不应该出现的文件

l  授权文件

r  描述文件

 

rpm包中文件提取

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

  rpm2cpio:将rpm包转换成cpio格式的命令

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

  cpio 选项 < [文件|设备]

    -i  copy-in模式,还原

    -d  还原时自动新建目录

    -v  显示还原过程

接下来有个示例:

  1. 查询ls属于哪个软件包
  2. 造成ls误删的假象
  3. 提取rpm包中的ls命令到当前目录的/bin/ls下
  4. 把ls命令复制到/bin/目录下,修复文件

rpm包管理_命名原则_rpm命令