如何解决我如何告诉 debian 包忘记文件这样文件在清除或删除期间不会被删除?
我制作的 debian 包覆盖了属于其他包的文件(使用 --force-overwrite 选项)。我意识到这很糟糕,但是在从包中删除这些文件、构建和重新安装后,它会删除这些文件,因为它认为我的包拥有这些文件并且不再需要它们。
我需要 dpkg 来忘记我的包曾经知道这些文件,这样我就可以删除/清除/安装而无需再次考虑这些文件。
请注意,此软件包仅用于部署在我控制的系统上,而不是分发给客户端,因此修补已安装的软件包是可以接受的,只要我可以将其恢复到非混乱状态。>
无法在 stackoverflow 或 here 上找到答案,感谢任何帮助或指向我错过的类似问题的链接。
解决方法
我们可以使用一些命令来帮助我们保持包依赖并删除包。
-
删除包而不删除依赖项。
sudo dpkg -r --force-depends
-
删除包含配置文件的包,但不删除依赖项。
sudo dpkg -P --force-depends
我强烈不推荐这个东西,因为有时依赖可能会在未来产生问题。
我总是喜欢在卸载包时卸载所有依赖。
如果您的包裹损坏了,那么您可以使用以下命令来解决问题。
修复损坏的包
sudo apt install -f
我已经根据这个article回答了这个问题。
,发现 dpkg 在此处存储了每个已安装软件包文件的列表:
/var/lib/dpkg/info/mydpkg.list
似乎是包安装的每个目录和文件的列表,例如
/etc/udev
/etc/udev/rules.d
/etc/udev/rules.d/95-serial485-pi3.rules
/etc/udev/rules.d/97-serial485-pi4.rules
修复: sudo vim /var/lib/dpkg/info/mydpkg.list
并删除我希望我的软件包忘记的文件行,因此在卸载时(或安装不不再有那些文件了。)不清楚是否有必要删除引用父目录的行(例如上面的 /etc/udev 和 /etc/udev/rules.d)。
奖励:我通过在列出这些文件的命令上使用 strace 找到了这个,找出它从哪里获取信息:
strace dpkg-query -L mydpkg
取自这里: https://unix.stackexchange.com/questions/200171/where-does-dpkg-l-gather-its-information
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。