Debian 软件包:放置临时安装文件的正确位置在哪里?

Debian package : where is the right place to put temporary installation files?

我正在尝试为 Debian 构建二进制包(使用 dpkg-deb --build),我需要将一些文件复制到目标机器以使用 postinst 脚本完成安装(并删除它们就在之后)。

但是我不知道把它们放在哪里

我试过/tmp/mypkg/bin/mypkgtmp//usr/share/mypkg/tmp。 但是林天已经为他们全部制作了error/warning :

这是一个包含一些二进制文件的目录,所以我唯一可以使用的地方似乎是 /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

谢谢。

将它们保存在源目录中。也许你在那里创建了一个 tmp。生成目标文件 (.o) 和其他中间文件并保存在那里。只是不要将它们放在输出目录 $(DESTDIR) 中,因此它们不会包含在包中。并且不要放在构建目录之外,这样构建工具就可以将您的包与构建系统的其余部分隔离开来。

如果这些文件只对 postinst 脚本有用,也许您可​​以简单地将它们嵌入其中? here 文档是在脚本中保存一组数据块的便捷方式(如果它们不是纯文本,则可能是 base64 编码或类似的)。

#!/bin/sh
set -e
t=$(mktemp -t -d mypostinst.XXXXXXXXXX) || exit
trap 'rm -rf "$t"' EXIT ERROR INT HUP TERM
cat <<\: >"$t"/somedata.txt
some
verbatim
text
:
base64 <<\: >"$t"/somebinary.dat
deadbeefc0ffeeman===
:

如果您的需求稍微复杂一些,也许还可以查看 shar

您可以将文件放在 /usr/lib/mypkg/ 中,即使它们在 postinst 之后不再需要或无用,也可以将它们留在那里。

有一个(微弱的)提示,打包程序可能会选择方便地对 Policy section 9.1.1 中的 architecture-independent 和 architecture-dependent 文件使用它,当然你的特定 postinst 场景未在此处介绍。