Аналог apt-get purge для yum

В дебиановском менеджере пакетов apt-get есть два варианта удаления пакета: apt-get remove package — удаляет бинарники, но сохраняет файлы конфигурации, а вот apt-get purge package — удаляет принудительно и файлы конфигурации тоже. Последнее бывает удобно, когда после установки пакета вы такого навертели в конфигах, что проще начать всё заново с дефолтных.

В yum есть тоже две команды: yum erase package и yum remove package. Но они — лишь синонимы, не смотря на то, что некоторые ребята считают erase аналогом дебиановского purge. Оба этих синонима ведут себя при удалении пакета следующим образом: они удаляют все бинарники и все дефолтные конфиги, но сохраняют с расширением .rpmsave те конфиги, которые чем-то отличались от дефолтных.

Например, если вы установите httpd, потом внесёте какие-то правки в конфиг /etc/httpd/conf/httpd.conf, а потом удалите httpd с помощью любой из команд, то при удалении yum вас предупредит:

Transaction Test Succeeded
Running Transaction
  Erasing    : httpd-2.2.15-39.el6.centos.x86_64                                                                                                                                              1/1 
warning: /etc/httpd/conf/httpd.conf saved as /etc/httpd/conf/httpd.conf.rpmsave
  Verifying  : httpd-2.2.15-39.el6.centos.x86_64                                                                                                                                              1/1 

Removed:
  httpd.x86_64 0:2.2.15-39.el6.centos                                                                                                                                                             

Complete!

И, как видите, даже сохранит ваш кастомный конфиг под альтернативным именем.

Даже если вы почистите локальный кеш командой yum clean all перед удалением, то заботливый yum перекачает пакет и сверит файлы, узнав, какие там у вас конфиги остались в исходном состоянии, а какие — поменялись, чтобы измененные бережно сохранить.

Но всё же будьте осторожны. Например, если у вас уже есть файл /etc/httpd/conf/httpd.conf.rpmsave, то yum его перезапишет. Короче, обязательно делайте резервные копии значимых для вас конфигов.

ОК, а как быть, когда хочется эффекта purge, т.е. полного удаления пакета, включая изменённые конфиги? Предлагаю удалять пакет с помощью такого однострочника:

yum -y remove httpd | grep 'warning:' | grep 'saved as' | cut -d' ' -f5 | xargs rm -rf

Кратко поясню, как работает конвейер: вывод yum мы парсим в поисках предупреждений (grep), извлекаем из строчек имена сохраняемых файлов (cut), удаляем их принудительно (rm). Если конфиги лежали в специально созданных пакетом директориях (как у того же Apache), то пустые директории вам в наследство всё же останутся. Удалите их руками.



Прокомментируйте: