如何创建包?

dae*_*300 0 linux packages

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

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

Ali*_*ani 13

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


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

sudo apt-get install cdbs
Run Code Online (Sandbox Code Playgroud)

创建一个工作目录,并移入您打算构建的包的源代码中


mkdir packages
cp mypackage-0.1.tar.gz packages
cd packages
Run Code Online (Sandbox Code Playgroud) 设置维护者邮箱和全名,此信息将用于包元数据信息。

export DEBEMAIL="user@address"
export DEBFULLNAME ="full name"
Run Code Online (Sandbox Code Playgroud) 运行 dh_make 后,会弹出一些问题,应该相应地回答,该工具会将一些模板提取到 packages/debian 目录中。有关运行 dh_mahe -h 的更多信息

dh_make 
Run Code Online (Sandbox Code Playgroud) 创建 .deb 包需要很多文件,这些文件存储在项目的根目录 packages/debian 中。对于设置必要的修改这些文件,你必须了解你的包中的一些informatins:依赖,版权,更新日志,生成文件...请参阅该政党成员 的下一步建造它内置调用在下面的命令二进制文件包。 /debian 目录:

cd debian
debuild -rfakeroot
Run Code Online (Sandbox Code Playgroud) 这将为你做一切。它会:

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


假设我们的存储库将只包含两个子目录:binary 和 source
dpkg-scanpackages 扫描 .deb 包;dpkg-scansources 扫描 .dsc 文件。
因此有必要将 .orig.gz、.diff.gz 和 .dsc 文件放在一起。不需要 .changes 文件。
在您的 www 中创建存储库目录,如下所示:


sudo mkdir -p /var/www/repository/{binary,source}
Run Code Online (Sandbox Code Playgroud) 将您的 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
Run Code Online (Sandbox Code Playgroud) 最后,将此添加到您的 source.lst 以便能够从存储库中获取您的包。

deb http://yourwebserver/repository binary/
deb-src http://yourwebserver/repository source/
Run Code Online (Sandbox Code Playgroud)

希望能帮到你,更多信息请参考完整文档:

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