Назад | Перейти на главную страницу

Как использовать dpkg-divert для временного удаления / замены символической ссылки при установке пакета?

Пакет nginx по умолчанию создает символическую ссылку с именем default в sites-enabled dir, который указывает на файл конфигурации по умолчанию в sites-available. В настоящее время я создаю пакет для приложения, которое находится поверх Nginx, и я хочу удалить или убрать default символическую ссылку и замените ее конфигурационным файлом из моего пакета. В идеале, в случае удаления моего пакета, оригинал default символическая ссылка будет восстановлена.

Я читал справочную страницу и примеры dpkg-divert, но я не совсем понимаю, что он может это сделать. Это достижимо с dpkg-divert, или я должен думать по-другому?

Если вы хотите перенаправить файл, принадлежащий другому пакету:

  • В вашем 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.