如何创建安装一系列文件的deb软件包

我想创建一个全新的deb包来安装一系列文件。 如果可能的话,我想将包含这些文件的文件夹解压缩到已知文件夹位置作为安装的一部分。 如果做不到这一点,一些知识如何打包源文件夹和文件将是非常有用的。

问题是 – 这是可能的,如果可以的话 – 如何?

让我们举一个例子:

~/mypluginfolder/包含文件xy ,一个名为abc的子文件夹,以及另一个名为z文件。

我想tar这个文件夹: tar -cvf myfiles.tar ~/mypluginfolder

我认为我的debian包看起来像

 myfiles.tar.gz myfiles+ppafoss_0.1-1/ myfiles.tar DEBIAN changelog, compat, control, install, rules source 

有可能以某种方式将myfiles.tar解压缩到例如已知的文件夹位置

 /usr/share/rhythmbox/plugins/ 

因此,最终结果将是:

 /usr/share/rhythmbox/plugins/mypluginfolder /usr/share/rhythmbox/plugins/mypluginfolder\x /usr/share/rhythmbox/plugins/mypluginfolder\y /usr/share/rhythmbox/plugins/mypluginfolder\abc\z 

如果 – 假设启动板需要源,则建议我将源文件夹和文件放入deb包结构的位置。


这最终将成为一系列单独的启动板PPA包。

我更喜欢(但可能无法实现……)是将我的包装保持在最低限度 – 从模板创建一系列包并调整最低限度(更改日志等+ tar文件/文件和文件夹结构) 。

下面,我假设源是开放的(例如Python脚本)因此不受任何架构(例如amd64或i386)的约束,因此“全部”。 如果您有一些C源,则需要在源代码control文件中使用Architecture: amd64 i386


为Launchpad创建包准备

这最终将成为一系列单独的启动板PPA包。

我更喜欢(但可能无法实现……)是将我的包装保持在最低限度 – 从模板创建一系列包并调整最低限度(更改日志等+ tar文件)。

Launchpad只接受源包,因此创建一个将文件安装在正确位置的rules 。 为方便起见,我将使用debhelper 。 包含文件的目录应如下所示:

 debian/changelog debian/control debian/rules debian/compat mypluginfolder/... 

debian/copyright文件也可用于向用户通知与包相关联的许可。 我认为您不需要postinst脚本,因为您只需要提取一些文件。 compat应该包含debhelper可比性级别,比如说“8”。 (有关详细信息,请参阅debhelper的手册页 )

可以使用dch命令编辑changelog文件,该命令可从devscripts包中获得。 rules (使用debhelper)应包含:

 #!/usr/bin/make -f %: dh $@ override_dh_install: dh_install mypluginfolder/ /usr/share/rhythmbox/plugins 

使用chmod 755 debian/rules使其可执行。 可以使用debuild -S构建源包。 确保位于名为- 。 有关override_ behavior和dh命令的更多信息, dh 见其手册页 。

Debian New Maintainers’Guide对我理解这一点非常有价值,建议阅读。 示例打包可以在https://github.com/Bumblebee-Project/bumblebee-ppa上找到。


从现有文件树创建包

dpkg-deb -b可用于从现有文件树创建tarball。 首先,首先创建一个应该以包命名的目录。 我假设您要将其命名为myplugin ,并将其放在/usr/share/rhythmbox/plugins/mypluginfolder 。 另外,创建用于存储包信息的DEBIAN目录(大写!):

 mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder mkdir myplugin/DEBIAN 

复制您的文件:

 cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins 

接下来,您需要一个位于myplugin/DEBIAN/control的所谓控制文件来描述该软件包。 这样一个文件的内容如下:

 Package: myplugin Version: 1.0-1 Maintainer: You  Architecture: all Description: plugins for Rhythmbox Longer description here . As you can see, new paragraph are split by a single dot, and lines have to be indented by one space. 

现在,您可以选择validation包的内容。 下一个命令列出了myplugin的文件和目录条目内容:

 find myplugin -ls 

如果您满意,请在当前目录中构建包:

 dpkg-deb -b myplugin . 

将出现一个新文件,名称类似于__.deb ,在此示例中为myplugin_1.0-1_all.deb 。 您可以使用less程序来查看文件。 例如, less myplugin_1.0-1_all.deb