Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对Python包进行Debian打包?_Python_Debian - Fatal编程技术网

如何对Python包进行Debian打包?

如何对Python包进行Debian打包?,python,debian,Python,Debian,我需要编写或找到一个脚本,从Python包中使用package创建Debian包。Python包将是没有C扩展的纯Python 用于测试目的的Python包将只是一个目录,其中包含一个空的\uuuu init\uuuu.py文件和一个Python模块package\u test.py 打包脚本必须使用python支持为目标平台上可能的多个python安装提供正确的字节码,即(Jaunty Jackalope)上的v2.5和v2.6 我在谷歌搜索时发现的大多数建议只是一些讨厌的黑客的例子,它们甚至

我需要编写或找到一个脚本,从Python包中使用package创建Debian包。Python包将是没有C扩展的纯Python

用于测试目的的Python包将只是一个目录,其中包含一个空的
\uuuu init\uuuu.py
文件和一个Python模块
package\u test.py

打包脚本必须使用
python支持
为目标平台上可能的多个python安装提供正确的字节码,即(Jaunty Jackalope)上的v2.5和v2.6

我在谷歌搜索时发现的大多数建议只是一些讨厌的黑客的例子,它们甚至不使用
python支持
python中心

我花了几个小时研究这个,我能想出的最好办法就是从一个现有的开源项目中破解脚本,但我不知道我所做的工作需要哪些代码

这里有没有人用Python包以合理的非黑客方式制作了Debian包


我开始认为,从不了解Debian打包和
python支持到获得一个工作脚本需要一个多星期的时间。其他人花了多长时间?

首先,Debian中已经有很多Python包;您可以使用
apt get source
或通过访问下载其中任何一个的源代码(包括所有打包)

您可以找到以下可用资源:


我将获取现有Debian软件包的源代码,并用您的软件包替换其中的实际软件包。要查找依赖python支持的包的列表,请执行以下操作

 apt-cache rdepends python-support
选择一个
Architecture:all
包,使其成为纯Python包。浏览这个列表,我发现例如pythonflup可能是一个很好的起点。 要获取这样一个包的源,请执行以下操作

apt-get source <package>
apt获取源代码
要建造它,就要做

cd <packagesrc>
dpkg-buildpackage -rfakeroot
cd
dpkg buildpackage-rfakeroot
编辑时,您只需要
debian
文件夹中的文件;用您自己的包名替换对flup的所有引用

一旦开始,您需要一天的时间才能完成。

我想您需要:

stdeb产生Debian源代码包 通过新的 distutils命令,sdist\u dsc。 提供了自动默认值 Debian软件包,但有很多方面 生成的包的 自定义(请参见自定义 第节(见下文)。额外的 命令bdist_deb创建一个Debian 二进制软件包,一个.deb文件


这里发布的大多数答案都过时了,但幸运的是,最近发布了一篇很棒的Debian wiki文章,解释了当前的最佳实践,并描述了如何为Python模块和应用程序构建Debian包


    • 构建.deb包的正确方法是使用
      dpkg buildpackage
      ,但有时有点复杂。相反,您可以使用
      dpkg-b
      ,它将创建您的Debian包

      以下是使用
      dpkg-b
      创建Debian软件包的基础知识,该软件包使用任何二进制文件或任何类型的脚本自动运行,无需手动编译(Python、Bash、Perl和Ruby):

    • 创建文件和文件夹以重新创建以下结构:

      程序名版本/
      程序名版本/DEBIAN
      程序名版本/DEBIAN/control
      程序名版本/usr/
      程序名版本/usr/bin/
      程序名版本/usr/bin/your_脚本
      
      放置在
      /usr/bin/
      的脚本直接从终端调用。请注意,我没有向脚本添加扩展。您还可以注意到.deb包的结构将是程序安装后的结构。因此,如果您遵循此逻辑,如果您的程序只有一个文件,您可以直接将其放在
      ProgramName Version/usr/bin/your_script
      下,但是如果您有多个文件,您应该将它们放在
      ProgramName Version/usr/share/ProgramName/您的所有文件
      下,并且只将一个文件放在
      /usr/bin/
      下,该文件将从
      /usr/share/ProgramName/
      调用您的脚本

    • 将所有文件夹权限更改为根目录:

       chown root:root -R /path/to/ProgramName-Version
      
    • 更改脚本的权限:

       chmod 0755 /path/to/the/script
      
    • 最后,您可以运行:
      dpkg-b/path/to/the/ProgramName Version
      ,您的.deb包将被创建!(您还可以添加安装后/安装前脚本和所有需要的内容。它的工作方式与普通Debian软件包类似。)

    • 下面是
      控件
      文件的示例。您只需将其复制粘贴到一个名为“control”的空文件中,并将其放入
      DEBIAN
      文件夹中即可

      包:程序名
      版本:版本
      建筑:全部
      维护者:你的名字
      取决于:python2.7等,
      安装大小:以kb为单位
      主页:http://example.com
      描述:这里你可以放一行描述。这是简短的描述。
      在这里,你把长描述,缩进一个空格。
      


      可以阅读关于Debian软件包的完整文章。

      注意:由于这个答案是编写的,
      python支持
      被弃用,取而代之的是
      dh_python2
      。在Debian wiki上进行了简要描述。@drdaeman@Martin:dh_python2现在直接在
      python
      包中提供,因此该配方不再有效。你将如何更新它?谢谢你的指导。如何添加安装前/安装后脚本?@Gleb安装前/安装后脚本必须放在
      DEBIAN
      文件夹中。只需使用正确的名称添加脚本
      preinst
      postinst
      prerm
      。我很高兴它帮了你:)结果,上面提到的(完整的)文章已经不见了。。(链接现在重定向到“”,链接可能(实际上)已断开。或者,哪个部分已被释放