如何创建包?

如何创建包?

我的问题很简单,但我认为它会产生广泛的答案、建议等等;)

如何为 Ubuntu 或 Debian 等 Linux 系统创建软件包并通过根服务器发布它们?

答案1

Debian 软件包系统是安装、升级和删除公共存储库中可用的软件的最优雅的方法之一。如果您需要构建和维护非官方 Debian 软件包存储库,您可以考虑一些技巧。在这里,我将简要介绍获取公共 Debian 存储库的一些步骤。
首先,安装一些必要的软件包:


sudo apt-get install build-essential devscripts debhelper dh-make diff patch gnupg fakeroot lintian linda pbuilder
如果您打算在规则文件中使用它,则可能是 cdbs:

sudo apt-get install cdbs

创建工作目录,并移入你打算构建的包的源代码


mkdir packages
cp mypackage-0.1.tar.gz packages
cd packages
设置维护者电子邮件和全名,该信息将用于包元数据信息。

export DEBEMAIL="user@address"
export DEBFULLNAME ="full name"
运行 dh_make 后,会弹出几个问题,需要您做出相应的回答,此工具会将一些模板提取到 packages/debian 目录中。有关更多信息,请运行 dh_mahe -h

dh_make 
创建 .deb 包需要许多文件,这些文件存储在项目的根目录 packages/debian 中。要设置这些文件所需的更改,您必须了解有关包的一些信息:依赖项、版权、更改日志、makefile...请参阅本教程 下一步是构建二进制包,它是在 ./debian 目录中调用以下命令构建的:

cd debian
debuild -rfakeroot
这将为您完成所有工作。它将:

  • 使用 fakeroot 清理源树 (debian/rules clean)
  • 构建源包(dpkg-source -b)
  • 构建程序(debian/rules build)
  • 使用 fakeroot 构建二进制包 (debian/rules binary)
  • 使用 gnupg 对源 .dsc 文件进行签名
  • 使用 dpkg-genchanges 和 gnupg 创建并签署上传的 .changes 文件


假设我们的存储库只包含两个子目录:二进制和源
dpkg-scanpackages 扫描 .deb 包;dpkg-scansources 扫描 .dsc 文件。
因此,需要将 .orig.gz、.diff.gz 和 .dsc 文件放在一起。不需要 .changes 文件。
像这样在 www 中创建存储库目录:


sudo mkdir -p /var/www/repository/{binary,source}
将您的 deb 和源包移入 /var/www/repository/{binary,source} 并生成索引。

$ cp mypackage-0.1-1.deb /var/www/repository/binary/
$ cp mypackage-0.1-1.tar.gz  /var/www/repository/source/
$ cd /var/www/repository
$ dpkg-scanpackages binary /dev/null | gzip -9c > /var/www/repository/binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c > /var/www/repository/source/Sources.gz
最后,添加此 source.lst 以便能够从存储库中获取您的包。

deb http://yourwebserver/repository binary/
deb-src http://yourwebserver/repository source/

我希望这能有所帮助,有关更多信息,请参阅完整文档:

- Debian 维护者指南
- Ubuntu 打包指南

答案2

您可以使用以下文档创建软件包


当您的软件包准备好后,您可以使用 dpkg-scanpackage 来创建 apt 需要列出您的软件的软件包文件。

或者,你可以使用 apt-ftparchive,它需要更多配置,但可以用于具有不同架构等的更大的存储库。你可以找到一个很好的指南apt-ftparchive

也许你也应该看看 ubuntu 的苯丙胺。这是针对 ubuntu 和 debian 的自动构建服务和存储库。

答案3

检查安装工具将通过观察安装脚本或 makefile 执行的操作来自动创建 .deb / .rpm 和 slackware 包。对于不太复杂的包(没有大量安装前/安装后脚本的包),它可以做得相当好。

但是,我不会盲目地将使用 checkinstall 制作的软件包发布给公众。我只用它来捆绑我们在本地办公网络上安装的东西。

尽管如此,它还是值得一试。去年我们投入了大量精力来让它能够正确构建甚至复杂的软件包,并且不会出现 lint 问题。

我喜欢它,因为它很容易放入任何构建系统并填充简单的存储库。

答案4

如果你主要使用 ubuntu,你应该阅读这个:

https://help.launchpad.net/Packaging

我建议你使用 launchpad 来托管你的软件包,除非这些软件包是公司私有的。你还应该阅读Ubuntu 基本打包指南,获取有关如何从源代码构建包的详细说明。

相关内容