如何创建安装一系列文件的deb软件包
我想创建一个全新的deb包来安装一系列文件。 如果可能的话,我想将包含这些文件的文件夹解压缩到已知文件夹位置作为安装的一部分。 如果做不到这一点,一些知识如何打包源文件夹和文件将是非常有用的。
问题是 – 这是可能的,如果可以的话 – 如何?
让我们举一个例子:
~/mypluginfolder/
包含文件x
, y
,一个名为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 .
将出现一个新文件,名称类似于
,在此示例中为myplugin_1.0-1_all.deb
。 您可以使用less
程序来查看文件。 例如, less myplugin_1.0-1_all.deb
。