linux rpm卸载参数




linux rpm卸载参数

2022-07-20 20:33:49 网络知识 官方管理员

rpm卸载参数--test:卸载测试--nodeps:不检查依赖--noscripts:不执行脚本程序--notriggers:不执行触发程序--justdb:仅修改数据库--force强制

RPM卸载软件包,并不是简单地将原来安装的文件逐个删除,那样做的话,可能会出现这样或那样的问题。如,A软件包依靠B软件包做某些工作,若B软件包卸载了,则A软件包就不能正常运行了。RPM为用户安全考虑,会做某些检查,尽可能排除出错的情况。

RPM在卸载软件包时,分步骤进行如下操作:

1.检查依赖(Denpendency)

检查依赖的目的,在于确保当前没有任何软件包依赖于当前要卸载的软件包。

2.执行卸载前触发脚本程序(Triggerun)

3.执行卸载前脚本程序(Preuninstall)

本程序为软件包制作者设定,完成卸载前的一些工作,具体如,要卸载的软件包中某个

程序当前正在运行时,脚本程序必须杀掉它,否则无法正确卸载。

4.检查配置文件(Configfiles)

RPM卸载软件包前会检查包中的配置文件是否修改了,如果修改了,RPM要换个名字保存

该文件,文件名一般是原文件名+.rpmsave。(这是RPM软件包管理的特色之一)

5.真正卸载

即按照软件包中的文件列表,将文件逐个删除。要注意的是,如果其中有文件属于别的

软件包(即两个软件包拥有一个名字相同的文件),则RPM并不删除。

6.执行卸载后脚本程序(Postuninstall)

本程序主要是完成卸载的善后工作,如将系统配置文件inetd.conf修改一下,去掉安装

时添加的东西等等。

7.更新RPM数据库

卸载后,RPM删除该软件包在数据库中的所有信息。

8.执行卸载后触发脚本程序(Triggerpostun)

命令格式

rpm-e[卸载选项1卸载选项2...][软件包标识1软件包标识2...]

注:也可使用--erase代替-e,效果相同。

软件包标识

对于已安装的软件包,RPM使用如下格式来唯一标识它:

Name[-Subname]-Version-Release

其中:Name:指软件名;

Subname:本项可选,指软件包子包的名字;

Version:指软件版本号。注意:其中不能含减号(-)字符;

Release:指软件释出号。

例如:包裹文件file-3.26-6.i386.rpm安装后,其软件包标识为file-3.26-6。可以用此标识卸载,查询,校验该软件包。在命令行上输入软件包标识时,可以写全,也可以采用简写的方式。如file-3.26-6,可仅输入file,或file-3.26,或输全。又如:带有子包的软件包标识XFree86-devel-3.3.6-6,可仅输入XFree86-devel,或XFree86-devel-3.3.6,还可完全输入。

注意:软件包标识是大小写敏感的,即大写字母与小写字母表示不同的涵义。如bash-2.03-10标识不能输作Bash-2.03-10,也不能输作bAsh-2.03-10等等。

下面对指定用选项做些解释:

1.--test:卸载测试

RPM的卸载测试做些什么?主要是检查依赖关系,确保系统中没有软件包依赖于要卸载的软件包。如果还有软件包依赖要卸载的软件包,则RPM会提示依赖关系将中断的错误,例如:

#rpm-e--testmktemp

error:removingthesepackageswouldbreakdependencies:

mktempisneededbyautoconf-2.13-5

mktempisneededbydev-2.7.7-4BP

mktempisneededbygroff-1.11a-10BP

mktempisneededbygzip-1.2.4-15BP

mktempisneededbyinitscripts-4.16-3BP

mktempisneededbymetamail-2.7-21BP

mktempisneededbyrpm-3.0.3-4BP

mktempisneededbyautofs-3.1.3-2

/bin/mktempisneededbyapache-1.3.12-5BP

/bin/mktempisneededbylinuxconf-1.16r1.3-4BP

#

当然,我们通过浏览卸载测试时输出的调试信息就知道得更清楚了。

#rpm-e--test-vvfile|nl

1D:openingdatabasemode0x0in//var/lib/rpm/

2D:gettinglistofmountedfilesystems

3+echotriggeruninstall

4triggeruninstall

5D:willremovefilestest=1

6D:file:/usr/share/magicaction:remove

7D:file:/usr/man/man4/magic.4action:remove

8D:file:/usr/man/man1/file.1action:remove

9D:file:/usr/bin/fileaction:remove

10+echotriggerpostuninstall

11triggerpostuninstall

12D:removingdatabaseentry

注:本例进行file包的卸载测试,输出信息送管道交nl列出行号,现逐行解释。(行号后以D:开始的行输出的为调试信息)

第1行:打开/var/lib/rpm目录下的RPM数据库;

第2行:取已安装文件系统列表;

第3行:执行卸载前触发脚本程序;

第4行:这一行是卸载前触发脚本程序的执行结果;

第5行:RPM提示将要删除文件,其中test=1表明为卸载测试,并非真正删除;

第6-9行:显示各文件的执行操作--删除;

第10行:执行卸载后触发脚本程序;

第11行:本行是卸载后触发脚本程序的执行结果;


发表评论:

最近发表
网站分类
标签列表