Я ищу способы управлять установкой программного обеспечения, не являющегося дистрибутивом, с одновременной установкой нескольких версий одного и того же программного обеспечения. Например, у нас были бы одновременно установлены ProgramA 1.6 и ProgramB 1.7, и пользователи могли бы переключаться между ними.
Обычным решением этой проблемы является модули среды который, как я знаю, успешно используется на многих академических сайтах. Затем пользователи могут просто запустить module load ProgramA/1.6
а затем бег ProgramA
получит им правильную версию. Итак, концептуально я могу поддерживать репозиторий всех файлов модулей, которые пользователи будут использовать для активации правильной среды.
Моя проблема в основном заключается в создании воспроизводимого способа создания программного обеспечения, используемого модулями. Мне нужен воспроизводимый способ сборки каждого программного пакета. Что было бы хорошим способом сделать это? Можно ли достичь с помощью RPM в альтернативном корневом местоположении и / или альтернативном db RPM? Есть ли другой инструмент, который я мог бы использовать для управления сборками программного обеспечения? Должен ли я просто сколотить это вместе со сценариями оболочки?
Платформа, на которой мы работаем, - это Scientific Linux 6, которая в основном эквивалентна Red Hat 6.
Предложения:
alternatives
команда.Вы можете создать свой собственный репозиторий и создавать пакеты RPM для своего программного обеспечения.
Если вы храните несколько версий в репозитории, вы можете легко установить нужную версию с помощью yum cli.
Для создания собственного репозитория см. Здесь: щелкнуть
Один достаточно простой способ добиться этого - использовать Stow для установки каждой версии программного обеспечения в ее собственное местоположение, а затем разрешить пользователям использовать stow
(например, через sudo
), чтобы изменить версию приложения, или используйте функции оболочки для сброса 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