我想创建一个debian包,安装后会用pip安装几个python包。我可以想到两种方式:
将python包安装到目录中,然后从该目录创建一个debian包。但这会使构建主机(例如其pip元数据)混淆,特别是如果主机已经安装了其中一些软件包。
使用所有python包创建一个debian包,在debian安装和卸载期间,运行一些脚本来安装/卸载python包。但是这需要另外两个脚本来维护,有些地方可以将所有python包保存在已安装的机器中。
任何其他解决方案以及解决此问题的最佳方法是什么?
答案 0 :(得分:0)
在我看来,如果你想创建一个debian包,你应该避免引用外部分发系统。 Here有关于在debian下创建python包的指南。
编辑:对不起,我现在看到关于Python Packaging的Debian wiki页面可能已经过时了。您可以阅读guide for pybuild并最终阅读有关building packages的答案 1 :(得分:0)
如果你想在存储库中创建一个依赖于python-<packagename>
的元数据包,那很简单,我想你已经知道了。 (如果没有,谷歌equivs
包)。我假设您希望安装最新版本的python软件包或debian存储库中缺少某些软件包,因此不会使用debian存储库。
pip是一个很好的工具,但如果你取消一个python包,你可以破坏依赖关系,这是我的元包后面的apt安装的另一个包需要的。 apt是你的朋友。你应该小心。为了解决这个问题,我的建议是将相应的软件包名称添加到元数据包的控制文件Provides
,Conflicts
和Replaces
字段中,无论您是否动态安装python包通过pip或捆绑在你的主包中。 我很快搜索了#34;将多个debian软件包捆绑到一个软件包中#34;并没有找到解决方案。
如果你想从系统范围的python包中完全分离你的python包,virtualenv是我所知道的最佳选择。 如果你想使用pip构建符合debian的包,stdeb可以很容易地做到这一点。
此外,据我记得,我在Kali Linux(基于Debian)中看到了一些在安装期间或启动期间动态安装python包的软件包,但Debian策略可能不允许这种灵活性不破坏依赖性(如果你想建立一个官方包)。我希望这个答案能指导你朝着正确的方向前进。