为 tensorflow 构建 debian 包

问题描述

我是 debian 打包的新手。

我正在尝试让我的 git 项目成为一个 debian 包,然后上传到 ppa,这样人们就可以轻松安装我的包。

问题是我的项目由c++、python、bash文件组成。

我成功地编写了 c++、bash 的 debian 脚本(如 controlrules 或 sth)。

但是,python 有点难实现,因为我的 python 脚本使用 tensorflow

一开始,我不得不想出一个python安装计划。

这是我目前发现的。

  1. 使用系统的python

IIUC,只需将 Build-Depends 文件中的 control 设置为 dh-pythonpython3-allpython3-setuptoolsdh $@ --with python3 rules 文件

但是由于我希望用户安装特定版本的tensorflow,所以用户在安装我的项目之前必须自己安装tensorflow==2.x.x,这很困扰他们并且使他们的python环境变脏。

  1. 使用dh_virtualenv

IIUC,dh_virtualenv 将我的项目安装到 /opt/venvs/«packagename»。然后,即使用户安装了我的项目,他们也无法在 bash 命令行运行我的项目,因为 /opt/venvs 不是 $PATH内容

  1. 使用 stdebPybuild

有了它们,我可以构建我的项目所依赖的 python 包,然后使用它们。但是,不幸的是,tensorflow 似乎无法使用 stdebPybuild:(

  1. 使用 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 (将#修改为@)