У меня есть программное обеспечение, которое нужно установить из исходного кода, используя ./configure-make-make install
цикл. Можно ли «виртуализировать» это программное обеспечение, чтобы можно было выполнять разные установки программного обеспечения (с разными параметрами) и использовать?
Например, в одном случае я мог бы пожелать использовать terrible.cc
в Makefile
и скомпилировать. А в другом случае я мог бы исключить этот файл и включить какой-нибудь другой файл. И таких модулей могло быть несколько. По сути, это означает наличие нескольких запущенных экземпляров одного и того же программного обеспечения, но каждый из них был установлен с разными конфигурациями.
Более того, эти установки не будут выполняться «статически». Чтобы проиллюстрировать это, рассмотрим несколько пользователей telnet
-ing на машину Linux, компилируя несколько экземпляров Apache
, и запустив их. Итак, пользователь John's Apache
прозрачен от пользователя Adam's, хотя оба Apache
выполняются на одном физическом сервере. Однако я не знаю, сколько пользователей войдут в систему в любой момент времени. (Но, может быть, я смогу установить верхний предел.)
Реально ли этого добиться? Буду очень признателен за подробный ответ с возможными URL-адресами.
Невозможно сказать, что может быть лучшим способом достижения вашей цели, так как это во многом зависит от программного обеспечения, которое вы хотите использовать, и гибкости его встроенной среды.
Однако в общем случае сначала я бы попробовал проверить, можете ли вы использовать ./configure
для создания префиксов установки для ваших различных версий. Что-то вроде
--prefix /opt/yoursoft/var1
который затем поместит скомпилированные двоичные файлы в /opt/yoursoft/var1/bin
или что-то подобное.
В зависимости от того, что составляет полную сборку вашего программного обеспечения, вам может потребоваться полная lib
, etc
, bin
и т.д. папки под различными var*
папки.
Сделав это правильно, вы можете запускать свои варианты программного обеспечения из соответствующих каталогов.
Использование виртуализации намного сложнее, так как вам нужно поддерживать несколько копий вашей полной операционной системы и устанавливать варианты программного обеспечения на каждой из них. Вы можете сделать это с помощью нескольких вариантов, включая типы стиля рабочего стола, такие как VirtualBox, или подход в стиле сервера с Xen или KVM (см. это руководство по Ubuntu).
Если вы хотите, чтобы ваши пользователи и машина вели себя так, как если бы у них был полный доступ (или почти полный доступ) к ресурсам на компьютере без фактического полного доступа, вам необходимо либо использовать виртуализацию, чтобы создать несколько виртуальных машин для ваших пользователей (и каждая виртуальная машина будет иметь собственный IP-адрес для вашего приложения, если она предлагает услугу, требующую порта), или вам нужно будет взглянуть на какой-то механизм песочницы, такой как тюрьмы (и это все равно приведет к некоторым проблемам с сетью, если запускается какой-то приложение, которое «дублируется», но хочет использовать тот же порт).
В противном случае они могли бы компилировать и запускать приложения, установленные прямо в их домашние каталоги, как это делалось в «старые времена» Unix. Похоже, вы описываете установку приложений в каталоги системы и локального компьютера, что является задачей системного администратора. Вам нужно будет ограничить их домашними каталогами или дать им виртуальные машины для безумной работы.