como executar um novo software sem atualizar o GLIBC?

20

Instalei o Mathematica 9 em um antigo sistema Red Hat Enterprise Linux AS release 4. Após a instalação, tentei iniciar o Mathematica, mas saiu a seguinte mensagem:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versão `GLIBC_2.4 'não encontrada (exigido por / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Bibliotecas / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versão `GLIBC_2.4 'não encontrada (exigido por / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Bibliotecas / Linux-x86-64 / libQtCore.so.4)

Não quero atualizar o glibc do sistema, porque é arriscado e o administrador não me permite fazer isso.

Alguém sugeriu que é possível simplesmente instalar a nova versão do glibc em outro lugar e executar o programa como

LD_LIBRARY_PATH=/lib/new your_application

e isso não afetará o sistema.

Então, eu estou perguntando aqui se esse método realmente funciona. E, se funcionar, quero saber como fazê-lo passo a passo (não tenho experiência no Linux no momento e quero usar o Mathematica no Linux o mais rápido possível).

Editar :

Percebi que existe um software chamado "Ermine". Parece que ele pode implantar um software como pacote independente, que não depende do ambiente externo. Infelizmente, é um shareware. Então, acho que, como o "Ermine" pode fazê-lo, deve haver uma maneira de usar o novo software no sistema antigo.

user15964
fonte
2
Funcionaria. É provável que seja bastante trabalhoso configurar (você precisará instalar todas as bibliotecas das quais o Mathematica depende). Minha recomendação seria instalar pacotes rpm de uma versão mais recente em um subdiretório da sua casa. Vou deixar alguém que esteja mais familiarizado com o RH escrever uma resposta explicando como fazer isso.
Gilles 'SO- stop be evil'
@ Gilles Oi, Gilles, muito obrigado !!! Estou ansioso por isso.
usar o seguinte comando
Ele é arriscado para instalar glibc em outro lugar.
usar o seguinte código
@ BenjiWiebe - a que tipo de riscos você se refere exatamente?
FooF 02/02
11
Postagens cruzadas de superusuário: superuser.com/questions/543249/… Repetindo meu comentário de lá: "O RHEL4 tem oito anos e atingiu o final de seu ciclo de vida normal de suporte. Não há outra máquina na qual você possa instalá-lo? ? por exemplo, sua máquina de mesa. "
Burhan Ali

Respostas:

10

Você pode compilar definitivamente uma nova versão do GLIBC e armazená-la em um diretório separado. A primeira coisa que você precisará fazer é baixar a versão do glibc desejada em http://ftp.gnu.org/gnu/glibc/ .

Execute o configurescript e defina --prefix=como algo como /home/you/mylibs.

Depois de conseguir instalá-lo nesse diretório, você deverá definir seu LD_LIBRARY_PATHlocal na nova glibc.

Você precisará descobrir quaisquer dependências que precise compilar. Você pode criar um script de shell que defina as variáveis ​​LD_ * e execute o programa (o que você teria que fazer de qualquer maneira), e execute-o repetidamente - faça o download / recompilar as bibliotecas ausentes ao longo do caminho.

Você também pode usar lddpara determinar quais bibliotecas compartilhadas o programa precisa e, em seguida, usar lddem cada uma das bibliotecas para descobrir se elas exigem glibc.

Esse processo pode consumir muito tempo e não é para os impacientes ou fracos de coração - percorrer / recompilar o caminho pelas possíveis dependências necessárias para que o aplicativo funcione, ocasionalmente pode fazer com que você queira arrancar os cabelos.

Atualização 1:

Eu baixei glibc-2.4 e tentou compilá-lo no CentOS 6. Para obter configurefuncionando corretamente eu tive que mudar os ace ldverificações de versão, alterando:

2.1[3-9]*)

para:

2.*)

nas linhas 4045e 4106no configurepróprio arquivo. Defino minhas variáveis ​​de ambiente * FLAGS da seguinte maneira:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

e depois executado ./configure --prefix=/home/tim/masochist. Ele configurou corretamente ... e começou a criar corretamente também ... mas então comecei a encontrar erros - principalmente o compilador reclamando que as coisas estavam sendo redefinidas.

