Como executar múltiplas instâncias de um software no Ubuntu?

1

Eu tenho um software, que deve ser instalado a partir do código-fonte usando ./configure-make-make install cycle. É possível "virtualizar" este software para que diferentes instalações do software possam ser feitas (com diferentes opções) e usadas?

Por exemplo, em uma instância, talvez queira usar terrible.cc em Makefile e compilar. Enquanto no outro caso eu poderia excluir esse arquivo e incluir algum outro arquivo. E poderia haver vários desses módulos. Essencialmente, isso significa ter várias instâncias do mesmo software em execução, mas cada uma delas foi instalada com diferentes configurações.

Além disso, essas instalações não seriam feitas "estaticamente". Para ilustrar isso, considere vários usuários telnet -ing em uma máquina Linux, compilando várias instâncias de Apache e executando-as. Portanto, o usuário Apache do John é transparente do usuário Adam, embora ambos os Apache estejam sendo executados no mesmo servidor físico. No entanto, não sei quantos usuários entrariam no login a qualquer momento. (Mas pode ser que eu consiga fixar um limite superior).

Isso é praticamente possível de se conseguir? Eu apreciaria muito uma resposta detalhada com URLs possíveis.

    
por Barun 27.09.2011 / 12:15

2 respostas

2

É impossível dizer qual pode ser a melhor maneira de atingir seu objetivo, pois isso depende muito do software que você deseja usar e da flexibilidade do ambiente construído.

Em um caso geral, o que eu tentaria fazer primeiro é verificar se você pode usar ./configure para criar prefixos de instalação para suas várias versões. Algo como

--prefix /opt/yoursoft/var1 

que colocaria os binários compilados em /opt/yoursoft/var1/bin ou algo similar.

Dependendo do que faz uma versão completa do seu software, você pode precisar das pastas lib , etc , bin etc. completas sob as várias pastas var* .

Ao fazer isso corretamente, você pode iniciar suas variantes de software a partir de seus respectivos diretórios.

O uso da virtualização é muito mais complicado, pois você precisa manter várias cópias de seu sistema operacional completo e instalar as variantes do software em cada uma delas. Você poderia fazer isso com várias variantes, incluindo tipos de estilo de área de trabalho como VirtualBox ou a abordagem de estilo de servidor com Xen ou KVM (consulte este guia do Ubuntu .

    
por 27.09.2011 / 12:41
1

Se o que você deseja é que os usuários e a máquina se comportem como se tivessem acesso total (ou quase total) aos recursos do computador sem realmente ter acesso total, você precisa usar a virtualização para criar várias VMs para o seu computador. usuários (e cada VM teria seu próprio IP para seu aplicativo, se ele oferecesse um serviço que requer uma porta) ou você precisaria examinar algum tipo de mecanismo de sandboxing como jails (e isso ainda levaria a alguns problemas de contenção de rede se algum tipo de aplicativo que é "duplicado", mas deseja que uma mesma porta seja usada.

Caso contrário, eles poderão compilar e executar aplicativos instalados diretamente em seus diretórios iniciais, como foi feito nos "velhos tempos" do Unix. Parece que você está descrevendo a instalação de aplicativos no sistema e nos diretórios da máquina local, que é uma tarefa sysadmin. Você precisaria limitá-los aos seus diretórios pessoais ou fornecer a eles máquinas virtuais para serem executados de forma descontrolada.

    
por 27.09.2011 / 13:59