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

Debian软件包:放置临时安装文件的正确位置在哪里?,debian,package,dpkg,lintian,Debian,Package,Dpkg,Lintian,我正在尝试为Debian构建一个二进制软件包(使用dpkg-deb--build),我需要将一些文件复制到目标机器中,以使用postinst脚本完成安装(并在安装之后删除它们) 但我不知道把它们放在哪里 我试过/tmp/mypkg,/bin/mypkgtmp/,/usr/share/mypkg/tmp。 但林寻已经为他们所有人制作了错误/警告: 这是一个包含一些二进制文件的目录,所以我只能使用/usr/bin/mh 但是/usr/bin/mh似乎与邮件处理有关(不太清楚) 在不产生林寻

我正在尝试为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.

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

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

#/垃圾箱/垃圾箱
set-e
t=$(mktemp-t-d mypostinst.xxxxxxxxx)|退出
陷阱“rm-rf”$t”在HUP术语中退出错误

cat您可以将文件放在
/usr/lib/mypkg/
中,即使它们在
postinst
之后不是必需的或有用的,也可以放在那里


有一个(弱)提示,包装商可能会选择方便地将其用于架构独立和架构相关的文件,当然这里没有介绍您的特定
postinst
场景。

您的答案是针对src或bin包?我已经添加了我的包的树。我应该把tmp文件夹放在哪里?源代码包是由源代码完成的,可能没有修改。因此,您应该没有临时文件或其他文件。如果您篡改源代码,它就不再是源代码包。现在,在您的问题中,您正在显示DESTDIR(因此是输出)。我在这里展示的树不是输出,而是
dpkg deb--build.tmp
命令的输入感谢您的回答,但不想进入这种复杂的解决方案。似乎与
mh
一起工作,但不认为它是正确的位置。用不相关的文件污染
mh
命名空间肯定应该产生警告。我是说应该,不是这样。只是要理解,你是指二进制包中的临时文件,安装后应该删除,或者临时文件来构建一个包?也许你可以解释一下什么样的临时文件。通常,它可能会导致更多的问题(如果是第一种情况)。安装必须是幂等的。随着软件包的删除或升级,会调用各种安装前/安装后/删除。尽量避免使用临时文件:或者在构建时进行“计算”,或者安装支持文件。林寻的确切错误是什么?将包的根作为
.tmp
也是非标准的。您应该使用包名
-
版本。隐藏的文件作为基础是错误的。(不确定所有工具都能很好地处理这个问题)…tmp只是用于构建我的包。我的临时文件是由cython(
myClib.cpython-34m.so
)和一个纯python文件(
mytools.py
)生成的二进制文件,我想用
setup.py
安装它。不应该进行汇编。只是一个副本,但由python管理。我认为这是一个很好的方法。这将生成具有正确位置和策略链接的更新
#!/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===
: