手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

RPM卸载软件完全手册

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

8 D:file: /usr/man/man1/file.1 action: remove
9 D:file: /usr/bin/file action: remove
10 echo triggerpostuninstall
11 triggerpostuninstall
12 D: removing database entry


注: 本例进行file包的卸载测试,输出信息送管道交nl列出行号,现逐行解释。(行号后以D:开始的行输出的为调试信息)
第1行: 打开/var/lib/rpm目录下的RPM数据库;


第2行: 取已安装文档系统列表;
第3行: 执行卸载前触发脚本程式;
第4行: 这一行是卸载前触发脚本程式的执行结果;
第5行: RPM提示将要删除文档,其中test=1表明为卸载测试,并非真正删除;
第6-9行: 显示各文档的执行操作--删除;
第10行: 执行卸载后触发脚本程式;
第11行: 本行是卸载后触发脚本程式的执行结果;
第12行: 删除软件包在数据库中的信息。


[*][color=blue]. --nodeps : 不检查依赖[/color]
RPM 管理软件包,不但管理包中的任何文档,还同时管理着软件包之间的依赖关系。如A依赖于B运行,若B不存在了,则A也就运行不了了。RPM维护着这种关系, 尽量避免破坏,以确保软件的正常运行。上例进行mktemp包的卸载测试时,RPM提示了中断依赖关系的错误。假如使用本选项,不检查依赖,则卸载测试会顺利完成。
# rpm -e --test --nodeps mktemp


#



需要说明的是,除非用户对软件包有足够了解,否则不要使用本选项,最好让RPM自动维护软件间的依赖关系,确保其能正常运行。

[*][color=blue]. --noscripts : 不执行脚本程式[/color]
一个RPM软件包中可包含五种脚本程式,即:安装前脚本程式,安装后脚本程式,卸载前脚本程式,卸载后脚本程式和校验脚本程式。卸载时使用--noscripts选项,可禁止卸载前和卸载后脚本程式的执行。
注意: 一般用户不要使用此选项。此选项主要提供给软件包制作者使用的。通过禁止执行脚本程式,能够防止因安装带有BUG的软件包而宕掉整个系统。当软件包去掉了BUG后,此选项就不必使用了。

[*][color=blue]. --notriggers : 不执行触发程式[/color]
为了软件包间的交互控制,RPM设计了三种触发程式:安装时触发程式,卸载前触发程式和卸载后触发程式。为了防止因某一软件包的卸载而引发卸载前和卸载后触发程式的执行,能够使用--notriggers选项。通过比较下一例子和第1个选项介绍中的例子的输出,就可看到:选择--notriggers选项后,卸载前和卸载后触发程式都没有被触发执行。
# rpm -e --test -vv --notriggers file | nl


1 D: opening database mode 0x0 in //var/lib/rpm/
2 D: getting list of mounted filesystems
3 D: will remove files test = 1
4 D:file: /usr/share/magic action: remove
5 D:file: /usr/man/man4/magic.4 action: remove
6 D:file: /usr/man/man1/file.1 action: remove
7 D:file: /usr/bin/file action: remove
8 D: removing database entry
5. --allmatches : 卸载任何匹配的包



RPM可将同一软件的不同版本安装到系统中,这样假如想全部卸载掉,这时仅简单输软件名是不行的,将出现错误,如:
# rpm -q foo


foo-6.0-1
foo-7.0-1
# rpm -e foo
error: "foo" specifies multiple packages
#



注: 本例中先查询foo包,发现有6.0和7.0版两个版本,接着卸载foo包,出现错误: 有多个软件包的名字均为foo。

怎样才能全部卸载呢?
答案之一是个一个卸载,卸载时输入软件包标识,因为软件名相同,所以最少再输个版本号,这种情况适用于软件版本少的时候。
答案之二是使用--allmatches选项,仅输个软件名即可,指示RPM卸载任何匹配的包,比较方便。
# rpm -e --allmatches foo


# rpm -q foo
package foo is not installed
#



卸载过程没有出现错误,之后再查询foo包,RPM则提示软件包未安装。

[*][color=blue]. --justdb : 仅修改数据库[/color]
使用本选项后,RPM将只更新其数据库,文档系统不更新,意即假如软件包安装有文档的话,卸载后这些文档照样存在。
# rpm -ql file


/usr/bin/file
/usr/man/man1/file.1
/usr/man/man4/magic.4
/usr/share/magic
# ls -l /usr/bin/file
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file
# rpm -e --justdb file
# ls -l /usr/bin/file
-rwxr-xr-x 1 root root23948 Mar 23 1999 /usr/bin/file
#



注: 本例先用rpm -ql查询得到file包的文档列表,再用ls命令列包中的一个文档/usr/bin/file,能列出信息,故文档存在。然后用rpm -e --justdb卸载file包但只更新数据库,而后再用ls命令列/usr/bin/file,能够看到该文档依然存在。



[color=#CCCCCC]转载整理自:http://www.66study[u].[/u]com/Article/wang/anguan/200506/22498.html[/color]










[color=#FF0000][乔楚视线] [2005年度CU网友生存状态系列调查]

[乔楚视线] [2005年度CU网友生存状态调查结果公开] CU LM 2006年期望月收入柱状彩色分布图
http://bbs.chinaunix.net/viewthread.php?tid=648797&extra=page=1

[乔楚视线] [2005年度CU网友生存状态调查结果公开] CU LM 平均月收入柱状彩色分布图
http://bbs.chinaunix.net/viewthread.php?tid=642945&extra=page=1

[乔楚视线] [2005年度CU网友生存状态调查结果公开] CU LM 下班时间柱状彩色分布图

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!