dpkg警告:删除目录/usr/local时发现不为空,因此未被删除。

11
我从以下文件夹结构中构建并安装了一个Debian软件包:
  • myprog
    • DEBIAN
      • control
    • usr
      • local
        • bin
          • myprog.sh
使用以下命令:

dpkg -b myprog/ myprog.deb && dpkg -i myprog.deb

现在,当我输入以下命令以删除该软件包时:

dpkg -r myprog

我收到了以下警告:

dpkg: warning: while removing myprog, directory '/usr/local' not empty so not removed.

我认为这是一种常见情况,如何避免此警告?
问候 Thorsten!
编辑:
我尝试将文件安装到/bin而不是/usr/local/bin,并在删除时没有收到警告。看起来,dpkg不会将/usr/local/..文件夹视为系统文件夹吗?

请参见此问题的答案:https://dev59.com/i2nWa4cB1Zd3GeqP5e7y#58066154 - Rob
2个回答

10

1
一些软件包会在 /usr/local 下创建条目,以更好地组织管理员可以添加的内容(例如 Python 相关、TeX、ca-certificates)。至少在 ca-certificates 的情况下,README.Debian 建议,如果我们希望本地创建的软件包提供新的受信任证书(例如用于内部 CA),则将文件部署在 /usr/local/share/ca-certificates 下。这是可以接受的,因为它是 本地 创建的东西,但如果您决定之后删除该软件包,则会出现问题! - Ricardo Cárdenes

0
为了避免警告,根据this post,需要创建一个“core-custom”/虚拟包,在/opt中安装,并由主要包所需。
因此,当您卸载主要包时,至少您的虚拟包将留在/opt中,dpkg不会发出警告。
您还可以使用该虚拟包作为元包来安装所有常规包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接