【发布时间】:2018-09-07 04:01:48
【问题描述】:
我正在尝试为 Debian 构建一个二进制包(使用 dpkg-deb --build),我需要将一些文件复制到目标机器中以使用 postinst 脚本完成安装(并在之后删除它们)。
但我不知道把它们放在哪里。
我试过/tmp/mypkg、/bin/mypkgtmp/、/usr/share/mypkg/tmp。
但是 Lintian 对所有这些都产生了错误/警告:
这是一个包含一些二进制文件的目录,所以我唯一可以使用的地方似乎是/usr/bin/mh。
但是/usr/bin/mh似乎和邮件处理有关(不是很清楚)。
在不产生 Lintian 错误或警告的情况下放置我的临时文件的正确位置是什么?
这是我的实际树:
.tmp
├── DEBIAN
│ ├── control
│ └── postinst
└── usr
├── bin
│ ├── mypkg
│ └── mh
│ └── mypkgtmp
│ ├── build
│ │ └── lib.linux-x86_64-3.4
│ │ ├── myClib.cpython-34m.so
│ │ └── mytools.py
│ └── setupCython.py
└── share
└── doc
└── mypkg
├── changelog.gz
└── copyright
谢谢。
【问题讨论】:
-
只是为了理解,你是指二进制包中的临时文件,安装后应该删除,还是构建包的临时文件?
-
也许你能解释一下什么样的临时文件。通常它可能会导致更多问题(如果是第一种情况)。安装必须是幂等的。随着软件包的删除或升级,各种 pre/post-install/remove 被调用。尽量避免使用临时文件:或者在构建时进行“计算”,或者安装支持文件。
-
究竟是什么 lintian 错误?将包的根作为
.tmp也是非标准的。您应该使用包名-版本。作为基础的隐藏文件是坏的。 (不确定所有工具都能很好地处理这个问题)。 -
.tmp 仅用于构建我的包。紧接着,我用好名字重命名它。
-
我的临时文件是由 cython (
myClib.cpython-34m.so) 生成的二进制文件和我想用setup.py安装的纯 python 文件 (mytools.py)。不应该有编译。只是一个副本,但由 python 管理。我认为这是个好方法。
标签: debian package dpkg lintian