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

Sua*_*uan 4 package-management debian packaging dpkg

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

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

Gil*_*il' 5

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

  • 在你的preinst,转移文件。

    dpkg-divert --add --package $your_package_name --rename \
       --divert /etc/nginx/sites-available/default.disabled \
                /etc/nginx/sites-available/default
    
    Run Code Online (Sandbox Code Playgroud)
  • 在您的 postrm 中,将文件转移回来。

    dpkg-divert --remove --package $your_package_name --rename \
                /etc/nginx/sites-available/default
    
    Run Code Online (Sandbox Code Playgroud)

这对 symlink 不起作用/etc/nginx/sites-enabled/default,因为它是由nginx包的 postinst创建的,而不是包的一部分。由于符号链接是包的一部分,您只需将其重命名为mv. 我不知道这是否符合 Debian 打包政策;如果这对您很重要,因为这是一个相当专业的问题,我建议您在debian-devel上搜索或询问。