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



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

,但我不知道将它们放在哪里。

我尝试过/tmp/mypkg/bin/mypkgtmp//usr/share/mypkg/tmp。但是lintian为所有这些都产生了错误/警告:

  • dir-or-file-in-tmp
  • 依赖于拱门的利用 - in-in-li>
  • subdir-in-usr-bin

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

thx。

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

有一个(弱的(暗示,包装器可能会选择方便,以在策略第9.1.1节中使用与架构独立的和架构相关的文件一起使用,尽管您的特定postinst方案当然不涵盖那里。<<<<<<<<<<<<<<<<<<<<<<

将它们保存在源目录中。也许您在那里创建一个tmp。对象文件(.o(和其他中间文件已生成并保留在此处。只是不要将它们放入输出目录$(DESTDIR)中,因此它们不会包含在软件包中。并且不要放置室外建筑目录,因此建筑工具没有问题,可以从构建系统的其余部分绝缘您的包裹(。

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

#!/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

最新更新