Naquele momento, desisti ... Porque estava ficando muito demorado . ;)

livingstaccato
fonte
+1 para as informações, embora a última linha seja importante. O OP precisa decidir se a quantidade de esforço envolvido vale a pena.
Burhan Ali
Obrigado a todos! OK, eu me demiti. Eu acho que seria melhor ficar com o Mathematica 8 como um compromisso. Funciona no Red Hat 4.
user15964
@livingstaccato Olá, mas como comentar as palavras de vonbrand: "Instalar uma nova versão em algum lugar estranho é mais arriscado ... A biblioteca do lugar estranho pode ser acessada por coisas aleatórias, ....". É realmente mais arriscado? Você já tentou o caminho descrito em sua resposta?
user15964
@ user15964 Não é arriscado, a menos que você não preste atenção no que está fazendo root ou faça algo estranho, como alterar seu LD_PRELOAD no script init da sessão e se proteger.
Livingstaccato
@ user15964 Também - sim - eu reconstruí o glibc muito, muito bem, antigamente.
Livingstaccato
1

Atualizar glibc para uma versão suportada por sua distribuição é de baixo risco. Ele foi escrito para lidar com a compatibilidade com versões que datam de muito tempo atrás, e (descobrindo bugs) uma nova versão deve ser apenas uma gota na substituição. Instalar uma nova versão em algum lugar estranho é mais arriscado, IMHO.

vonbrand
fonte
4
mas o problema é que não sou o administrador, não tenho autoridade. Mesmo se eu receber a permissão, tenho medo de fazer alterações no sistema, porque esse não é o meu computador, é na verdade um cluster, muitas pessoas trabalham nele. A propósito, por que uma nova versão em outro lugar é arriscada? Eu só preciso vincular o software necessário à nova lib, não o sistema inteiro.
usar o seguinte comando
11
E você se sente livre para instalar algum pacote aleatório? As políticas de administração do sistema estão atrasadas para uma revisão séria . A biblioteca no local estranho poderia ser escolhida por coisas aleatórias, e resolver apenas a execução do seu aplicativo (e possíveis processos iniciados por ela, que não envolvem programas padrão) poderia ser um grande desafio ...
vonbrand
11
@vonbrand - Bobagem, a menos que falemos de alguma máquina de alta segurança (e não por exemplo de um desenvolvedor compartilhado ou máquina / cluster de teste); nesse caso, você precisa ter uma paranóia saudável sobre software não auditado estrangeiro. Em termos de quebras aleatórias, é bem diferente atualizar o libc (afetando todo o sistema, possivelmente causando quebras do sistema) do que apenas instalar um programa de aplicativo isolado de fontes confiáveis ​​(eu discordo da noção de que o Mathematica é um pacote aleatório). A exaustão de recursos, é claro, é uma preocupação válida que o administrador de sistemas competente deve abordar.
Foof
@FooF, já vi muitos casos de "Administração sabe melhor, deixe os usuários fazerem o que querem sem apoio" para ter ilusões nessa área.
vonbrand
11
@ vonbrand - tendo a concordar com seu último comentário. Mas eu discordo totalmente que a atualização da libc ou a instalação de softwares conhecidos (não o "pacote aleatório") sejam de alguma forma comparáveis ​​(supondo que não haja más intenções). Sabemos muito pouco sobre a natureza do ambiente e seus usuários para expressar qualquer opinião definitiva aqui. Em máquinas de desenvolvimento de software (com muitos usuários competentes), pode fazer sentido permitir que os usuários executem seu próprio software. Às vezes, é absolutamente necessário (o OpenWRT e o OpenEmbedded que visam as plataformas incorporadas criarão a partir das fontes algumas ferramentas necessárias para criar a imagem f / w).
FooF
-3

Nesse caso em particular, eu diria que não se preocupe, a menos que você tenha assistência (e permissão) dos administradores deste sistema compartilhado.

O Mathematica é executado no Windows, Mac e Linux, então instale-o na sua máquina desktop, onde você não precisa se preocupar em afetar os outros. Também é mais provável que o sistema operacional seja mais recente que o RHEL4 e, portanto, você não precisará fazer contorções para instalá-lo.

Burhan Ali
fonte