两全其美——RPM包反安装技巧
整机外设
RedHat Linux安装后系统中默认捆绑了许多应用软件,有些软件对你可能毫无用处却又占用了不少的磁盘空间,但是要卸载这些软件时却没有Windows的添加、删除程序工具那么直观、方便,而且还会遇到软件包依赖关系而不能卸载的问题。下面我们就以卸载KDE桌面中游戏软件包为例,来了解反安装中的一些技巧。
1.首先我们需要找到安装在系统上的小游戏软件包,打开终端输入rpm -qa |more命令,将会列出全部已安装的软件包。
提示:因为软件包数量比较多,为了方便查看,使用管道符|加more参数来分屏显示,也可以使用重定向,将全部已安装软件包的信息输入一个文本文件中以方便查看,具体方法如下:先新建一个文本文件,如在/root目录下单击右键选择新建文本文件。然后打开终端输入rpm -qa >/root/filename(刚才新建的文本文件名)。这样所有已安装软件包信息就在这个文本文件中了。
如果要查询单个软件包,可以使用rpm -qa |grep -i softname(软件包名)。参数i用于区分大小写。
2.现在要卸载小游戏,从字面上看kdegames-3.1-4似乎是这些小游戏的软件包,但我们需要证实一下。
在终端中输入rpm -qi kdegames-3.1-4,回车后就可以看到这个软件包的详细功能介绍了:
“[root@localhost root]# rpm -qi kdegames-3.1-4
Name: kdegames Relocations: /usr
Version: 3.1 Vendor: Red Hat, Inc.
……
Summary : K 桌面环境――游戏
Description :
……
该软件包包括……”
3.确定这是需要卸载的软件包后就是在终端中使用rpm -e kdegames-3.1-4来卸载这个软件了,但是使用rpm –e命令进行卸载时会常常出现这样的情况(如本例):
[root@localhost root]# rpm -e kdegames-3.1-4
error: Failed dependencies:
libatlantic.so.1 is needed by (installed) kdeaddons-3.1-4
libatlantikui.so.1 is needed by (installed) kdeaddons-3.1-4
libkdegames.so.1 is needed by (installed) kdeaddons-3.1-4
这是因为rpm命令在卸载软件前会进行依赖关系检查,如果当前要卸载的软件中有其他软件包要使用的文件时就会出现这样的情况。
这就意味着如果强行卸载kdegames软件包,那么kdeaddons这个软件包就不能正常运行,而且单使用-e参数软件包也不能被卸载。
这里有一种两全其美的方法,既可以卸载软件又不影响其他程序的使用,具体方法如下:
打开终端输入:
[root@localhost root]# rpm -ql kdegames-3.1-4 >/root/file1
[root@localhost root]# rpm -ql kdeaddons-3.1-4 >/root/file2
分别对要卸载和有依赖关系的软件用rpm -ql来查看软件包中所有的文件,并用重定向将内容输出到文本文件file1和file2中。
进入root目录,用gedit文本编辑器打开这两个文本文件,在工具菜单中选择“比较文件”(图1)。
单击“比较”按钮就可得到这两个文件的比较情况了(图2)。
在gedit下面的输出窗口中上半部分是不同的文件,绿色部分就是这两个软件包中相同的文件。这样在卸载kdegames-3.1-4这个软件包之前先将这些相同文件备份到其他目录中,然后使用rpm -e --nodeps kdegames-3.1-4来强行卸载软件包,nodeps是不进行依赖关系检查的参数,然后将备份的文件放回原来的目录。这样这些小游戏就被卸载掉了,而且也不会影响到所依赖程序的使用。
RedHat Linux提供的图形添加、删除程序工具倒是和Windows中添加、删除工具差不多,不过它也会常常因为软件包相互依赖关系的原因而不能完成卸载工作,所以在备份好依赖关系软件相同文件的情况下,在终端中用--nodeps参数来强行卸载软件包是一种两全其美的方法。
附:在文中使用的rpm命令参数表:



