我正在寻找管理非发行版软件安装的方法,可以同时安装同一软件的多个版本。例如,我们可以同时安装 ProgramA 1.6 和 ProgramB 1.7,用户可以在它们之间切换。
对此的一个常见解决方案似乎是环境模块我知道它在许多学术网站上都得到了成功使用。然后用户只需运行module load ProgramA/1.6
,然后运行ProgramA
就会得到正确的版本。因此从概念上讲,我可以维护一个包含所有模块文件的存储库,用户可以使用这些模块文件来激活正确的环境。
我的问题主要在于创建一种可重现的方式来实际构建模块使用的软件。我需要一种可重现的方式来构建每个软件包。有什么好方法可以做到这一点?是否可以使用备用根位置和/或备用 RPM db 中的 RPM 来实现?是否有其他工具可以用来管理软件构建?我应该用 shell 脚本把它拼凑起来吗?
我们运行的平台是 Scientific Linux 6,它基本上相当于 Red Hat 6。
答案1
您可以设置自己的存储库并为您的软件创建 RPM。
如果您在存储库中保留多个版本,则可以通过 yum cli 轻松安装所需的版本。
要设置您自己的存储库,请参见此处:点击
答案2
答案3
实现此目的的一个相当简单的方法是使用斯托将每个软件版本安装到其自己的位置,然后允许用户使用stow
(例如通过sudo
)重新指向应用程序版本,或者使用 shell 函数重置PATH
以指向不同的软件版本。
stow
对于运行多个数据库版本的 Sybase 服务器,我做了类似的事情(没有)。我有一个名为的脚本setenv.sh
,如下所示:
#!/bin/sh
case $1 in
12.5|125)
echo "Setting environment for ASE 12.5"
export SYBASE=$HOME/ase125
# ... some other stuff
;;
15.0|150)
echo "Setting environment for ASE 15.0"
export SYBASE=$HOME/ase150
# ... some other stuff
;;
esac