如何在安装包时使用 dpkg-divert 暂时删除/替换符号链接?

如何在安装包时使用 dpkg-divert 暂时删除/替换符号链接?

默认的 nginx 软件包会defaultsites-enabled目录中创建一个名为的符号链接,该符号链接指向 中的默认配置文件sites-available。我目前正在为位于 Nginx 之上的应用程序创建一个软件包,我想删除或移走符号default链接,并将其替换为软件包中的配置文件。理想情况下,如果我的软件包被删除,则原始default符号链接将被恢复。

我一直在阅读 的手册页和示例dpkg-divert,但我不太明白它可以做到这一点。这可以用 实现吗dpkg-divert,还是我必须想出另一种方法?

答案1

如果你想转移另一个包拥有的文件:

  • 在您的预演中,将文件转移走。

    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

相关内容