0

我是debian打包的新手。

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

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

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

但是,python 制作起来有点困难,因为我的 python 脚本使用tensorflow.

起初,我不得不想出一个python安装计划。

这是我到目前为止所发现的。

  1. 使用系统的python

IIUC,它只是通过Build-Dependscontrol文件中设置到、、、dh-python和到文件中来完成。python3-allpython3-setuptoolsdh $@ --with python3rules

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

  1. 利用dh_virtualenv

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

  1. 使用stdebPybuild

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

  1. 使用postinst脚本

事实上,这是我认为对我来说最好的。在我的项目被安装到之后/usr/bin,我让postinstpython 虚拟环境进入/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选项吗?

4

0 回答 0