Вопрос или проблема
Я использую yum для обновления своей Fedora. После большого обновления у меня появилось много файлов .rpmnew
и .rpmsave
. Я мог бы понять, если бы сам изменял эти файлы. Но я уверен, что не редактировал эти файлы.
Что мне делать с этими файлами? Что произойдет при следующем обновлении?
Вот пример этих файлов:
/usr/share/texmf-var/fonts/map/dvipdfm/updmap/dvipdfm_dl14.map.rpmnew
/usr/share/texmf-var/fonts/map/dvipdfm/updmap/dvipdfm_dl14.map.rpmsave
Спасибо
Есть два случая:
- Если файл был установлен как часть rpm, это конфигурационный файл (т.е. помеченный тегом
%config
), вы редактировали файл после этого и теперь обновляете rpm, тогда новый конфигурационный файл (из нового rpm) заменит ваш старый конфигурационный файл (т.е. станет активным файлом). Последний будет переименован с суффиксом.rpmsave
. - Если файл был установлен как часть rpm, это файл без замены конфигурации (т.е. помеченный тегом
%config(noreplace)
), вы редактировали файл после этого и теперь обновляете rpm, тогда ваш старый конфигурационный файл останется на месте (т.е. останется активным), а новый конфигурационный файл (из нового rpm) будет скопирован на диск с суффиксом.rpmnew
.
Смотрите, например, эту таблицу для всех деталей.
В обоих случаях вы или какая-то программа отредактировали конфигурационный файл(ы), и именно поэтому вы видите файлы .rpmsave
/ .rpmnew
после обновления, потому что rpm будет обновлять конфигурационные файлы тихо и без резервных файлов, если локальный файл не был затронут.
После обновления системы хорошая идея — просканировать файловую систему на наличие этих файлов и убедиться, что правильные конфигурационные файлы активны, а также, возможно, слить новое содержимое из файлов .rpmnew в рабочие файлы. Вы можете удалить файлы .rpmsave
и .rpmnew
, когда закончите.
Иногда менеджер пакетов просто немного путается в том, что представляет собой измененный файл, а что нет. Обычно это происходит, потому что какая-то программа вносила изменения (особенно эти файлы TeX).
Существует два подхода, которые я использую при работе с такими файлами, в зависимости от моего настроения, критичности системы и того, насколько я знаю о файле:
- После того как система нормально поработала некоторое время, просто удалю те, которые я не узнаю как измененные (возможно, это опасно, но я предполагаю, что если бы это было действительно важно, я бы уже заметил. Обратите внимание, что я делаю это только на «недорогих» системах, которые могу позволить себе исправить, если что-то пойдет не так);
- Сделайте унифицированный дифф (
diff -u <текущий файл> <новая/сохраненная версия>
) между различными версиями файла, просмотрите вывод и интегрируйте необходимые изменения между версиями, чтобы все обновить, а затем удалите файлы сохранения/новые, когда меня все устроит. Это гораздо больше работы (хотя маленькие скрипты shell для поиска и диффа файлов помогают), но почти гарантированно ничего не сломает, если я не напутаю при слиянии.
Я просто добавляю быстрый ответ, так как этот вопрос заметно появляется в веб-поиске даже в 2024 году; сейчас есть инструмент для этой задачи
# dnf install rpmconf
# rpmconf -a
Ответ или решение
Файл с расширением .rpmnew возникает после обновления пакетов в системах на базе RPM, таких как Fedora, в результате работы менеджеров пакетов, таких как yum
или dnf
. Давайте разберем причины появления этих файлов, а также что с ними делать и как управлять ими в дальнейшем.
Причины появления файлов .rpmnew и .rpmsave
Файлы .rpmnew и .rpmsave являются результатом обновления конфигурационных файлов пакетов. В системе RPM существует два ключевых случая работы с конфигурационными файлами:
-
%config: Если файл был установлен как конфигурационный (помечен тегом
%config
), и вы его изменили, при обновлении RPM менеджер заменит измененный файл новым, а старый файл переименует с добавлением суффикса .rpmsave. -
%config(noreplace): Если файл также является конфигурационным и помечен как
noreplace
, ваши изменения сохранятся, а новый файл будет добавлен с суффиксом .rpmnew. Это позволяет вам сохранить оригинальный файл без изменений.
Вы упомянули, что уверены, что не редактировали эти файлы, однако они могли быть изменены сторонними приложениями или библиотеками, что может сбить с толку менеджер пакетов.
Что делать с файлами .rpmnew и .rpmsave
После получения файлов .rpmnew и .rpmsave необходимо провести их анализ:
-
Просмотр изменений: Рекомендуется использовать команду
diff
для сравнения текущего файла и нового:diff -u /path/to/current_file /path/to/new_file.rpmnew
Это позволит вам увидеть все различия между вашими текущими конфигурациями и новыми, предложенными системой.
-
Интеграция изменений: На основании результатов сравнения вы сможете определить, стоит ли интегрировать изменения из .rpmnew в основной конфигурационный файл. Обычно это важно, если новые версии содержат важные улучшения или исправления.
-
Удаление ненужных файлов: После того как изменения были интегрированы и вы уверены, что конфигурация работает корректно, вы можете удалять файлы .rpmnew и .rpmsave.
Возможные действия на следующем обновлении
На следующем обновлении процесс повторится, и если ваши конфигурационные файлы не изменятся, то файлы, помеченные как .rpmnew, могут возникнуть вновь. Если вы хотите избежать появления излишних файлов, рассматривайте возможность использования инструмента rpmconf
, который автоматизирует процесс обработки конфигурационных файлов после обновления:
# Установка rpmconf
sudo dnf install rpmconf
# Запуск rpmconf для анализа
sudo rpmconf -a
Это упрощает процесс, позволяя вам быстро и удобно управлять конфигурациями без лишних головных болей.
Заключение
Появление файлов .rpmnew и .rpmsave нормальное явление при обновлениях систем на базе RPM. Настоятельно рекомендуется уделить время на изучение изменений и правильную интеграцию новых настроек, чтобы система функционировала наилучшим образом. При частых обновлениях использование инструментов, таких как rpmconf
, поможет оптимизировать этот процесс и минимизировать количество ненужных временных файлов.