Debian打包工具
项目描述
Python包deb-pkg-tools是一组用于构建和检查Debian二进制包和二进制包仓库的函数。它的主要用例是自动化构建。
部分功能通过命令行界面(以下文档)公开,因为它在shell脚本中使用非常方便,而其他功能则旨在用作Python API。目前该包已在cPython 2.7、3.5+和PyPy(2.7)上进行测试。
请注意,deb-pkg-tools 对 Debian 二进制软件包的构建方式有很强的观点,并且它强制用户遵守其中的一些观点。大多数这些观点可以通过可选函数参数和/或环境变量来避免。如果您发现有些功能不符合您的喜好,且您无法绕过它,请随时要求增加额外的配置选项;我尽力保持对项目可能的用途持开放态度。
状态
一方面,deb-pkg-tools 包基于我过去几年对 Debian 软件包和仓库的经验,另一方面,deb-pkg-tools 本身相当年轻。然而,大多数功能都由自动化测试覆盖;在撰写本文时,覆盖率约为 90%(如果还要测试非错误情况,则某些错误处理相当难以测试,这当然是主要焦点:-))
安装
deb-pkg-tools 包可在 PyPI 上获取,这意味着安装应该非常简单
$ pip install deb-pkg-tools
实际上有无数种方法可以安装 Python 包(例如,用户站点包目录,虚拟环境,或者仅安装系统级),我没有打算在这里讨论这个问题,所以如果您感到害怕,请在返回这些说明之前了解一下您的选项;:-)
当使用 deb-pkg-tools 扫描数千个 *.deb 存档时,可以使用 memcached 实现显著的加速
$ pip install "deb-pkg-tools[memcached]"
deb-pkg-tools 在幕后使用了 Debian 提供的几个程序,详细信息请参阅依赖项部分。要安装这些程序
$ sudo apt-get install dpkg-dev fakeroot lintian
用法
使用 deb-pkg-tools 包有两种方式:作为命令行程序和作为 Python API。有关 Python API 的详细信息,请参阅Read the Docs 上的 API 文档。以下将描述命令行界面。
用法: deb-pkg-tools [OPTIONS] …
为 deb-pkg-tools Python 项目提供了一个包装器,该项目实现了各种工具来检查、构建和操作 Debian 二进制软件包存档以及相关实体,如简单的仓库。
支持的选项
选项 |
描述 |
---|---|
-i, --inspect=FILE |
检查由 FILE 给出的 Debian 二进制软件包存档中的元数据(类似于“dpkg --info”)。 |
-c, --collect=DIR |
将作为位置参数给出的软件包存档(以及由给定软件包存档所需的所有软件包存档)复制到由 DIR 给出的目录中。 |
-C, --check=FILE |
对软件包存档及其依赖项进行静态分析,以便尽快识别常见错误。 |
-p, --patch=FILE |
将字段修补到由 FILE 给出的现有控制文件中。要与 -s,--set 选项一起使用。 |
-s, --set=LINE |
将行添加到控制文件中(语法:“名称:值”)。需要与 -p,--patch 选项一起使用。 |
-b,--build=DIR |
根据由 DIR 提供的目录中的二进制包模板,使用 “dpkg-deb --build” 构建Debian二进制包(以及大量的中间Python魔法,详细内容请参考项目的API文档)。生成的归档文件位于系统全局临时目录中(通常是 /tmp)。 |
-u,--update-repo=DIR |
在由 DIR 提供的目录中创建或更新简单的Debian二进制包仓库。 |
-a,--activate-repo=DIR |
在由 DIR 提供的目录中启用“apt-get”从简单仓库安装包(需要root/sudo权限)。或者您可以使用 -w,--with-repo 选项。 |
-d,--deactivate-repo=DIR |
在 --activate-repo 之后进行清理(需要root/sudo权限)。或者您可以使用 -w,--with-repo 选项。 |
-w,--with-repo=DIR |
创建或更新简单包仓库,激活仓库,将位置参数作为外部命令运行(通常是“apt-get install”),最后取消激活仓库。 |
--gc,--garbage-collect |
强制从持久的(磁盘上的)包元数据缓存中删除陈旧的条目。垃圾回收在deb-pkg-tools命令行界面在最后一个垃圾回收周期超过24小时后自动执行,所以您只需要在您想要控制何时发生时手动执行它(例如,在空闲时间安排的每日cron作业中 :-)。 |
-y,--yes |
假设对交互式问题的答案是“是”。 |
-v,--verbose |
制造更多的噪音!(在调试期间很有用) |
-h,--help |
显示此消息并退出。 |
需要注意的是,deb-pkg-tools --update-repo 的操作可能受配置文件的影响。有关详细信息,请参阅deb_pkg_tools.repo.select_gpg_key()的文档。
依赖项
以下外部程序是 deb-pkg-tools 所需的(当然,取决于您想要使用哪些功能)
程序 |
包 |
---|---|
apt-ftparchive |
apt-utils |
apt-get |
apt |
cp |
coreutils |
dpkg-deb |
dpkg |
dpkg-architecture |
dpkg-dev |
du |
coreutils |
fakeroot |
fakeroot |
gpg |
gnupg |
gzip |
gzip |
lintian |
lintian |
这些程序/包中的大多数已安装在大多数基于Debian的系统上,因此您只需以下内容即可开始
$ sudo apt-get install dpkg-dev fakeroot lintian
平台兼容性
如果系统或平台不适用,可以通过环境变量调整一些设置。例如,在Mac OS X上,cp命令没有-l参数,root用户和组可能不存在,但尽管如此,在Mac OS X上测试软件包构建仍然很有用。以下环境变量可用于调整这些因素
环境变量 |
默认值 |
---|---|
true |
|
true |
|
false |
|
true |
|
true |
|
true |
|
root |
|
root |
|
true |
布尔选项的环境变量支持字符串yes、true、1、no、false和0(忽略大小写)。
禁用sudo使用
要禁用任何sudo的使用,可以使用以下
export DPT_ALLOW_FAKEROOT_OR_SUDO=false
export DPT_CHOWN_FILES=false
export DPT_RESET_SETGID=false
export DPT_SUDO=false
联系方式
deb-pkg-tools的最新版本可在PyPI和GitHub上找到。文档托管在Read the Docs上。有关错误报告,请GitHub上创建问题。如果您有任何问题、建议等,请随时通过peter@peterodding.com给我发电子邮件。
许可证
本软件受MIT许可证许可。
© 2020 Peter Odding.
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。