包管理 – 如何创建安装一系列文件的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源,则需要在源代码控制文件中使用Architecture:amd64 i386.

为Launchpad创建包准备

This will eventually will become a series of individual launchpad PPA packages.

What I prefer (but may not be able to achieve…) is to keep my packaging to a minimum – create a series of packages from a template and adjust the bare minimum (changelog etc + the tar file).

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

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

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

可以使用ds命令编辑changelog文件,该命令可从devscripts包中获得.规则(使用debhelper)应包含:

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

使用chmod 755 debian / rules使其可执行.可以使用debuild -S构建源包.请务必位于名为< package-name> – < version>的目录中.有关override_ behavior和dh命令的更多信息可以在its manual page找到.

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的所谓control文件来描述该软件包.这样一个文件的内容如下:

Package: myplugin
Version: 1.0-1
Maintainer: You <whatever@contact.address>
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.

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

find myplugin -ls

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

dpkg-deb -b myplugin .

将出现一个新文件,名称类似于< package> _< version> _< architecture> .deb,在此示例中为myplugin_1.0-1_all.deb.您可以使用较少的程序来查看文件.例如,少了myplugin_1.0-1_all.deb.

转载注明原文:包管理 – 如何创建安装一系列文件的deb包 - 代码日志