Как использовать dpkg-divert для временного удаления / замены символической ссылки, когда пакет установлен?
Пакет nginx по умолчанию создает символическую ссылку с именем default
в sites-enabled
dir, который указывает на файл конфигурации по умолчанию в sites-available
, В настоящее время я создаю пакет для приложения, которое находится поверх Nginx, и я хочу удалить или убрать default
символическая ссылка, и замените его на файл конфигурации из моего пакета. В идеале, если мой пакет удален, оригинал default
символическая ссылка будет восстановлена.
Я читал справочную страницу и примеры dpkg-divert
, но я не совсем понимаю, что он может сделать это. Это достижимо с dpkg-divert
Или я должен думать о другом?
1 ответ
Если вы хотите перенаправить файл, принадлежащий другому пакету:
В вашем preinst, перенаправьте файл прочь.
dpkg-divert --add --package $your_package_name --rename \ --divert /etc/nginx/sites-available/default.disabled \ /etc/nginx/sites-available/default
В вашем postrm, перенаправьте файл обратно.
dpkg-divert --remove --package $your_package_name --rename \ /etc/nginx/sites-available/default
Это не будет работать для символической ссылки /etc/nginx/sites-enabled/default
потому что он создан nginx
postinst пакета, а не быть частью пакета. Поскольку символическая ссылка является частью пакета, вы можете просто переименовать ее с помощью mv
, Я не знаю, соответствует ли это политике упаковки Debian; если это важно для вас, так как это довольно специализированный вопрос, я рекомендую поискать или задать вопрос по debian-devel.