我正在努力用debutils包装一些库。
据推测,我需要正确配置setup.py,以及deb的相应/debian
个文件。
现在,存储库看起来像这样:
library_name/
__init__.py
liba.py
libb.py
...
它被添加为其他程序的依赖项,因此它们可以执行from library_name import liba
。
谷歌搜索揭示了在Ubuntu上部署3到5种不同的方法,不包括easy_install
方法;文件似乎大部分都是碎片和过时的。
我特别希望确保无论Python版本如何,都将库放在正确的系统目录中。当然,它也可以无缝地卸载或升级。
最终游戏是在本地服务器上设置deb,作为我们其他程序的包依赖项添加。
完成这项工作的规范“简单明了”是什么?
答案 0 :(得分:2)
您可以使用pkgme
来快速创建debian文件。据我所知,与dh-make
等其他类似工具不同,pkgme
设计基于插件,这意味着当检测到python时,会正确提取setup.py
文件中的信息。
有关详细信息,您可以在recent talk活动中查看此Ubuntu Developer Week。
答案 1 :(得分:2)
我之前也在与Ubuntu / Debian的Python包装斗争,我同意,文档是混乱/不存在/误导:他们真的需要一个快速入门指南,以了解最简单的情况。
嗯,这是它!
安装工具。但这可能有点矫枉过正:
sudo apt-get install build-essential python-all dh-make devscripts fakeroot
首先将代码签出到名为$packagename-$version
的目录,如library_name-0.6.0/
,cd
到该目录。运行类似dh_make -i -c gpl3 -e nfirvine@example.com
的内容(有关其他选项,请参阅dh_make --help
)。如果一切顺利,您将不会遇到任何错误,并且会在./debian
中创建大量文件。您可以忽略或删除./debian/*.{ex,EX}
;这只是一些例子。
您应该在某个时刻检查所有这些文件,但至少,您需要来编辑./debian/control
和./debian/rules
。您应该填写控件中的所有模板字段,即Description
和Homepage
。将Package
行更改为python-$libname
将Depends
中的control
行更改为:
Depends: ${misc:Depends}, ${python:Depends}
它确保我们的二进制包python-$libname
依赖于它所需的Python版本。 (${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in
./的Debian / $ packagename.substvars`。)
将rules
中的行从dh $@
更改为dh $@ --with python2
,保留前面的标签(它是Makefile)。这导致debhelper使用它的python2插件;默认仍然是使用pysupport(不推荐使用,请记住?)。
然后,在源根目录中运行以下命令:
debuild -us -uc
这会构建软件包,而无需对其进行签名( 应该以后学习如何做的事情!)。您应该看到一些熟悉的setuptools行(两次:一次为2.6,一次为2.7),成堆的dh_插件和其他建筑物。最后是林田的产量,可以发现一些常见的包装问题;你应该解决这些问题。林天和朋友抱怨的很多东西都只是遵守包装规则,如果你的lib只是内部的,可以随意放松。
顺便说一句,This page talks about the deprecation of python-support
and python-central