Debian包:放置临时安装文件的地方在哪里?

时间:2018-03-28 12:48:09

标签: debian package dpkg lintian

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

但我不知道放在哪里。

我尝试过/tmp/mypkg/bin/mypkgtmp//usr/share/mypkg/tmp。 但林天为所有人制作了错误/警告:

它是一个包含一些二进制文件的目录,所以我唯一可以使用的地方似乎是/usr/bin/mh

/usr/bin/mh似乎与邮件处理有关(不太清楚)。

在没有产生林天错误或警告的情况下放置临时文件的正确位置是什么?

这是我的实际树:

.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

THX。

3 个答案:

答案 0 :(得分:2)

您可以将文件放在/usr/lib/mypkg/中,即使在postinst之后没有必要或有用,也可以将文件留在那里。

有一个(弱)提示,打包者可以选择方便将其用于Policy section 9.1.1中与体系结构无关的文件和依赖于体系结构的文件,当然,您的特定postinst方案不是在那里。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果这些文件仅对postinst脚本有用,或许您可以简单地将它们嵌入其中?这里的文档是一种方便的方法,可以在脚本中保留一组数据块(如果它们不是纯文本,可能是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