我想创建一个全新的 deb 包来安装一系列文件。如果可能的话,我想将包含这些文件的文件夹作为安装的一部分解压到已知的文件夹位置。如果做不到这一点,那么了解如何打包源文件夹和文件的知识将非常有用。
问题是 - 这可能吗?如果可能 - 如何实现?
让我们举一个例子:
~/mypluginfolder/
包含文件x
、、y
一个名为的子文件夹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 文件/文件和文件夹结构)。
答案1
下面,我假设源代码是开放的(例如 Python 脚本),因此不受任何架构(例如 amd64 或 i386)的约束,因此是“全部”。如果您有一些 C 源代码,则需要Architecture: amd64 i386
在源control
文件中使用。
创建可用于 Launchpad 的包
这最终将会成为一系列单独的启动板 PPA 包。
我喜欢的(但可能无法实现......)是将我的包装保持在最低限度 - 从模板创建一系列包并调整最低限度(更改日志等+ tar 文件)。
Launchpad 仅接受源包,因此请创建一个rules
将文件安装在正确位置的文件夹。为方便起见,我将使用帮助器。包含文件的目录应如下所示:
debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...
文件debian/copyright
还可用于告知用户与软件包相关的许可证。我认为您不需要脚本,postinst
因为您只需要提取一些文件。compat
应包含 debhelper 兼容性级别,例如“8”。(请参阅debhelper 的手册页更多细节)
可以使用软件包中的命令来changelog
编辑该文件。(使用 debhelper)应该包含:dch
devscripts
rules
#!/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
它的手册页。
这Debian 新维护者指南对我理解这一点非常有价值,推荐阅读。示例包装可以在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 <[email protected]>
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
。