Как использовать 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.