Instalando dois glibc ao lado no debian / ubuntu

15

É possível instalar e usar duas versões diferentes da glibc na mesma máquina. Onde uma versão é usada apenas para executar software legado, que depende de binários glibc antigos?

É possível fazer isso com a ajuda do gerenciador de pacotes (algo como "instalar este pacote e suas dependências para /opt/old-glibc), em vez de gerenciá-lo

Elazar Leibovich
fonte
4
Deve ser, mas ... oh, muita dor.
tshepang 3/11/11
Possivelmente, mas você precisará fornecer mais detalhes. Qual SO (versão do Debian / Ubuntu) com precisão e mais importante o que é o software legado e qual versão da libc ele usa? Eu acho lddque te diria uma coisa. Se possível, você pode precisar recompilar a biblioteca libc herdada e / ou instalar / recompilar pacotes de suporte. Dependendo da idade do seu aplicativo, isso pode ser complicado. Eu vejo que o Debian atual libc6depende libc-bin (= 2.13-0exp5)e libgcc1, portanto libc6, não tem muitas dependências, mas você ainda pode ter problemas.
Faheem Mitha

Respostas:

8

Sim é possivel. Você precisará ter muito cuidado com os caminhos de carregamento da biblioteca e talvez seja necessário recompilar algumas outras bibliotecas.

Como o caminho de menor atrito, eu recomendo instalar uma versão mais antiga do Debian ou Ubuntu em um chroot . Ou seja, crie um diretório, digamos /old/etch, e instale a distribuição mais antiga na árvore enraizada nele; Para executar esse programa problemático, chame chrootpara restringir sua visão do sistema de arquivos /old/etch.

O Debian (ou Ubuntu) vem com um pacote para ajudar na instalação de outro sistema em um chroot: schroot (sucessor do dchroot). Primeiro, use o debootstrap para instalar a distribuição mais antiga (instale apenas o sistema básico e o que o seu programa precisa, sem servidores). Em seguida, criar schroot para executar o programa convenientemente (com /dev, /proc, /homee outros “satélite” sistemas de arquivos acessível).

Portanto, o plano é: debootstrap, dchroot. Em Como executo programas de 32 bits em um Debian / Ubuntu de 64 bits? , Dou um tutorial sobre uma configuração semelhante - esteja você executando versões diferentes da distribuição, arquiteturas diferentes ou distribuições semelhantes ao Debian, é apenas uma questão de selecionar a fonte de pacote apropriada, o resto é o mesmo.

Gilles 'SO- parar de ser mau'
fonte
Se alguém já possui a versão mais recente instalada, ele pode começar com isso e, em cima da mais recente, instalar a mais antiga /old/etch?
N611x007
@ Naxa Sim, na verdade essa é a situação descrita aqui, mas funciona da mesma maneira se você seguir o caminho inverso (mais recente, com chroot no anterior). De fato, escrevi um tutorial de debootstrap / schroot alguns dias depois de escrever esta resposta, adicionei o link.
Gilles 'SO- stop be evil'