Sua*_*uan 4 package-management debian packaging dpkg
默认的 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
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上搜索或询问。