【发布时间】:2020-05-20 01:17:17
【问题描述】:
在工作中,我们开发了一些 Python 软件,可在 Raspberry Pi 上的 Raspbian(基于 Debian)上运行。
我们有一些 Ansible 脚本可以获取新的 Raspbian 映像,在 Raspberry Pi 上启动,并对其进行配置以运行我们的软件。 Ansible 做了一些事情:
- 使用 apt 安装一些必需的软件包
- 设置 Python 虚拟环境,并使用 pip 和需求文件来安装运行软件所需的 Python 库的确切版本
每次 Ansible 运行时,它都会安装我们测试过我们软件的 Python 库(来自 PyPi)的确切版本,这一点非常棒。不幸的是,这不适用于通过 apt 安装的软件包。
执行 apt-get install package 或 Ansible 等效项会安装该软件包的最新版本。今天的版本,可能与明天的版本不一样。这意味着如果我今天运行我的 Ansible 脚本来设置 Raspberry Pi,我的软件可能会完美运行,但明天在新的 Raspberry Pi 上运行 Ansible 可能会从 apt 安装更新版本的软件,这可能会破坏我们的软件。
有什么办法可以做 pip 所做的事情,但对于 apt 吗?冻结当前安装的软件包版本,然后在新系统上安装时,安装那些确切版本的软件包?或类似的东西。
我知道我们可以安装我们想要的任何版本的软件包,并将 SD 卡克隆到其他 PI,但这首先违背了拥有 Ansible 脚本的目的。
【问题讨论】:
-
你的意思是像(docker)容器镜像吗?
标签: python linux ansible raspberry-pi