llc 发表于 2002-10-26 11:38:30

在rh8里查找文件与rpm包归属关系的脚本!

我们安装某个rpm包后,如果效果不好,就想卸载,以前用gnorpm或kpackage很容易找到这个包然后卸载;但由于rh8取消了kpackage,gnorpm在它下面运行有点不正确,在rh8里要卸载rpm包时,还是得用rpm -e命令,这样就得知道准确的rpm包的安装后名字才能卸载,而查找某个文件是属于哪个rpm包时比较麻烦,一般步骤是:
1,先用find命令找出文件的完全位置
2,用rpm -qf命令看这个文件属于哪个rpm包

我昨晚翻看了一些资料,搞了个实现上面两步功能的小脚本,经过使用感觉不错,特贴出来给大家试一试,以下是内容:

#!/bin/sh
find / -type f -name $1 -mount -exec rpm -qf {} \;

大家将上两行内容复制粘贴成一个叫findrpm的文件,然后用chmod+x findrpm赋予它可执行属性,将它放到/usr/bin目录下就可以用了

譬如rh8自带了kdevelop这个软件,但一般用户没什么用,你想删除它,在终端窗口里运行:findrpm kdevelop,等上一阵,就出来kdevelop的归属rpm包的名字了,然后你rpm -e rpm包的名字就可以删掉它

又譬如你想知道vi这个命令是哪个rpm包的,你可以输入findrpm vi,等上一会就得到结果:vim-minimal-6.1-14

这个脚本由于用了find这个遍历所有文件夹的指令,运行时间较长,谁有更好的脚本请提供一下,建议直接从rpm的数据库里搜索,那样比较快(我不太懂rpm的指令参数)

吴文官 发表于 2002-10-26 13:27:44

先在/usr/lib,和/usr/bin目录 下寻找,找到立即返回,找不到就扩大范围,最终扩大到/目录。最好已经遍历过的目录不用再遍历。

llc 发表于 2002-10-26 14:10:28

呵呵,脚本语言我不太熟悉,昨晚还是看了刚上传的shell编程教程才憋了这个脚本出来,兄弟你如果能改进一下就尽量改进吧!
别忘了将改进的脚本贴出来看看

llc 发表于 2002-10-26 14:47:27

修正,如下:
#!/bin/sh
find / -name $1 -mount -exec rpm -qf {} \;

改成这样就可以连lib库都可以找到,譬如
findrpm libSDL_image-1.2.so.0
可以得到:SDL_image-1.2.2-3
页: [1]
查看完整版本: 在rh8里查找文件与rpm包归属关系的脚本!