python到debian的源包转换实用程序

stdeb的Python项目详细描述


stdeb-python到debian源代码包转换实用程序

stdeb 生成debian源代码 python包中的包通过一个新的distutils命令, sdist_dsc 。为debian包提供了自动默认值, 但是结果包的许多方面都可以定制(参见 自定义部分,如下)。一个附加命令, bdist_deb , 创建Debian二进制包,.deb文件。安装deb 命令安装此.deb文件。 debianize 命令构建 debian/ 直接位于setup.py旁边的目录。

还提供了一些便利实用程序:

  • pypi下载 将查询包的python包索引(pypi),并下载它。
  • pypi安装 将查询一个包的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或两者都有。而且,这一代人可以做到 使用Python2或Python3解释器。默认情况下,只有包 是为使用的python版本而构建的。若要覆盖此项,请使用 --with-python2=true --with-python3=true 作为 sdist_dsc distutils命令(或同时使用这两个命令以确保)。例如, 使用python 3解释器只构建python3包:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    

    使用python 3构建python 2和python3包 解释器(而且只有python3包安装脚本):

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    

    新闻

    < Buff行情>
    • 2015年2月18日:0.8.5版。请参见下载页面。错误修复:已还原 在内置时将其更改为virtualenv 虚拟现实。改进:添加 –允许virtualenv安装位置允许安装到 Virtualenv位置。支持debian挤压(6),debian喘息 (7)、ubuntu precise(12.04)、ubuntu trusty(14.04)及更高版本 释放。
    • 2015年2月16日:0.8.4版。请参见下载页面。错误修复:适用于 python 3.4(比如ubuntu trusty)又来了。改进:改进 python 3的定制(添加了dirk thomas force-x-python3-version x-python3-version 和louis for 建议3 建议3 提供3 替换3 支持。支持debian-squeze(6)、debian-wheeze(7)、ubuntu 精确(12.04)、ubuntu trusty(14.04)及更高版本。
    • 2015年2月14日: 0.8.3版 。请参见下载页面。这是个错误修复程序 它修复了Unicode支持的几个方面。测试通过 论德比安挤压(6),德比安喘息(7),和ubuntu precise (12.04)。对python 3.4(例如ubuntu trusty 14.04)的支持是 错误地断开并在0.8.3版本中修复。
    • 2014年8月14日: 0.8.2版 。请参见下载页面。这是个错误修复程序 发行版修复了一个严重的问题,该问题会导致python 2包 如果在某些 环境。
    • 2014年8月10日: 0.8.1版 。请参见下载页面。到期 对于0.8.0中的bug,此版本是0.8中首次发布的 系列。0.7.1之后的亮点:
      • 完全支持Python3。这包括从python 3运行 以及为python 3生成包。默认设置是 与python 3一起运行并构建python 2时的python3包 从python 2运行时的包。可以使用命令行选项 为另一个python解释器构建包。
      • 生成。更改源包的文件。但这一定是 例如,签名上传到一个ppa,它仍然应该是 在某些情况下有用。
      • 切换到Debian源代码格式3.0(coil)。实际上, 以前随源包提供的.diff.gz文件现在是 替换为.debian.tar.gz文件。
      • 使用 请求。(验证需要请求>;=0.8.8.)
      • 许多错误修复。
    • 2014-05-05: 版本0.7.1 。请参见下载页面。这方面的亮点 发布(您也可能希望查阅完整的更改日志。到期 对于0.7.0中的bug,此版本是0.7中首次发布的 系列。0.6.0之后的亮点:
      • 新命令:pypi download和pypi install直接下载 并分别安装来自pypi的包。PY2DSC DEB直接 从源tarball创建.deb文件。
      • new distutils命令:install_deb允许您直接安装 python包作为标准系统包。
      • 许多错误修复,包括pypi的新url。
      • 测试套件的自动运行,感谢travis ci
      • 感谢许多人,特别是Piotr O_arowski对Stdeb的帮助。
    • 2010年6月18日:0.6.0版。请参见下载页面。这方面的亮点 发布(您也可以参考完整的变更日志: ):
      • 一个新的 debianize 命令来构建一个 debian/ 目录 以及setup.py文件。
      • 错误修复。
    • 2010-01-09: 版本0.5.1 。错误修复版本。请参阅下载 第页,更改日志 以及发行说明
    • 2009年12月30日:0.5.0版。请参见下载页面。这方面的亮点 发布(您也可以参考完整的变更日志: ):
    • 2009年12月28日:发布0.4.3版。请参见下载页面。见 更改日志 发布说明
    • 2009年11月02日:发布0.4.2版。请参见下载页面。见 更改日志 发布说明
    • 2009-10-04:0.4.1版发布。请参见下载页面。见 更改日志 发布说明
    • 2009年9月27日:发布0.4版。请参见下载页面。这个 版本切换到debhelper 7。有关0.4的更改日志,请参见 changelog。

    0.3.2及以下版本与ubuntu hardy兼容。

    < Buff行情>

    命令

    pypi下载 它:

    pypi-download [options] mypackage
    

    pypi安装,命令行命令

    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\u dsc,distutils命令

    所有方法最终都会调用 命令。您可以直接这样做:

    python setup.py --command-packages=stdeb.command sdist_dsc
    

    Debian源包是从未修改的 python包。以下文件是在新创建的 子目录 < Buff行情>

    • packagename_versionname.orig.tar.gz
    • packagename_versionname-debianversion.dsc
    • packagename_versionname-debianversion.diff.gz

    然后可以使用标准 Debian机械(例如DPKG构建包)。

    bdist_deb,distutils命令

    安装了一个distutils命令。这就叫 sdist_dsc命令,然后对结果运行dpkg buildpackage:

    python setup.py --command-packages=stdeb.command bdist_deb
    

    安装deb,distutils命令

    distutils命令调用bdist deb命令 然后安装结果。您需要以超级用户权限运行此程序:

    sudo python setup.py --command-packages=stdeb.command install_deb
    

    借记、distutils命令

    debianize distutils命令构建相同的 debian/ 在上一个命令中使用的目录,但输出被放置在 直接在项目的根文件夹中(与setup.py一起)。这是 对于直接定制debian包(而不是使用 用于优化生成包的各种stdeb选项)。

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    0

    关于告诉distutils使用stdeb distutils命令的说明

    distutils命令包也可以在distutils中指定 配置文件(而不是使用 --命令包 setup.py的命令行参数,如distutils中指定的 文档。明确地, 您可以将它包含在 ~/.pydistutils.cfg 文件中:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    1

    示例

    这些都假设您的系统python中安装了stdeb 路径。stdeb也可以从非系统python路径(例如 virtualenv )。

    快速启动1:现在从pypi安装一些东西,我不在乎除此之外

    从命令行执行此操作:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    2

    警告:尽管尽了最大努力,斯特德绝对没有办法 可以保证所有的Debian包依赖项都是正确的 在没有人工干预的情况下完成。使用pypi安装旁路 你定制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将导致未定义 行为。如果你有扩展模块,他们可能会 打破。即使在没有扩展模块的情况下,坏的东西也可能出现 发生。

    因此,最好构建debian源代码包 然后为每个目标编译(例如使用ubuntu的ppa)。 debian或ubuntu的版本。

    快速启动3:我读到了警告,所以演示如何制作一个源包,然后编译它

    这将生成一个源包:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    4

    这将使用标准的debian工具将其转换为.deb。(执行此操作 在每个目标发行版的同一源包上):

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    5

    这将安装它:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    6

    快速启动4:从python包直接安装到debian系统包

    (首先,按照通常安装python包的方式安装stdeb。)

    使用 setup.py 文件从目录中执行此操作:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    7

    这将生成一个debian源包(.dsc、.orig.tar.gz和 .diff.gz文件),将其编译为Debian二进制包(.deb),以便 当前系统,然后使用dpkg安装它

    另一个例子,有更多解释

    如果没有python源代码包,则此示例更有用 (.tar.gz文件由python setup.py sdist生成)。为了 插图,我们确实下载了这样一个tarball,但立即将其解包 (或者,使用版本控制系统获取未打包的 包裹来源:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    8

    下面将生成包含 文件 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源 -x )并放置在 deb_dist 子目录中。到 继续上面的示例:

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    0

    最后,可以安装生成的包:

    python3 setup.py --command-packages=stdeb.command bdist_deb
    
    6

    有关另一个使用示例,请参见 allmydata tahoe ticket 251

    下载

    文件可在下载页上找到(有关古代版本,请参见 旧下载页 )。

    git存储库位于 http://github.com/astraw/stdeb

    安装(或使用stdeb创建stdeb安装程序)

    为了好玩,下面介绍如何使用stdeb安装stdeb。注意 stdeb也在debian和ubuntu中,所以这个方法是唯一必要的 安装最新的标准磁盘。

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    2

    背景

    对于一般的python包,其源代码分布 (使用python setup.py sdist创建的python_package.tar.gz) 包含几乎所有生成Debian源代码所必需的内容 包裹。这种近乎相等的东西鼓励我写下这些分词。 扩展名,它执行setup.py文件以提取相关的 信息。 设置工具 可以选择 被使用。

    我写这篇文章的初衷是为了将我自己的几个python包借记卡, 但我觉得这通常是有用的。它出现了 至少在理论上,类似于logilab的devtools, bdist_dpkg bdist_deb pkgme dh virtualenv

    功能

    • 为支持的所有python版本创建一个包 python支持。(使用 xs python版本: 配置选项。)
    • python包名自动转换为有效的debian 包装名称。
    • 尝试自动转换版本号,以便排序 被维护。另请参见配置选项 强制上游版本
    • 版本号的细粒度控制。( Debian版本 强制上游版本 上游版本前缀 上游版本后缀 配置选项。)
    • 安装.desktop文件。( mime桌面文件 配置选项。)
    • 安装.mime和.sharedimeinfo文件。( mime文件 共享mime文件 配置选项。)
    • 安装版权文件。( 版权文件 配置选项。)
    • 对上游源应用修补程序。( stdeb补丁文件 配置 选项。)
    • 将环境变量传递到setup.py脚本。( 设置环境变量 配置选项。)

    定制生成的debian源包(配置选项)

    stdeb将试图提供合理的违约,但这些违约仅限于 猜测,

    有两种方法可以定制由 STDEB。首先,您可以为distutils提供选项 命令。其次,您可以提供一个 stdeb.cfg 文件。

    strdeb distutils命令选项

    sdist_dsc命令接受distutils的命令行选项 命令。例如:

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    3

    这将创建一个debian包,其中debian版本设置为 "0语法1"。

    这些选项也可以通过distutils配置设置 文件夹。(这些是 setup.cfg 文件以及 setup.py 和 在这种情况下,将参数放入 [sdist\u dsc] 部分。例如,一个项目的 文件可能包含以下内容:

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    4

    要在调用bdist_deb时将这些命令传递给sdist_dsc,请执行以下操作:

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    5 <表> < COLGROUP > < COL/> < COL/> <广告> 命令行选项 效果 < /广告> <正文> -与-python2一起 构建python 2包(默认值为true) -与-python3一起 构建python 3包(默认值为false) –无python2脚本 禁用Python2脚本的安装(默认值为false) –没有python3脚本 禁用python 3脚本的安装(默认值为false) -force-x-python3-版本 覆盖默认最小python3:any 依赖于x-python3中的值- 版本 –允许virtualenv安装位置 允许安装到 /某些/随机/虚拟路径 –距离方向(-d) 要放置最终生成的目录 中的分布(默认为"deb_dist") –已应用修补程序(-a) 已应用修补程序(在 py2dsc呼叫sdist_dsc) –默认分布 已弃用(请参阅–套件) -套房(-z) 要使用的分发名称(如果没有) 在.cfg中指定(默认为"不稳定") –默认维护者 已弃用(请参阅-维护者) -维修人员(-m) 维护者姓名和电子邮件(如果没有) 在.cfg中指定(默认为 setup.py) –额外的cfg文件(-x) 附加的.cfg文件(除了 stdeb.cfg(如果存在) –修补程序文件(-p) 在setup.py之前应用的修补程序文件 调用(与文件不兼容 在.cfg中指定) –补丁级别(-l) 在setup.py之前应用的修补程序文件 调用(与文件不兼容 在.cfg中指定) –修补posix(-q) 使用–posix模式应用修补程序 –删除扩展源目录(-r) 删除扩展的源目录 –忽略安装要求(-i) 忽略来自的要求 在egg info目录中需要.txt文件 –没有向后兼容性 这个选项不起作用,是为了 向后兼容,可能是 某天删除。 –猜测冲突提供替换 如果是真的,尝试猜测 冲突/提供/替换 基于apt缓存的debian/control 输出。(默认值为false)。 –使用预编码的distfile(-p) 使用.zip或.tar.gz文件 通过sdist命令 –来源 debian/控制源:(默认值: <;source debanized setup name>;) –套餐 debian/control包:(默认值: python-<;借记设置名称>;) -套房 变更日志中的套件(如稳定、清晰) (默认值:不稳定) 维护人员 debian/控件维护者:(默认值: <;安装维护程序或作者>;) –Debian版本 Debian版本(默认:1) 部分 debian/控制部分:(默认: Python)< /TD> -纪元 版本epoch –强制上游版本 强制上游版本 –上游版本前缀 上游版本前缀 –上游版本后缀 上游版本后缀 –上传程序 上传程序 –版权文件 版权文件 –取决于构建 依赖于debian/控件生成: –构建冲突 Debian/控件生成冲突: –stdeb补丁文件 包含stdeb到的修补程序的文件 应用 –stdeb补丁级别 提供给patch命令的修补程序级别 –取决于 依赖于debian/控件: 建议 Debian/控制建议: –建议 debian/control建议: –xs python版本 debian/control xs python版本: -x-python3-版本 debian/control x-python3-版本: –dpkg shlibdeps参数 传递给dpkg shlibdeps的参数 –冲突 debian/控制冲突: –提供 debian/控件提供: –替换 Debian/控件替换: –mime桌面文件 mime桌面文件 –mime文件 mime文件 –共享mime文件 共享的mime文件 –设置环境变量 传递给的环境变量 设置.py -udev规则 包含要安装到udev的规则的文件 < > <表>

    您还可以为stdeb.cfg文件传递下面描述的任何参数 通过distutils选项。以这种方式传递参数(在 命令行,或distutils.cfg的 [sdist_dsc] 部分 文件)将优先。选项名称应以较低的格式给出 病例:

    strdeb.cfg配置文件

    您可以编写configparser 所理解格式的配置文件。建造时 在每个包中,stdeb查找 带有setup.py的目录。您可以指定其他配置文件 使用命令行选项–extra cfg file。本节应 应为[默认]或[包名],包名是 指定为setup()命令的name参数。一个例子 stdeb.cfg文件是:

    python3 setup.py --command-packages=stdeb.command sdist_dsc --with-python2=True --with-python3=True --no-python2-scripts=True bdist_deb
    
    6

    所有可用选项:

    <表> < COLGROUP > < COL/> < COL/> <广告> 配置文件选项 效果 < /广告> <正文> 来源 debian/控制源:(默认值: <;source debanized setup name>;) 套餐 debian/control包:(默认值: python-<;借记设置名称>;) 套房 变更日志中的套件(如稳定、清晰) (默认值:不稳定) 维护人员 debian/控件维护者:(默认值: <;安装维护程序或作者>;) Debian版本 Debian版本(默认:1) 部分 debian/控制部分:(默认: Python)< /TD> 时代 版本epoch 强制上游版本 强制上游版本 上游版本前缀 上游版本前缀 上游版本后缀 上游版本后缀 上传程序 上传程序 版权文件 版权文件 取决于构建 依赖于debian/控件生成: 生成冲突 Debian/控件生成冲突: stdeb补丁文件 包含stdeb到的修补程序的文件 应用 stdeb补丁级别 提供给patch命令的修补程序级别 取决于 依赖于debian/控件: 依赖项3 依赖于debian/控件:对于python3 建议 Debian/控制建议: 建议3 Debian/对照组建议:对于蟒蛇3 建议 debian/control建议: 建议3 debian/control建议:对于python3 xs python版本 < TD> >bian/control xs python版本: x-蟒蛇3-版本 debian/control x-python3-版本: dpkg shlibdeps参数 传递给dpkg shlibdeps的参数 冲突 debian/控制冲突: 冲突3 debian/控制冲突:对于python3 提供 debian/控件提供: 提供3 debian/control提供:用于python3 取代 Debian/控件替换: 替换3 debian/control替换:对于python3 mime桌面文件 mime桌面文件 mime文件 mime文件 共享mime文件 共享的mime文件 设置环境变量 传递给的环境变量 设置.py udev规则 包含要安装到udev的规则的文件 < > <表>

    stdeb.cfg文件中的选项名称不区分大小写。

    先决条件 < Buff行情>
    • python 2.7或python 3.x
    • 标准的debian实用程序,如dpkg源代码 Debhelper 7(如果需要支持老年人,请使用stdeb 0.3.x 不含DH7的分布
    • 如果setup.py使用setuptools功能,setup需要 安装需要 ,您必须在 运行任何stdeb命令。

    待办事项

    • 使输出满足debian python policy规范或新的 python策略。这将包括几个方面,其中包括:
      • 定制变更日志的能力
      • 能够将项目提供的文档作为-doc包包含进来
      • 在Debian/版权中包含许可证信息
      • 能够包含项目提供的示例、测试和数据 单独包装
      • 更多信息未列出
    • 创建(更好的)文档
    • 使用标准distutils机制的日志输出
    • 重构源代码以获得更简单、更理智的设计

    召集志愿者

    我没有太多时间做这个。这个项目是非常真实的 如果人们不采取行动 向上贡献。人们有很多方法可以 帮助。特别是,我想找一个共同维护者或者 维护者如果项目产生任何兴趣。其次,我会 感谢Debian开发者或UbuntuMotus关于 python包装的神秘细节。

    邮件列表

    请将所有问题发送到distutils sig

    许可证

    麻省理工学院风格许可证。版权所有(c)2006-2015 Stdeb作者。

    请参阅随源发行版提供的license.txt文件 详细信息。

    作者
    • 安德鲁·斯特劳,斯特劳曼
    • 佩德罗阿尔加维奥,又名,soundt3ch<; ufs @ ufsoft 组织 >;
    • gerry reno(初始bdist_deb实现)

    附加积分

      <李>zooko o'whielacronx for the autofind dependents补丁。
    • –ignore安装的brett(姓氏未知)需要修补程序。
    • 西敏罗的错误修复。
    • Alexander D.Sedov提供错误修复和建议。
    • Michele Mattioni用于错误修复。
    • Alexander V.Nikolaev为Debhelper构建系统规范。
    • Roland Sommer,用于说明字段错误修复。
    • 巴里·华沙建议使用debianize命令。
    • 用于更新pypi url的asheesh laroia。
    • piotr o_arowski用于实现dh_python2支持。
    • 用于Unicode测试和修复的Nikita Burtsev
    • Miko_aj Siedlarek的错误修复程序
    • Dirk Thomas for–Force-X-Python3版本和X-Python3版本
    • Louis提供建议3、建议3、提供3和替换3支持
    • 与virtualenv互操作的kzwin
    • github 用于托管服务。
    • 对于以前的托管服务, webfaction (也称为 python hosting )。
    • travisci 用于持续集成

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    java操作数组上的字符串   java JAXB内容未实例化   图形在Java中如何绘制垂直居中的字符串?   java Apache Ant:使用Junit时出现NoClassDefFoundError   java无法从服务器上运行perl脚本   如何在java中沿树进行预排序遍历,并打印0和1以对应每个节点上的特定字符?   java如何创建。p12文件?   java线程访问无效   java只匹配命名空间中的XML节点,而不知道NS前缀   从java获取2d arraylist元素   数组Java动态集合对象   java Xpath通过通配符或布尔运算查找以相同名称开头的节点?   java注释元素类型   java在中看不到Super()。反编译后的类文件