Existe uma maneira de instalar várias versões de um programa no linux?

4

Estou tentando instalar o php-5.3 no Arch Linux, mas o bison é muito novo, então construí uma versão mais antiga do bison dos fontes. E parece que se instala em /usr/local por padrão. (Isso é algum tipo de convenção?) Então, agora estou querendo saber se posso instalar mais de uma versão do bison , ou seja, lado a lado com o sistema padrão e o que acabei de instalar. É provável que esse tipo de coisa raramente seja necessário. Estou apenas curioso sobre isso. Isso é uma coisa difícil de fazer? Como devo fazer isso?

    
por x-yuri 06.10.2014 / 08:44

2 respostas

3

Algum software específico pode ser configurado com --program-suffix=-my-version-suffix . Talvez seja necessário personalizar alguns dos outros diretórios, mas se você deixar o --prefix para o padrão ( /usr/local ), isso não colidirá com o pacote da distro em /usr .

No caso geral , a única distro que tenta permitir a co-instalação de versões arbitrárias é Nix , embora O Gentoo tenta mais pacotes do que a maioria das distros se preocupa (embora para o Bison ele só permita uma versão de cada vez - pelo menos ela oferece uma escolha embora).

Observe, no entanto, que se o código-fonte quebrar com versões mais recentes do bison, isso geralmente significa um problema simples com o código-fonte. Geralmente, há alguns %option (ou --argument ) que podem consertá-lo.

    
por 06.10.2014 / 09:28
4

Uma maneira de tratar este problema consistentemente é usar o pacote modules . Ele funciona alterando variáveis ambientais (por exemplo, os caminhos para seus binários).

The Environment Modules package provides for the dynamic modification of a user's environment via modulefiles. Modules can be loaded and unloaded dynamically and atomically, in an clean fashion

por exemplo.

$ module load gcc/3.1.1 
$ which gcc 
/usr/local/gcc/3.1.1/linux/bin/gcc 

$ module switch gcc gcc/3.2.0 
$ which gcc 
/usr/local/gcc/3.2.0/linux/bin/gcc 

No seu caso, a versão bison que vem em primeiro lugar na sua variável ambiental PATH está selecionada. Para inspecionar ou alterar essa variável manualmente para o terminal atual, execute

$ echo $PATH
 ....

priortize /opt/bin por _pre_pendendo-o para o PATH:

$ export PATH="/opt/bin:$PATH"

ou, acrescente /opt/bin/ ao PATH (só é selecionado se nenhum binário com o mesmo nome for encontrado em outro lugar em PATH )

$ export PATH="$PATH:/opt/bin"
    
por 06.10.2014 / 10:14