我的公司正在开发一种基于 Linux 的软件产品,该产品已交付给不同的客户。它自身的产品由相互交互的小型软件组件组成。
我们通常作为更新/新版本向客户提供的是不同软件组件的当前版本,例如 compA-2.0.1、compB-3.2.3 和 compC-4.1.2
目前,我们为安装/升级过程使用了一个相当简单的 shell 脚本。但是,我们希望向最先进的包装前进,主要是为了有一种简单的方法来交换不同版本的组件,跟踪文件和它们所属的包,并为客户提供更简单的界面更新/安装。
根据客户需求,软件组件安装在不同的目录中。所以它可能在/opt
,/usr/local
或者完全不同的东西。
由于我们的绝大多数客户在基于 rpm 的 Linux 发行版上运行,我们决定使用 rpm-packages 而不是 dpkg。
在 rpm 术语中,我们的问题是非 root 安装。使用以下功能,这是非常直接的:
--dbpath
使用选项拥有自己的 rpm 数据库Prefix
使用该机制安装在不同的位置AutoReqProv: no
可选:在 rpm 规范文件中禁用自动库依赖
使用这些功能/选项允许我们创建可以使用rpm
命令行工具以非 root 用户身份安装的 rpm 包。
但是,我们真正希望看到的是通过带有yum
或的 http 存储库安装这些包zypper
。后者是基于 SUSE 的发行版中的首选工具。
我们看到的问题是,这些工具都没有提供--dbath
非 root 安装所需的替代 rpm 数据库选项(以 rpm 为单位)和前缀支持。
有人对如何处理这个问题有建议/想法吗?是否有我们不知道的第三个软件包工具?
还是我们应该走一条完全不同的路线?我玩过 GNU stow
,并围绕它编写了一些非常简单的类似 yum 的逻辑 - 但随后我基本上会启动我自己的包安装工具,我试图绕过它。