equals-build / apt-get:如何保留目录

equals-build / apt-get:如何保留目录

我正在使用 为私有存储库构建一些包equivs-build。这些文件安装正常,apt-get install但是当我删除它们时,它们试图删除它们安装到的整个文件夹结构。

在 equivs 文件中,我有以下行:

Files: <file to copy> /usr/local/sbin/

当我跑步时,apt-get remove会出现以下消息

“..目录 /usr/local 不为空,因此未删除。”

/usr/local/sbin文件夹被删除。

有什么办法可以防止这种情况吗?

答案1

有一些关于此的参考堆栈溢出dpkg在使用它背后的底层工具的上下文中apt-get1,2一个3。每次都会出现同样的考虑:

  1. 它是一个警告仅且该包确实已按要求删除及其目录
  2. 按照最佳实践,不应将 /usr/local 用于软件包,因为Debian 政策(什么是林田谈论包裹?)并尊重文件系统层次结构标准
  3. 有些人会经历一种不同的行为当目标位于其他位置(即 /bin VS)时,执行完全相同的删除操作。 /usr/local/bin 甚至 /opt
  4. 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

参考

相关内容