2

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

谢谢。

4

3 回答 3

2

您可以将文件放入/usr/lib/mypkg/其中,即使它们在postinst.

有一个(弱)提示,打包程序可能会选择方便地将其用于策略部分 9.1.1中与体系结构无关和与体系结构相关的文件,尽管当然您的特定postinst场景并未涵盖在那里。

于 2018-03-28T15:59:10.697 回答
0

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

于 2018-03-28T13:39:25.857 回答
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.

于 2018-03-28T13:59:56.853 回答