Назад | Перейти на главную страницу

Управление установкой не-дистрибутивного программного обеспечения

Я ищу способы управлять установкой программного обеспечения, не являющегося дистрибутивом, с одновременной установкой нескольких версий одного и того же программного обеспечения. Например, у нас были бы одновременно установлены ProgramA 1.6 и ProgramB 1.7, и пользователи могли бы переключаться между ними.

Обычным решением этой проблемы является модули среды который, как я знаю, успешно используется на многих академических сайтах. Затем пользователи могут просто запустить module load ProgramA/1.6 а затем бег ProgramA получит им правильную версию. Итак, концептуально я могу поддерживать репозиторий всех файлов модулей, которые пользователи будут использовать для активации правильной среды.

Моя проблема в основном заключается в создании воспроизводимого способа создания программного обеспечения, используемого модулями. Мне нужен воспроизводимый способ сборки каждого программного пакета. Что было бы хорошим способом сделать это? Можно ли достичь с помощью RPM в альтернативном корневом местоположении и / или альтернативном db RPM? Есть ли другой инструмент, который я мог бы использовать для управления сборками программного обеспечения? Должен ли я просто сколотить это вместе со сценариями оболочки?

Платформа, на которой мы работаем, - это Scientific Linux 6, которая в основном эквивалентна Red Hat 6.

Предложения:

  1. Если ваше программное обеспечение не нужно устанавливать через rpm, взгляните на alternatives команда.
  2. Если ваше программное обеспечение написано на Python, вы можете использовать virtualenv.
  3. Если ваше программное обеспечение написано на Ruby, вы можете использовать rvm.

Вы можете создать свой собственный репозиторий и создавать пакеты 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