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

Другие вопросы по тегам