我们有一个软件在 Centos 7 上的一个单独文件夹中运行,并且由没有 sudo 权限的专用用户运行。当前更新过程包括手动复制新版本的新 zip 文件并使用 bash 脚本提取它们。它运行良好,但我们对一些附加功能感兴趣,例如版本控制、依赖项控制和从存储库安装。Yum 不是一个选项,因为它不支持非 root 安装。您能否建议我们一些具有上述功能且可供非 root 用户使用的自定义包管理器?
答案1
除了便携式打包格式之外,您还可以使用其他允许设置根目录的现有包管理器:
rpm --root dir
dpkg --root=dir
如果您需要包解析和类似的功能:
zypper --root dir
dnf --installroot=dir
答案2
便携式打包格式(如 AppImage 或 Flatpak)可以在一个容器中分发完整的应用程序。不过,我认为它们之间的相互依赖性不是很好,它们相当独立,有时甚至完全孤立。
有些语言可以安装用户本地的模块,例如 Python 的 pip 或 Perl 的 CPAN。当然,这些要求您使用它们的语言。它们确实有内置的版本控制系统和依赖项。
从版本控制系统中检出工作副本是另一种部署方式。也许可以使用 git,克隆部署,然后从同一分支提取更新。虽然没有依赖关系,但如果一个存储库包含整个应用程序,则会更容易。并且任何脚本的运行都必须单独完成。
现有的提取档案的方法不一定不好。当然,要使其自动化,以便准确地将其部署到任何地方。如果您围绕此档案构建脚本、版本控制和元数据,那么恭喜您发明了另一种打包系统。这没什么错,只要它满足您的需求并且可以维护即可。