我们正在用 python 开发树莓派应用程序。我们没有太多在 Linux 中部署应用程序的经验,我们需要弄清楚如何在发布后更新此应用程序。我们想出了两种方法:
- 创建自定义私有存储库并创建应用程序的 .deb 包
- 制作一个脚本来检查打包应用程序的某些网址,将其解压并重写旧应用程序。
您能推荐我们应该采取的方法吗?
答案1
我肯定会选择 apt 包 (.deb)。您的应用程序将在目标系统上更容易管理,并且您将对软件交付更有信心。 APT 是一个坚如磐石的系统。
APT 将确保解决所有软件依赖性。 “自带电池”的Python对系统软件库有很多依赖。如果您只是下载代码并覆盖您的应用程序,则不会进行检查以确保系统包含您的应用程序可能依赖的库的正确版本。这可能会导致您的应用程序行为不正确或根本不行为。
APT 在构建应用程序包时也会进行大量检查。有许多用于构建 python 包的 APT 工具和子系统。
我相信如果你尝试制作自己的分发系统,从长远来看,你将不得不开发更多自己的代码并遇到更多的后勤问题。
缺点是,您需要学习如何在 APT 系统中构建 python 包,这可能会很复杂,但我认为值得。
作为 15 年多来的 Debian 和 Ubuntu 用户、开发人员、管理员和打包人员,我不喜欢供应商想要在 APT 系统之外提供软件,因为这涉及风险。
答案2
“某些检查更新的脚本”肯定看起来很可疑。它需要额外的规定,需要必要的更新权限,而默认情况下它是没有的,你会遇到各种各样的问题,并且你正在重新发明轮子。我严格拒绝在我的系统上进行任何包装系统之外的更新 - 除了那些我从自己的源存储库更新软件以及我知道我在做什么和它做了什么的更新。否则会损坏我的系统而无法修复,风险太大。
一定要选择目标系统附带的打包系统,即 .deb 包,如果您愿意,甚至可以在存储库中提供它们 - 这样可以确保用户实际上也可以通过简单的操作使用系统工具来更新它sudo apt-get update; sudo apt-get upgrade