当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

问题是-这可能吗?

让我们举个例子:

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

我要压缩此文件夹: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),因此”all”。如果您有C语言源,则需要在源control文件中使用Architecture: amd64 i386


创建准备用于启动板的软件包

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仅接受源程序包,因此创建一个rules,将文件安装在正确的位置。为了方便起见,我将使用debhelper。文件所在的目录应类似于:

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

debian/copyright文件对于通知用户与软件包相关联的许可证也可能有用。我认为您不需要postinst脚本,因为您只需要提取一些文件即可。 compat应该包含debhelper兼容性级别,例如”8″。 (有关更多详细信息,请参考the manual page of 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来构建源包。确保位于名为<package-name>-<version>的目录中。有关override_行为和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的so-called 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。您可以使用less程序来窥视该文件。例如less myplugin_1.0-1_all.deb

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11744.html,未经允许,请勿转载。