Как удалить пакет rpm при сохранении определенных файлов

Мне удалось запустить его, скомпилировав мой контроллер SATA (libata) в ядро, которое изначально компилировалось как модуль (и вот почему он будет нормально работать с начальным RAM-диском).

2
10.06.2015, 16:58
1 ответ

Не идеально, но я только что решил аналогичную проблему с rpm -e --justdb, чтобы записать pkg как удаленный без удаления файлов. У меня есть старый rpmv4.4.2.3, где man rpmперечисляет --justdbтолько в разделе установки, а не в разделе удаления, но он работает и для удаления.

Обзор:

  • составить список файлов, требуемых каждым пакетом
  • удалить исходящий пакет из базы данных без удаления содержимого с помощьюrpm -e --justdb PKG
  • очистить, удалить файлы, которые были востребованы удаленным пакетом, но не востребованы оставшимся пакетом

Подготовить

pkg_keep="asterisk-core-1.6.2.24-1_centos5"
pkg_del="asterisk16-core-1.6.2.20-2_centos5"

# Record files claimed by each package
rpm -ql "${pkg_del}" > "files.${pkg_del}"
rpm -ql "${pkg_keep}" > "files.${pkg_keep}"

Составьте список файлов, затребованных исходящим пакетом, но не запрошенных оставшимся пакетом. ПРЕДУПРЕЖДЕНИЕ:--line-regexpважно, т.е. /fileне отфильтровывает /file2.

grep -v -F --line-regexp -f "files.${pkg_keep}" "files.${pkg_del}" > files.cleanup

Удалить исходящий PKG из базы данных RPM, не удаляя его файлы. Из man rpmнеясно, подразумевается ли --noscriptsс --justdb. Также может понадобиться --nodeps.

rpm -e --justdb --noscripts "${pkg_del}"

Просмотрите ВНИМАТЕЛЬНО содержание files.cleanupи удалите перечисленные там файлы.

Хотя вы можете автоматически удалить файлы, перечисленные в files.cleanup, IMO, давая команду сделать это здесь, может повредить читателю копирования/вставки.

Кроме того, использование чего-то вроде etckeeperможет помочь, если все, что вас беспокоит, находится под /etc/.

1
27.01.2020, 22:12

Теги

Похожие вопросы