如何调试无法卸载的 RPM

如何调试无法卸载的 RPM

我使用 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,但这是当前的情况。

—斯宾塞

相关内容