2009-11-30 29 views
2

我有以下的Debian结构:Debian包创建在PREINST必需的目录

  • 的Debian的/ usr /共享/测试
  • 的Debian的/ usr /共享/测试/检验
  • 的Debian的/ usr /共享/测试/检验/一个
  • 的Debian的/ usr /共享/测试/检验/ b

使用dpkg-DEB --build使用dpkg -i构建软件包和安装后,它不似乎会自动创建文件夹测试,如果它们不存在。我是否需要在preinst脚本中手动创建它们?

更新:问题是因为preinst有一个错误,所以拆包没有得到发生的机会。

洛朗

回答

3

看看我的例子here

debian/DEBIAN 
debian/usr/bin 
debian/usr/lib 

你有两个选择:

  1. 填充与文件目录生成包(二进制包)之前
  2. 构建包凡MAKE会被调用来构建包并安装它。

在第一种情况下,您不需要通过preinst脚本创建目录:如果安装该软件包时包管理器需要,则会创建文件夹层次结构。

在第二种情况下,你将需要使用mkdir -pinstall阶段创建的文件夹层次。


在过去一年我一直在通过3点不同的包装Debian仓库的方式,相信我,细节账户是多方面的。一个解决办法是熟悉Launchpad及其PPA发布流程。

+0

就我而言,它是一个二进制包。我的结构与您的结构相同,但是当我使用dpkg -i时,它不会解压缩任何文件或文件夹。 – 2009-12-01 01:20:00

+0

大约有8000个源代码包 - 为什么不选择现有的简单包并查看它的功能?出于这个原因,我们曾经有一个简单的'hello'包作为工作示例。 – 2009-12-01 02:07:34

+0

更新:问题是因为preinst有错误,所以拆包没有机会发生。 – 2009-12-01 02:28:11

0

你需要那些在指定包或者tmp或相同的debian /控制列出您的第一个软件包,这取决于您选择的debhelper的兼容模式的版本。

E.g.从debhelper例如文件中的一个电话:

$(MAKE) prefix=`pwd`/debian/`dh_listpackages`/usr install 

你缺少一个间接层这里。

+0

望着HOWTO,他们说创建以下文件夹,例如: -p ./debian/usr/bin 然后./debian/DEBIAN/control等等 似乎的mkdir他们不在'debian'之前添加软件包名称。 我错过了什么吗? – 2009-12-01 00:05:15

+0

然后HOWTO可能是错的。你有网址吗? – 2009-12-01 00:33:20

+0

http://tldp.org/HOWTO/html_single/Debian-Binary-Package-Building-HOWTO/#AEN88 – 2009-12-01 00:35:16