我使用 redline rpm 库为 Java 构建了一个 RPM。当我尝试卸载 rpm 时,它说它已被删除,但当我列出列表时它仍然存在并说它仍处于安装状态。
下面是我卸载后的结果,我尽可能地进行了调试。
[root@localhost ~]# rpm -e -vvvvv kairosdb
D: opening db environment /var/lib/rpm/Packages joinenv
D: opening db index /var/lib/rpm/Packages rdonly mode=0x0
D: locked db index /var/lib/rpm/Packages
D: opening db index /var/lib/rpm/Name rdonly mode=0x0
D: read h# 992 Header SHA1 digest: OK (53816c2a5bea603626b3464fcccee15a95914aab)
D: ========== --- kairosdb-1.0.0-beta-2-4 noarch/linux 0x0
D: opening db index /var/lib/rpm/Requirename rdonly mode=0x0
D: ========== recording tsort relations
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth)
D: 0 0 0 0 1 0 -kairosdb-1.0.0-beta-2-4.noarch
D: closed db index /var/lib/rpm/Requirename
D: closed db index /var/lib/rpm/Name
D: closed db index /var/lib/rpm/Packages
D: closed db environment /var/lib/rpm/Packages
D: opening db environment /var/lib/rpm/Packages joinenv
D: opening db index /var/lib/rpm/Packages create mode=0x42
D: mounted filesystems:
D: i dev bsize bavail iavail mount point
D: 0 0x0000fd00 4096 1084597 1715537 /
D: 1 0x00000003 4096 0 -1 /proc
D: 2 0x00000000 4096 0 -1 /sys
D: 3 0x0000000c 4096 0 -1 /dev/pts
D: 4 0x00000801 1024 77147 26063 /boot
D: 5 0x00000014 4096 64358 64357 /dev/shm
D: 6 0x00000015 4096 0 -1 /proc/sys/fs/binfmt_misc
D: 7 0x00000016 4096 0 -1 /var/lib/nfs/rpc_pipefs
D: sanity checking 1 elements
D: running pre-transaction scripts
D: computing 123 file fingerprints
D: computing file dispositions
D: opening db index /var/lib/rpm/Basenames create mode=0x42
D: ========== --- kairosdb-1.0.0-beta-2-4 noarch-linux 0x0
D: erase: kairosdb-1.0.0-beta-2-4 has 123 files, test = 0
D: opening db index /var/lib/rpm/Name create mode=0x42
D: read h# 992 Header SHA1 digest: OK (53816c2a5bea603626b3464fcccee15a95914aab)
D: running post-transaction scripts
D: closed db index /var/lib/rpm/Basenames
D: closed db index /var/lib/rpm/Name
D: closed db index /var/lib/rpm/Packages
D: closed db environment /var/lib/rpm/Packages
D: May free Score board((nil))
我没有看到任何错误,文件都还在。一定是出了什么问题,因为它没有工作!我该如何调试?
编辑:附加信息:如果我在卸载时使用 --noscripts 选项,rpm 将卸载。我尝试在没有任何脚本的情况下构建 rpm,但仍然无法卸载。
答案1
希望你现在已经解决了你的问题,但根本问题是你的版本号中有破折号:1.0.0-beta-2
redline rpm 目前允许您这样做,即使 rpm 规范不允许这样做。不幸的是,一旦创建了无效的 rpm,除了奇怪的行为外,没有任何 rpm 工具可以让您知道这一点。
在这种情况下,您应该能够多次安装相同的 rpm,而不会抱怨已经安装了实例。当尝试删除它时,它实际上是尝试运行触发器 un 和 postun 脚本(而不是几乎无声无息失败的一般 preun 和 postun 脚本 - 除了 255 返回代码)。
Redline 不应该允许这样做,并且 rpm 工具不应该尝试安装这样的 rpm,但这是当前的情况。
—斯宾塞