Python到Debian源包转换工具
项目描述
stdeb - Python到Debian源包转换工具
stdeb通过一个新的distutils命令sdist_dsc,从Python包生成Debian源包。为Debian包提供了自动默认设置,但许多方面的结果包可以进行自定义(请参阅下面的自定义部分)。额外的命令bdist_deb创建一个Debian二进制包,一个.deb文件。命令install_deb安装这个.deb文件。命令debianize直接在您的setup.py旁边构建一个debian/目录。
还提供了一些便利的工具
pypi-download将查询Python包索引(PyPI)以获取包并下载它。
pypi-install 将查询 Python 包索引 (PyPI) 中的软件包,下载它,从中创建一个 .deb 文件,然后安装这个 .deb 文件。
py2dsc 将 distutils 构建的源 tarball 转换为 Debian 源软件包。
py2dsc-deb 将 distutils 构建的源 tarball 转换为 Debian 源软件包,然后使用 Debian 工具链从这个源软件包构建一个 .deb 文件。
Python 3 支持
如以下更详细地解释,stdeb 的核心是 sdist_dsc distutils 命令。该命令运行一次以生成 Debian 源软件包。这个 Debian 源软件包可以指定为 Python 2、Python 3 或两者都构建软件包。此外,这个生成可以使用 Python 2 或 Python 3 解释器来完成。默认情况下,只为正在使用的 Python 版本构建软件包。要覆盖此设置,请使用 --with-python2=True 或 --with-python3=True 作为 sdist_dsc distutils 命令的参数(或同时使用两者以确保)。例如,仅使用 Python 3 解释器构建 Python 3 软件包
python3 setup.py --command-packages=stdeb.command bdist_deb
使用 Python 3 解释器构建 Python 2 和 Python 3 软件包(并且只有 Python3 软件包安装脚本)
python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
新闻
2020-10-28: 版本 0.10.0。请参阅 下载页面。
错误修复
在 PyPI API 调用之间添加睡眠以避免速率限制 (#173)
改进
如果设置了 SOURCE_DATE_EPOCH,则使用它为生成的 changelog 中的时间戳生成可重复构建的工件 (#166)
将 debhelper 兼容版本从 7 更新到 9 (#158)
添加标志 –with-dh-systemd (#162)
添加对 DEBEMAIL 环境变量的支持 (#168)
使用 setuptools 的“url”字段在 debian/control 中的“Homepage”字段中 (#169)
dh_virtualenv:指定 Python 版本 (#165)
添加兼容标志以修改 Debian 兼容级别 (#163)
外观:* 从 debian/control 和 rules 文件中删除多余的换行符 (#167) * 使用 flake8 在 Travis CI 中检查样式,更新代码以符合规范 (#171)
2020-06-11: 版本 0.9.1。请参阅 下载页面。
错误修复
处理 zip tarball 中的带空格的路径 (#150)
修复 Python 3 中的 map() 迭代器问题 (#152)
修复使用仅 Python 3 时检查 python3-all(而不是 python-all)的问题 (#154)
改进
在 Python 中获取日期,避免在 macOS 上要求 date (#115)
添加配置文件选项 Python2-Depends-Name (#156)
添加选项 --with-dh-virtualenv (#155)
添加选项 ignore-source-changes (#151)
2019-12-09: 版本 0.9.0。请参阅 下载页面。
错误修复
修复在Python 3下应用补丁文件的问题
改进
向sdist_dsc和bdist_deb命令添加--sign-results
将--debian-version添加到命令行程序选项
在debian/control中添加对Breaks / Breaks3的支持
添加对Suite3选项的支持
在pypi-install中支持zip文件
破坏性变更
移除已弃用的dh_desktop调用
2015-02-18: 版本 0.8.5. 请参阅下载页面。错误修复:撤销了在虚拟环境中构建时安装到虚拟环境的更改。改进:添加了–allow-virtualenv-install-location以允许安装到虚拟环境位置。支持Debian Squeeze (6),Debian Wheezy (7),Ubuntu Precise (12.04),Ubuntu Trusty (14.04)及以后版本。
2015-02-16: 版本 0.8.4. 请参阅下载页面。错误修复:再次在Python 3.4(例如Ubuntu Trusty)上工作。改进:改进了Python 3的定制(Dirk Thomas添加了force-x-python3-version和X-Python3-Version,Louis添加了对Recommends3,Suggests3,Provides3和Replaces3的支持。支持Debian Squeeze (6),Debian Wheezy (7),Ubuntu Precise (12.04),Ubuntu Trusty (14.04)及以后版本。
2015-02-14: 版本 0.8.3. 请参阅下载页面。这是一个错误修复版本,修复了Unicode支持的几个方面。在Debian Squeeze (6),Debian Wheezy (7)和Ubuntu Precise (12.04)上测试通过。支持Python 3.4(例如Ubuntu Trusty 14.04)的错误被意外破坏,并在0.8.3版本中修复。
2014-8-14: 版本 0.8.2. 请参阅下载页面。这是一个错误修复版本,修复了一个严重的问题,在某些情况下,如果只请求Python 3包,则会构建Python 2包。
2014-8-10: 版本 0.8.1. 请参阅下载页面。由于0.8.0中的错误,此版本是0.8系列的第一个宣布版本。自0.7.1以来的亮点
完全支持Python 3。这包括从Python 3运行以及为Python 3生成软件包。默认情况下,使用Python 3运行时构建Python 3软件包,使用Python 2运行时构建Python 2软件包。也可以使用命令行选项来为其他Python解释器构建软件包。
为源软件包构建.changes文件。虽然这仍然必须签名后才能上传到PPA等,但在某些情况下仍然应该有用。
切换到Debian源格式3.0(quilt)。实际上,以前与源软件包一起提供的.diff.gz文件现在被.deb.tar.gz文件所替代。
在与PyPI通信时验证SSL证书。(验证需要Requests >= 0.8.8。)
许多错误修复。
2014-05-05: 版本 0.7.1. 请参阅下载页面。本发布版本的亮点(您还可以查阅完整的变更日志)。由于0.7.0中的错误,此版本是0.7系列的第一个宣布版本。自0.6.0以来的亮点
新命令:pypi-download和pypi-install,分别用于直接从PyPI下载和安装软件包。py2dsc-deb直接从源tarball创建.deb文件。
新distutils命令:install_deb允许您直接将Python包安装为标准系统软件包。
许多错误修复,包括PyPI的新URL。
通过Travis CI自动运行测试套件
感谢许多人的帮助,尤其是Piotr Ożarowski对stdeb的帮助。
2010-06-18: 版本 0.6.0. 请参阅下载页面。本发布版本的亮点(您还可以查阅完整的变更日志)
新增了一个用于在您的 setup.py 文件旁边构建 debian/ 目录的 debianize 命令。
错误修复。
2009-12-30: 版本 0.5.0。请参阅下载页面。本次发布的亮点(您也可以参考完整的变更日志)
新增了一个 pypi-install 脚本,它会自动下载、创建 .deb 文件并从Python 包索引 (PyPI) 安装软件包。
移除了对 setuptools 的依赖。
新增了一个选项(–guess-conflicts-provides-replaces)用于查询原始 Debian 软件包的 Conflicts/Provides/Replaces 信息。
由于这些更改以及修复了一些 bug/warts,进行了一些小的向后不兼容的更改和弃用。请参阅发布说明。
2009-09-27: 发布了版本 0.4。请参阅下载页面。本版本切换到 debhelper 7。请参阅0.4 版本变更日志。
包括 0.3.2 在内的所有早期版本都与 Ubuntu Hardy 兼容。
2009-10-04: 发布了版本 0.3.2。请参阅下载页面。请参阅0.3.2 版本变更日志
2009-09-27: 发布了版本 0.3.1。请参阅下载页面。请参阅0.3.1 版本变更日志
2009-03-21: 发布了版本 0.3。请参阅下载页面。请参阅0.3 版本变更日志
2009-02-17: 发布了版本 0.2.3。请参阅下载页面。请参阅0.2.3 版本变更日志
2009-01-29: 发布了版本 0.2.2。请参阅下载页面。请参阅0.2.2 版本变更日志
2008-04-26: 发布了版本 0.2.1。请参阅下载页面。请参阅0.2.1 版本变更日志
2008-04-26: 发布了版本 0.2。请参阅下载页面。请参阅0.2 版本变更日志
2007-04-02: 发布了版本 0.2.a1。请参阅旧下载页面。
2006-06-19: 发布了版本 0.1。请参阅旧下载页面。
命令
pypi-download,命令行命令
pypi-download 接收一个包名,查询 PyPI 并下载它
pypi-download [options] mypackage
pypi-install,命令行命令
pypi-install 接收一个包名,查询 PyPI 并下载它,构建 Debian 源包,然后从它构建 .deb 文件,并安装它
pypi-install [options] mypackage
py2dsc,命令行命令
py2dsc 接收一个 .tar.gz 源包并从中构建 Debian 源包
py2dsc [options] mypackage-0.1.tar.gz # uses pre-built Python source package
py2dsc-deb,命令行命令
py2dsc-deb 接收一个 .tar.gz 源包并从中构建 Debian 源包,然后构建 .deb 文件
py2dsc-deb [options] mypackage-0.1.tar.gz # uses pre-built Python source package
sdist_dsc,distutils 命令
所有方法最终都会调用 sdist_dsc distutils 命令。您可能更愿意直接这样做
python setup.py --command-packages=stdeb.command sdist_dsc
从未经修改的 Python 包中生成 Debian 源包。以下文件将在新创建的子目录 deb_dist 中生成
packagename_versionname.orig.tar.gz
packagename_versionname-debianversion.dsc
packagename_versionname-debianversion.diff.gz
这些可以使用标准的 Debian 工具(例如 dpkg-buildpackage)编译成二进制包
bdist_deb,distutils 命令
安装了 bdist_deb distutils 命令。这调用 sdist_dsc 命令,然后在结果上运行 dpkg-buildpackage
python setup.py --command-packages=stdeb.command bdist_deb
install_deb,distutils 命令
install_deb distutils 命令调用 bdist_deb 命令,然后安装结果。您需要以超级用户权限运行此命令
sudo python setup.py --command-packages=stdeb.command install_deb
debianize,distutils 命令
debianize distutils 命令构建与先前命令中使用的相同的 debian/ 目录,但输出直接放置在项目的根文件夹中(与 setup.py 并排)。这对于直接定制 Debian 包非常有用(而不是使用各种 stdeb 选项调整生成的包)。
python setup.py --command-packages=stdeb.command debianize
关于告诉 distutils 使用 stdeb distutils 命令的说明
Distutils 命令包也可以在 distutils 配置文件中指定(而不是使用 --command-packages 命令行参数),如 distutils 文档 中所述。具体来说,您可以将此包含在您的 ~/.pydistutils.cfg 文件中
[global] command-packages: stdeb.command
示例
这些都假设您已将 stdeb 安装在系统 Python 路径中。stdeb 也可以从非系统 Python 路径(例如 virtualenv)运行。
快速入门 1:现在从 PyPI 安装一些东西,其他什么都不管
从命令行执行此操作
pypi-install mypackage
警告:尽管 stdeb 尽力而为,但它绝对无法在没有人工干预的情况下保证所有 Debian 包依赖都得到正确满足。使用 pypi-install 将绕过您自定义 stdeb 行为的能力。阅读本文件的其余部分以了解如何制作更好的包。
快速入门 2:只告诉我制作 .deb 文件的最快方式
(首先,像安装 Python 包一样安装 stdeb。)
从包含您的 setup.py 文件的目录执行此操作
python setup.py --command-packages=stdeb.command bdist_deb
这将生成 Debian 源包(.dsc、.orig.tar.gz 和 .diff.gz 文件),然后编译它为当前系统的 Debian 二进制包(.deb),结果将在 deb_dist 中。
警告:在其他版本的 Ubuntu 或 Debian 上安装编译的 .deb 文件将导致未定义的行为。如果您有扩展模块,它们可能会损坏。即使在没有扩展模块的情况下,也可能发生一些不好的事情。
因此,更好的做法是为每个目标 Debian 或 Ubuntu 版本构建 Debian 源包,然后编译它(例如,使用 Ubuntu 的 PPA)。
快速入门 3:我已阅读警告,所以请展示如何制作源软件包,然后编译它
这生成一个源包
wget http://pypi.python.org/packages/source/R/Reindent/Reindent-0.1.0.tar.gz py2dsc Reindent-0.1.0.tar.gz
这使用标准的 Debian 工具将其转换为 .deb。 (在每个目标发行版的同一源包上执行 此 操作)
cd deb_dist/reindent-0.1.0/ dpkg-buildpackage -rfakeroot -uc -us
这会安装它
cd .. sudo dpkg -i python-reindent_0.1.0-1_all.deb
快速入门 4:从 Python 包直接安装到 Debian 系统包
(首先,像安装 Python 包一样安装 stdeb。)
从包含您的 setup.py 文件的目录执行此操作
python setup.py --command-packages=stdeb.command install_deb
这将生成 Debian 源包(.dsc、.orig.tar.gz 和 .diff.gz 文件),为当前系统编译成 Debian 二进制包(.deb),然后使用 dpkg 安装它。
另一个示例,包含更多解释
如果您没有Python源代码包(由 python setup.py sdist 生成的 .tar.gz 文件),这个例子更有用。为了说明,我们确实下载了这样的压缩包,但立即将其解压(或者,使用版本控制系统获取已解压的源代码包)
wget http://pypi.python.org/packages/source/R/Reindent/Reindent-0.1.0.tar.gz tar xzf Reindent-0.1.0.tar.gz cd Reindent-0.1.0
以下命令将生成一个名为 deb_dist 的目录,其中包含文件 reindent_0.1.0-1.dsc、reindent_0.1.0.orig.tar.gz 和 reindent_0.1.0-1.diff.gz,这些文件组合起来就是一个Debian源代码包
python setup.py --command-packages=stdeb.command sdist_dsc
以上方式生成的源代码也已被解压(使用 dpkg-source -x)并放置在 deb_dist 子目录中。为了继续上面的例子
cd deb_dist/reindent-0.1.0 dpkg-buildpackage -rfakeroot -uc -us
最后,生成的软件包可以安装
cd .. sudo dpkg -i python-reindent_0.1.0-1_all.deb
关于另一个使用示例,以及更多的解释,请参阅 allmydata-tahoe工单251。
下载
文件可在 下载页面 上找到(对于旧版本,请参阅 旧下载页面)。
git仓库可在 http://github.com/astraw/stdeb 找到
安装(或,使用 stdeb 创建 stdeb 安装程序)
为了好玩,下面是使用stdeb安装stdeb的方法。请注意,stdeb也存在于Debian和Ubuntu中,所以这个配方只是为了安装较新的stdeb。
STDEB_VERSION="0.10.0" # Download stdeb wget http://pypi.python.org/packages/source/s/stdeb/stdeb-$STDEB_VERSION.tar.gz # Extract it tar xzf stdeb-$STDEB_VERSION.tar.gz # Enter extracted source package cd stdeb-$STDEB_VERSION # Build .deb (making use of stdeb package directory in sys.path). python setup.py --command-packages=stdeb.command bdist_deb # Install it sudo dpkg -i deb_dist/python-stdeb_$STDEB_VERSION-1_all.deb
背景
对于普通的Python包,其源代码分发(使用 python setup.py sdist 生成的 python_package.tar.gz)包含构建Debian源代码包所需的大部分内容。这种近似相等性促使我编写了这个distutils扩展,它会执行setup.py文件以提取相关信息。也可以选择使用 setuptools。
我最初编写这个是为了将我自己的几个Python包Debian化,但我感觉它可能具有普遍的实用性。它在理论上至少看起来与 easydeb、Logilab的Devtools、bdist_dpkg、bdist_deb、pkgme 和 dh-virtualenv 相似。
特性
为python-support支持的所有Python版本创建一个包。(可以使用 XS-Python-Version: 配置选项来限制此范围。)
自动将Python包名转换为有效的Debian包名。
尝试自动转换版本号,以保持排序。另请参阅配置选项 Forced-Upstream-Version。
精细控制版本号。(Debian-Version、Forced-Upstream-Version、Upstream-Version-Prefix、Upstream-Version-Suffix 配置选项。)
安装 .desktop 文件。(MIME-Desktop-Files 配置选项。)
安装 .mime 和 .sharedmimeinfo 文件。(MIME-File 和 Shared-MIME-File 配置选项。)
安装版权文件。(Copyright-File 配置选项。)
对上游源代码应用补丁。(Stdeb-Patch-File 配置选项。)
将环境变量传递给setup.py脚本。(Setup-Env-Vars 配置选项。)
自定义生成的 Debian 源软件包(配置选项)
stdeb将尝试提供合理的默认值,但这些只是猜测。
有两种方法可以自定义stdeb生成的Debian源代码包。首先,您可以为distutils命令提供选项。其次,您可以提供一个 stdeb.cfg 文件。
stdeb distutils 命令选项
sdist_dsc命令接受distutils命令的命令行选项。例如
python setup.py --command-packages=stdeb.command sdist_dsc --debian-version 0MyName1
这会创建一个Debian包,将Debian版本设置为“0MyName1”。
这些选项也可以通过distutils配置文件来设置。(这些是位于setup.py
旁边的setup.cfg
文件和~/.pydistutils.cfg文件。)在这种情况下,将参数放入[sdist_dsc]
部分。例如,一个项目的~/.setup.cfg
文件可能包含以下内容
[sdist_dsc] debian-version: 0MyName1
要在调用bdist_deb时将这些命令传递给sdist_dsc,请这样做
python setup.py sdist_dsc --debian-version 0MyName1 bdist_deb
命令行选项 |
效果 |
---|---|
–with-python2 |
构建Python 2包(默认=True) |
–with-python3 |
构建Python 3包(默认=False) |
–no-python2-scripts |
禁用Python 2脚本安装(默认=False) |
–no-python3-scripts |
禁用Python 3脚本安装(默认=False) |
–force-x-python3-version |
用x-python3-version的值覆盖默认的python3:any依赖 |
–allow-virtualenv-install-location |
允许安装到/some/random/virtualenv-path |
–with-dh-virtualenv |
使用dh_virtualenv构建包,所以所有依赖都嵌入到包中。 |
–with-dh-systemd |
添加systemd插件,在构建过程中正确地添加dh_systemd_enable和dh_systemd_start辅助程序。 |
–sign-results |
使用gpg对生成的.dsc和.changes文件进行签名 |
–dist-dir (-d) |
将最终构建的分发放在此目录中(默认=’deb_dist’) |
–patch-already-applied (-a) |
补丁已经应用(当py2dsc调用sdist_dsc时使用) |
–default-distribution |
已弃用(见–suite) |
–compat |
debian兼容级别(默认=9) |
–suite (-z) |
未指定在.cfg中时使用的分发名称(默认=’unstable’) |
–default-maintainer |
已弃用(见–maintainer) |
–maintainer (-m) |
如果未在.cfg中指定,则使用维护者姓名和电子邮件(默认来自setup.py) |
–extra-cfg-file (-x) |
额外的.cfg文件(如果存在stdeb.cfg,则除之外) |
–patch-file (-p) |
在调用setup.py之前应用的补丁文件(与.cfg中指定的文件不兼容) |
–patch-level (-l) |
在调用setup.py之前应用的补丁文件(与.cfg中指定的文件不兼容) |
–patch-posix (-q) |
使用–posix模式应用补丁 |
–remove-expanded-source-dir (-r) |
删除展开的源目录 |
–ignore-install-requires (-i) |
忽略egg-info目录中的requires.txt中的要求 |
–ignore-source-changes |
在构建源包时忽略源的所有更改(向dpkg-source添加-i.*选项) |
–no-backwards-compatibility |
此选项没有效果,此处为向后兼容,将来可能会删除。 |
–guess-conflicts-provides-replaces |
如果为True,则尝试根据apt-cache输出在debian/control中猜测Conflicts/Provides/Replaces。(默认=False)。 |
–use-premade-distfile (-P) |
使用sdist命令已制作的.zip或.tar.gz文件 |
–source |
debian/control Source:(默认:<source-debianized-setup-name>) |
–package |
debian/control Package:(默认:python-<debianized-setup-name>) |
–suite |
changelog中的套件(例如,stable,lucid)(默认:unstable) |
–maintainer |
debian/control Maintainer:(默认:<setup-maintainer-or-author>) |
–debian-version |
debian版本(默认:1) |
–section |
debian/control Section:(默认:python) |
–epoch |
版本纪元 |
–forced-upstream-version |
强制上游版本 |
–upstream-version-prefix |
上游版本前缀 |
–upstream-version-suffix |
上游版本后缀 |
–uploaders |
上传者 |
–copyright-file |
版权文件 |
–build-depends |
debian/control Build-Depends |
–build-conflicts |
debian/control Build-Conflicts |
–stdeb-patch-file |
包含要应用补丁的文件的文件 |
–stdeb-patch-level |
提供给patch命令的补丁级别 |
–depends |
debian/control Depends |
–suggests |
debian/control Suggests |
–recommends |
debian/control Recommends |
–xs-python-version |
debian/control XS-Python-Version |
–x-python3-version |
debian/control X-Python3-Version |
–dpkg-shlibdeps-params |
传递给dpkg-shlibdeps的参数 |
–conflicts |
debian/control Conflicts |
–provides |
debian/control 提供内容 |
–replaces |
debian/control 替换内容 |
–mime-desktop-files |
MIME 桌面文件 |
–mime-file |
MIME 文件 |
–shared-mime-file |
共享 MIME 文件 |
–setup-env-vars |
传递给 setup.py 的环境变量 |
–udev-rules |
安装到 udev 的规则文件 |
您也可以通过 distutils 选项传递以下任何参数给 stdeb.cfg 文件。以这种方式传递参数(无论是命令行中还是 distutils .cfg 文件的 [sdist_dsc] 部分中)将具有优先权。选项名称应使用小写。
stdeb.cfg 配置文件
您可以编写 ConfigParser 所理解的配置文件格式。在构建每个包时,stdeb 都会在包含 setup.py 的目录中查找是否存在 stdeb.cfg 文件。您可以使用命令行选项 –extra-cfg-file 指定额外的配置文件。部分应为 [DEFAULT] 或 [package_name],其中 package_name 是 setup() 命令中指定的名称参数。一个示例 stdeb.cfg 文件是
[DEFAULT] Depends: python-numpy XS-Python-Version: >= 2.6
所有可用选项
配置文件选项 |
效果 |
---|---|
源 |
debian/control Source:(默认:<source-debianized-setup-name>) |
包 |
debian/control Package:(默认:python-<debianized-setup-name>) |
包3 |
debian/control 包:针对 python3(默认:python3- |
套件 |
changelog中的套件(例如,stable,lucid)(默认:unstable) |
套件3 |
python3 的套件(例如 stable, lucid)(默认:使用 Suite 选项的值) |
维护者 |
debian/control Maintainer:(默认:<setup-maintainer-or-author>) |
Debian 版本 |
debian版本(默认:1) |
部分 |
debian/control Section:(默认:python) |
纪元 |
版本纪元 |
强制上游版本 |
强制上游版本 |
上游版本前缀 |
上游版本前缀 |
上游版本后缀 |
上游版本后缀 |
上传者 |
上传者 |
版权文件 |
版权文件 |
构建依赖 |
debian/control Build-Depends |
构建冲突 |
debian/control Build-Conflicts |
Stdeb 补丁文件 |
包含要应用补丁的文件的文件 |
Stdeb 补丁级别 |
提供给patch命令的补丁级别 |
依赖 |
debian/control Depends |
依赖3 |
debian/control 依赖:针对 python3 |
建议 |
debian/control Suggests |
建议3 |
debian/control 建议:针对 python3 |
推荐 |
debian/control Recommends |
推荐3 |
debian/control 推荐:针对 python3 |
XS-Python-Version |
debian/control XS-Python-Version |
X-Python3-Version |
debian/control X-Python3-Version |
Dpkg-Shlibdeps-Params |
传递给dpkg-shlibdeps的参数 |
冲突 |
debian/control Conflicts |
冲突3 |
debian/control 冲突:针对 python3 |
破坏 |
debian/control 破坏 |
破坏3 |
debian/control 破坏:针对 python3 |
提供 |
debian/control 提供内容 |
提供3 |
debian/control 提供:针对 python3 |
替换 |
debian/control 替换内容 |
替换3 |
debian/control 替换:针对 python3 |
MIME-Desktop-Files |
MIME 桌面文件 |
MIME-File |
MIME 文件 |
Shared-MIME-File |
共享 MIME 文件 |
Setup-Env-Vars |
传递给 setup.py 的环境变量 |
Udev-Rules |
安装到 udev 的规则文件 |
Python2-Depends-Name |
覆盖 ${python:Depends} 中 Python 2 Debian 包名称 |
stdeb.cfg 文件中的选项名称不区分大小写。
可重复构建
默认情况下,stdeb 使用当前时间作为生成的更改日志文件中的时间戳。这会导致非可重复构建,因为每次调用都会生成不同的更改日志 / .deb。可以通过将 SOURCE_DATE_EPOCH 环境变量设置为固定的时间戳(例如,当版本被标记或最后提交时)来设置该时间戳,这将在更改日志中使用。这将确保在重复调用时产生的 .deb 可重复。
有关可重复构建和此特定环境变量的更多信息,请参阅 https://reproducible-builds.org/docs/source-date-epoch/
先决条件
Python 2.7 或 Python 3.x
标准 Debian 工具,如 date、dpkg-source 和 Debhelper 7(如果需要支持没有 dh7 的旧发行版,请使用 stdeb 0.3.x)
如果您的 setup.py 使用 setuptools 功能 setup_requires 或 install_requires,则在运行任何 stdeb 命令之前,必须运行 apt-file update。
待办事项
输出符合 Debian Python Policy 规范或 新 python 政策。这包括几个方面,其中之一是
自定义更改日志的能力
能够包含作为 -doc 包的项目提供的文档
在 debian/copyright 中包含许可证信息
能够将项目提供的示例、测试和数据作为一个单独的包包含
还有更多未列出
创建(更好的)文档
使用标准 distutils 机制记录输出
重构源代码以拥有更简单、更合理的结构
志愿者召集令
我没有太多时间来做这件事。除非人们站出来贡献力量,否则这个项目很可能会只是一个其潜在能力的影子。人们可以帮助的方式有很多。特别是,如果项目引起任何兴趣,我非常希望找到一个共同维护者或维护者。其次,我会感激 Debian 开发者或 Ubuntu MOTUs 关于 Python 打包的复杂细节的建议。
邮件列表
请将所有问题发送至 distutils-SIG
许可证
MIT 风格许可证。版权所有 (c) 2006-2015 stdeb 作者。
有关详细信息,请参阅源分发中提供的 LICENSE.txt 文件。
额外致谢
Zooko O’Whielacronx 为 autofind-depends 补丁。
Brett(姓氏未知)为 –ignore-install-requires 补丁。
Ximin Luo 为修复了一个错误。
Alexander D. Sedov 为错误修复和建议。
Michele Mattioni 为错误修复。
Alexander V. Nikolaev 为 debhelper 构建系统规范。
Roland Sommer 为描述字段错误修复。
Barry Warsaw 提出了 debianize 命令。
Asheesh Laroia 更新了 PyPI URL。
Piotr Ożarowski 实现了 dh_python2 支持。
Nikita Burtsev 进行了 Unicode 测试和修复。
Mikołaj Siedlarek 修复了一个错误。
Dirk Thomas 为 –force-x-python3-version 和 X-Python3-Version。
Louis 为 Recommends3、Suggests3、Provides3 和 Replaces3 支持。
kzwin 为与 virtualenv 的互操作。
GitHub 为托管服务。
WebFaction(又名 python-hosting)为之前的托管服务。
TravisCI 为持续集成。
项目详情
stdeb-0.10.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 08c22c9c03b28a140fe3ec5064b53a5288279f22e596ca06b0be698d50c93cf2 |
|
MD5 | 683a7e783113b3297632733efbbc9ae2 |
|
BLAKE2b-256 | 137ebd2cfda795d84e4445305cd53c4be4a3ec6fad2546ad2a2b79cc7906b6d7 |