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
场景未在此处介绍。
我正在尝试为 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
场景未在此处介绍。