< Pacman (Русский)

pacman (Русский)/Pacnew and Pacsave (Русский)

При удалении пакета pacman сохраняет его файл настроек в виде резервной копии с суффиксом .pacsave. Аналогично, при обновлении пакета pacman сохраняет новый файл настроек с суффиксом .pacnew, если его содержимое отличается от существующего файла настроек. pacman уведомляет пользователя о создании таких файлов.

Состояние перевода: На этой странице представлен перевод статьи pacman/Pacnew and Pacsave. Дата последней синхронизации: 12 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Почему эти файлы создаются

Файл .pacnew обычно создаётся во время обновления пакета (pacman -Syu, pacman -Su или pacman -U) во избежание перезаписи существующего файла, в который пользователь внёс изменения. Следующее сообщение в выводе pacman говорит от создании такого файла:

warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew

Файл .pacsave создаётся во время удаления (pacman -R) или обновления (когда необходимо сперва удалить предыдущую версию) пакета. Если в базе данных pacman имеется запись о создании резервной копии какого-либо файла, то создаётся файл .pacsave. В этом случае pacman выводит следующее сообщение:

warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave

Файлы .pacnew и .pacsave лучше всего обрабатывать вручную сразу после обновлений или удаления пакетов. Наличие в системе неправильных файлов настроек может привести к ошибкам в работе программ или даже к полной невозможности их запуска.

Резервные копии файлов пакета

Файлы, для которых необходимо создавать резервные копии при удалении или обновлении, перечисляются в файле PKGBUILD пакета. Например, PKGBUILD пакета pulseaudio содержит следующую строку:

backup=(etc/pulse/{daemon.conf,default.pa,system.pa})

После установки пакета список таких файлов можно получить из базы данных командой pacman -Qii пакет.

Альтернативный способ предотвращения перезаписи файлов при обновлении пакетов описан в статье pacman#Запрет на обновление файлов.

Разъяснение типов

.pacnew

Для каждого указанного в параметре backup файла обновляемого пакета pacman сравнивает контрольные суммы MD5 оригинальной версии файла, текущей, а также той, что должна быть установлена при обновлении. Если текущий файл в файловой системе был изменен и не соответствует оригинальной версии, pacman не может определить, как правильно объединить все изменения с новой версией файла. По этой причине он сохраняет новую версию с расширением .pacnew и оставляет измененную версию нетронутой.

Варианты сравнения контрольных сумм MD5:

оригинальный = X, текущий = X, новый = X 
Содержимое трёх версий файла совпадает, поэтому можно спокойно производить перезапись. Замена файла происходит без уведомления пользователя (хотя содержимое файлов одинаково, при этом будет обновлена информация о времени установки, изменения и последнего использования файла, а также права доступа, если они изменились).
оригинальный = X, текущий = X, новый = Y 
Содержимое текущей версии не изменялось, но новая версия имеет отличия. Поскольку пользователь не вносил изменений в текущую версию, а новая может содержать улучшения или исправления багов, текущая версия перезаписывается без уведомления пользователя. Это единственная операция объединения файлов, которую способен выполнить pacman.
оригинальный = X, текущий = Y, новый = X 
Изначальный и новый пакеты содержат абсолютно одинаковые версии файла, но текущая версия в файловой системе была изменена. Текущая версия остаётся без изменений, а новая — отклоняется без уведомления пользователя.
оригинальный = X, текущий = Y, новый = Y 
Новая версия идентична текущей. Текущая версия перезаписывается без уведомления пользователя (хотя содержимое файлов одинаково, при этом будет обновлена информация о времени установки, изменения и последнего использования файла, а также права доступа, если они изменились).
оригинальный = X, текущий = Y, новый = Z 
Все три версии различаются, поэтому текущая версия остаётся нетронутой, новая устанавливается с расширением .pacnew, а пользователь получает уведомление о произошедшем. Предполагается, что при необходимости пользователь вручную объединит файлы, внеся все необходимые изменения из новой версии в текущую.

.pacsave

Если при удалении пакета обнаруживается, что оригинальная версия backup-файла была изменена пользователем, то файл сохраняется с суффиксом .pacsave и остаётся в файловой системе.

Примечание: Опция -n в команде pacman -R позволяет полностью удалить такие файлы. В этом случае файлов .pacsave создано не будет.

Поиск файлов .pac*

Pacman не имеет функциональности для работы с файлами .pacnew, поэтому их необходимо обрабатывать вручную, как описано в следующем разделе. Перед этим необходимо определить местонахождение этих файлов. При обновлении или удалении большого количества пакетов файлы .pac* можно пропустить или не заметить. Найти все файлы .pac* можно одним из следующих способов:

  • Поиск по каталогу /etc, в котором хранится большинство глобальных конфигурационных файлов: Замените /etc на , чтобы выполнить поиск по всему диску. Для ускорения процесса можно выборочно исключить некоторые каталоги.
  • Используйте утилиту locate, если она установлена. Сначала обновите базу данных: Затем:
  • Используйте лог pacman:
    $ grep --extended-regexp "pac(new|save)" /var/log/pacman.log
    Обратите внимание, что в логе не содержится информации о том, какие файлы в настоящий момент находятся в системе, а какие уже удалены. Команда выведет список всех файлов .pac*, которые когда-либо существовали в системе. Чтобы ограничить вывод последними десятью файлами, перенаправьте его в утилиту .

Управление файлами .pac*

pacdiff

Утилита pacdiff из пакета выполняет поиск файлов .pacnew и .pacsave, после чего предлагает выбор из применимых к ним действиям. По умолчанию использует vimdiff, другой редактор можно задать в переменной окружения DIFFPROG=ваш_редактор pacdiff. Список утилит для сравнения файлов можно найти в статье List of applications/Utilities#Comparison, diff, merge.

Сторонние утилиты

В AUR можно найти несколько программ от сторонних разработчиков, предлагающий различный уровень автоматизации при работе с файлами .pac*:

Смотрите также

gollark: Wow, Ivy Bridge and 250GB HDDs? Ancient technology.
gollark: I would probably get multiple servers and run a distributed filesystem thing.
gollark: When I occasionally have to print things, I just dredge up an emergency Windows laptop.
gollark: Alpine is the base of postmarketOS, which is designed to run on underpowered phones.
gollark: Alpine or Void Linux?
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.