我正在使用 为私有存储库构建一些包equivs-build
。这些文件安装正常,apt-get install
但是当我删除它们时,它们试图删除它们安装到的整个文件夹结构。
在 equivs 文件中,我有以下行:
Files: <file to copy> /usr/local/sbin/
当我跑步时,apt-get remove
会出现以下消息
“..目录 /usr/local 不为空,因此未删除。”
该/usr/local/sbin
文件夹被删除。
有什么办法可以防止这种情况吗?
答案1
有一些关于此的参考堆栈溢出dpkg
在使用它背后的底层工具的上下文中apt-get
:1,2一个3。每次都会出现同样的考虑:
- 它是一个警告仅且该包确实已按要求删除及其目录
- 按照最佳实践,不应将 /usr/local 用于软件包,因为Debian 政策(什么是林田谈论包裹?)并尊重文件系统层次结构标准
- 有些人会经历一种不同的行为当目标位于其他位置(即 /bin VS)时,执行完全相同的删除操作。 /usr/local/bin 甚至 /opt
- preinst、prerm、postinst 和 postrm脚本从技术上讲,可以包含在安装/删除期间改变行为的内容 - 但话又说回来, /usr/local 中 dpkg 的行为是例外或规则(删除空的顶级目录,不限于一级) - 并且是设计受包和文件夹所有权的影响还是仅受 /usr/local 中的包的影响?
最后,可能还有备择方案随着时间的推移,这涉及到更好地构建手头的任务......例如创建一个包存储库。最终等价构建必须以一种不冲突与包管理系统的设计。
答案2
您的Files
行看起来是否与您键入的一样,或者您是否缺少单词:
后面的冒号 () Files
?
如本例所示,equivs 控制文件:
### Commented entries have reasonable defaults.
### Uncomment to edit them.
Section: misc
Priority: optional
Standards-Version: 3.6.2
Package: main-package
Version: 0.0.1
Maintainer: Your Name <[email protected]>
# Pre-Depends: <comma-separated list of packages>
# Depends: <comma-separated list of packages>
# Recommends: <comma-separated list of packages>
# Suggests: <comma-separated list of packages>
# Provides: <comma-separated list of packages>
# Replaces: <comma-separated list of packages>
Architecture: all
# Copyright: <copyright file; defaults to GPL2>
# Changelog: <changelog file; defaults to a generic changelog>
# Readme: <README.Debian file; defaults to a generic one>
Files: /home/myuser/main-package.conf /etc/main-package.conf
Description: <short description; defaults to some wise words>
long description and info