如何为单个python脚本创建deb包?


78

我有一个要作为deb软件包分发的python脚本。这是一个在Unity面板中显示本地日期的指示器。我确实从脚本或二进制文件创建了一个.deb软件包,但是由于它失败而无法创建一个deb软件包。

有人可以逐步指导我如何做吗?据我所知,这个脚本依赖于python-appindicator

注意:
我不需要任何指向Debian / Ubuntu包装说明的链接。我看过大多数。我觉得他们对初学者不友好。


6
尽管Debian和Ubuntu的包装说明适合初学者(请相信我,我知道),但是许多运行deb的GUI应用程序在运行最终的软件包检查器(如lintian)时会出现很多错误。如果您认真对待包装,那么最好将其加固并按照说明进行操作是最好的方法:)
Thomas Boxley

我对打包一无所知,但是您要添加的功能已内置到Unity中。
这是威廉2015年

Answers:


84

以下是一个基本示例,显示了python脚本的源包的外观。尽管大多数包装教程都有些复杂,但是如果遇到问题,它们确实可以提供帮助。就是说,我首先通过简单地查看Debian软件包就了解了Debian打包的基础知识。apt-get source类似的东西,并以身作则。

这是您的基本源程序包布局:

my-script/
    -- myScript
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

dch --create在目录中运行以创建格式正确的debian/changelog条目。

debian / copyright应该看起来像:

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: myScript
Upstream-Contact: Name, <email@address>

Files: *
Copyright: 2011, Name, <email@address>
License: (GPL-2+ | LGPL-2 | GPL-3 | whatever)
 Full text of licence.
 .
 Unless there is a it can be found in /usr/share/common-licenses

debian / compat可以是:7

debian / rules

#!/usr/bin/make -f

%:
    dh $@ --with python2

请注意,前面必须有“制表符” dh $@ --with python2,不能空格。

debian /控制

Source: my-script
Section: python
Priority: optional
Maintainer: Name, <email@address>
Build-Depends: debhelper (>= 7),
               python (>= 2.6.6-3~)
Standards-Version: 3.9.2
X-Python-Version: >= 2.6


Package: my-script
Architecture: all
Section: python
Depends: python-appindicator, ${misc:Depends}, ${python:Depends}
Description: short description
 A long description goes here.
 .
 It can contain multiple paragraphs

debian /安装

myScript usr/bin/

该文件指示哪个文件将被安装到哪个文件夹中。

现在用 debuild --no-tgz-check

这将创建一个实用的deb包。Lintian将就缺少orig.tar.gz发出一些警告,但是除非您计划创建一个适当的上游项目以使tarball发布,否则您可能现在只想忽略它。


12
作为一个打包程序(和一个反向移植程序),我经常打包python脚本。我可以肯定地说,这里的答案是为单个python脚本创建程序包的最完整说明。
托马斯·沃德

2
您还可以针对Python 3更新它吗?我猜我们需要在debian/rules和中进行更改debian/control,但是我不确定。
Aditya 2014年

1
@Aditya,也许对Python3来说是一个新问题?答案不会有很大的不同,但是该答案旨在成为如何打包Python脚本的最简单/最简单的示例。不确定我是否要通过多种实现来使其混乱。
andrewsomething 2014年

@andrewsomething:然后您可能会对促使我发表评论的那件事感兴趣...对该评论进行一些编辑,我会尝试一下...
Aditya 2014年

1
那图书馆呢?如果python脚本导入了库,那么它将无法正常工作
-D.Snap

18
  1. 在您的家中创建一个任何名称的文件夹,例如:mypyscript
  2. 打开文件夹并创建两个名为“ DEBIAN”和“ usr”的文件夹
  3. 打开文件夹DEBIAN。在此处创建一个名称为“ control”的文本文件(无扩展名)。
  4. 打开“控件”并键入以下内容,然后将其保存在DEBIAN上

    Package: mypyscript
    Version: 0.01
    Architecture: all
    Maintainer: your name<your mail id>
    Installed-Size: 2
    Depends: python-appindicator
    Section: extras
    Priority: optional
    Homepage: your homepage
    Description: describe
  5. 返回到名为mypyscript的文件夹。打开“ usr”。创建一个名为“ bin”的文件夹。打开“ bin”并在其中粘贴您的pythonscript文件。

  6. 您也可以进行菜单输入。但这不是必需的。
  7. 返回文件夹“ mypyscript”所在的主文件夹或关闭文件浏览器。
  8. 打开终端。确保终端位于主文件夹中。键入dpkg -b mypyscript。然后按Enter。几秒钟内您的Deb包就准备好了

注意:请正确填写“控制”文件。不要使用撇号。仅用于指示名称。


1
很棒!公认的答案很复杂。
2014年

不要忘记将“ myscript”的权限更改为755,并将其所有者更改为root。
2014年

如何创建菜单项?
为了做

9

您可以尝试使用Debreate,这是一个用于创建软件包的GUI工具。


Debcreate很酷。到目前为止,我还是很喜欢的,今天才开始使用它从python源代码进行构建。
answerSeeker


2

尝试pkgme。它应该可以正常工作。

通过以下方式安装:

sudo apt install pkgme

运行方式:

pkgme
debuild

(新开发人员可能必须运行gpg --gen-key,请参阅“ 开发密钥签名”以正确执行此操作)



0

您可以尝试使用Debreate

如果您不想从上面列出的网站上下载PPA,则这是一个GUI界面,用于创建软件包和东西。

sudo add-apt-repository ppa:antumdeluge/<ppaname>; sudo apt update; sudo apt install debreate

香港专业教育学院浓缩PPA,使它作为一行代码运行!感谢您提出的真题,请确保将这些代码行插进终端!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.