问题描述
我是 debian 打包的新手。
我正在尝试让我的 git 项目成为一个 debian 包,然后上传到 ppa,这样人们就可以轻松安装我的包。
问题是我的项目由c++、python、bash文件组成。
我成功地编写了 c++、bash 的 debian 脚本(如 control
、rules
或 sth)。
但是,python 有点难实现,因为我的 python 脚本使用 tensorflow
。
一开始,我不得不想出一个python安装计划。
这是我目前发现的。
- 使用系统的python
IIUC,只需将 Build-Depends
文件中的 control
设置为 dh-python
、python3-all
、python3-setuptools
和 dh $@ --with python3
rules
文件。
但是由于我希望用户安装特定版本的tensorflow
,所以用户在安装我的项目之前必须自己安装tensorflow==2.x.x,这很困扰他们并且使他们的python环境变脏。
- 使用
dh_virtualenv
IIUC,dh_virtualenv
将我的项目安装到 /opt/venvs/«packagename»
。然后,即使用户安装了我的项目,他们也无法在 bash 命令行运行我的项目,因为 /opt/venvs
不是 $PATH
的内容。
- 使用
stdeb
或Pybuild
有了它们,我可以构建我的项目所依赖的 python 包,然后使用它们。但是,不幸的是,tensorflow
似乎无法使用 stdeb
或 Pybuild
:(
- 使用
postinst
脚本
实际上,这是我认为对我来说最好的。在我的项目安装到 /usr/bin
之后,我让 postinst
将 python 虚拟环境设置为 /opt/my_venv/
,然后让我的项目的二进制文件指向它。我认为它运作良好(我希望..)
#!/bin/bash
python3 -m venv /opt/my_venv
/opt/my_venv/bin/python3 -m pip install tensorflow
...
但是,问题是,有一些关于使用 postinst
脚本的警告。
https://www.debian.org/doc/manuals/maint-guide/dother.en.html#maintscripts
作为新手维护者,您应该避免对维护者脚本进行任何手动编辑,因为它们存在问题。
如果你没有听我的,并且为一个包创建了自定义维护者脚本,你应该确保不仅测试它们的安装和升级,还测试删除和清除。
https://askubuntu.com/questions/327543/how-can-a-debian-package-install-python-modules-from-pypi
在安装二进制文件 (.deb) 时即时下载非 debian 软件包是一个严重的安全风险,绝对不能。
嗯.. 我认为我也错过了一些非常重要的事情。
你能给我一些意见吗?
我可以选择 4 个选项吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)