Я понимаю, что пакет состоит из двух компонентов: config
и data
файлов. Во время обновления пакета (т.е. обновления безопасности) data
файлы могут быть перезаписаны, но config
файлы всегда должны оставаться прежними. Также config
файлы обычно в /etc
и data
в /usr
. Иногда, однако, различие размыто.
В моем случае я изменил файл значков для Icedove
(Thunderbird):
/usr/share/applications/icedove.desktop
Теперь каждый раз, когда есть Icedove
обновлении (Thunderbird) мои изменения перезаписываются файлом по умолчанию (даже если он не менялся между обновлениями).
Есть ли способ предотвратить перезапись этого файла?
Установка его в значение immutable с помощью chattr +i icedove.desktop
не является хорошей идеей, так как это приводит к ошибке во время обновления пакета.
package-management
dpkg
Мартин Вегтер
источник
источник
$XDG_DATA_HOME/applications/icedove.desktop
, хотя обычно это путь поиска, который вы упоминаете. Спецификация Справочника Базы XDG также предоставляет путь поиска в$XDG_DATA_DIRS
для общесистемных переопределений. Более подробное объяснение того, как в этом случае применяются базовые каталоги XDG, содержится в моем ответе .Ответы:
В то время как ответ wurtel отвечает на вопрос в формулировке, рассмотрение фона в вопросе показывает, что это еще один случай проблемы XY .
В этом конкретном случае
/usr/share/applications/icedove.desktop
не следует изменять в первую очередь, но локальный файл конфигурации, который переопределяет конфигурацию по умолчанию, должен быть помещен в подходящее место. Системы, совместимые с freedesktop.org, соответствуют спецификации XDG Base Directory. , цель которой состоит в том, чтобы точно устранить необходимость изменения файлов конфигурации, которые перезаписываются во время обновления пакета.Если конфигурация предназначена для всей системы, локальный
icedove.desktop
должен быть помещен вapplications
подкаталог для поиска пути, предшествующего/usr/share
в$XDG_DATA_DIRS
. Значение этой переменной среды по умолчанию/usr/local/share/:/usr/share/
равно, но фактическое значение варьируется в зависимости от распределения. Поскольку в этом случае конфигурация должна быть локальной, правильное расположение есть/usr/local/share/applications/icedove.desktop
, хотя имейте в виду, что они могут иметь определенные переопределения, которые могут иметь предпочтение перед конфигурациямиusr/local/share
.С другой стороны, если конфигурация имеет отступ для конкретного пользователя, локальный
icedove.desktop
должен быть размещенapplications
в месте, указанном$XDG_DATA_HOME
. Обычно это значение по умолчанию$HOME/.local/share
, т.е. местоположение файла конфигурации должно быть$HOME/.local/share/applications/icedove.desktop
.источник
Вы хотите
dpkg-divert
утилиту.источник