1

Я построил RPM с использованием библиотеки RPM Redline для Java. Когда я пытаюсь удалить 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))

Я не вижу никаких ошибок, и файлы все еще там. Должно быть, что-то пошло не так, потому что ЭТО НЕ РАБОТАЕТ! Как мне отладить это?

РЕДАКТИРОВАТЬ: Дополнительная информация: rpm будет удален, если я использую опцию --noscripts при удалении. Я попытался собрать RPM без каких-либо сценариев, и он до сих пор не удаляется.

1 ответ1

2

Надеюсь, вы уже поняли свою проблему, но основная проблема заключается в том, что у вас есть тире в номере вашей версии: 1.0.0-бета-2

Redline RPM в настоящее время позволяет вам сделать это, даже если спецификация RPM не позволяет этого. К сожалению, после того, как создан недопустимый rpm, ни один из инструментов rpm не даст вам никакого способа узнать это, кроме странного поведения.

В этом случае вы должны были бы иметь возможность установить один и тот же rpm несколько раз, чтобы он не жаловался на то, что экземпляр уже установлен. И при попытке стереть его, это на самом деле попытка запустить триггеры un и postun (не общие сценарии preun и postun, которые дают сбой практически беззвучно - кроме кода возврата 255).

Redline не должен допустить этого, и инструмент rpm не должен пытаться установить такой rpm, но это текущее состояние.

-Spencer

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .