我的公司正在开发一种基于Linux的软件产品,该产品将运送给不同的客户 . 它自己使用的产品是由彼此交互的小软件组件构成的 .

我们通常作为更新/新版本发布给客户的是不同软件组件的当前版本,例如compA-2.0.1,compB-3.2.3和compC-4.1.2

目前,我们为安装/升级过程使用了一个相当简单的shell脚本 . 但是,我们希望将forwarard转移到最先进的包装,主要是为了方便地交换不同版本的组件,跟踪文件及其所属的包,并为客户提供更简单的界面 . 更新/安装 .

软件组件安装在不同的目录中,具体取决于客户的需求 . 所以它可能在 /opt/usr/local 或者完全不同的东西 .

由于绝大多数客户都使用基于rpm的Linux发行版,因此我们决定使用rpm-packages而不是dpkg .

以rpm为单位,我们的问题是非root安装 . 使用以下功能可以直接进行:

使用 --dbpath 选项

  • 拥有rpm数据库

  • 使用 Prefix 机制在不同位置安装

  • 可选:在rpm规范文件中使用 AutoReqProv: no 禁用自动库依赖项

使用这些功能/选项允许我们创建rpm包,可以使用 rpm 命令行工具作为非root用户进行安装 .

但是,我们真正希望看到的是通过带有 yumzypper 的http存储库安装这些软件包 . 后者是基于SUSE的发行版中的首选工具 .

The problem we see is, that non of the tools is providing the required alternative rpm database option (--dbath in rpm) and prefix support required for a non-root installation.

Does anybody have a suggestion/ idea how to deal with this issue? Is there maybe a third package-tool with we're not aware of?

或者我们应该走一条完全不同的路线?我玩了一个GNU stow 并且在它周围写了一些非常简单的yum式逻辑 - 但是我基本上会启动我自己的包安装工具,我试图绕过它 .