“Nenhum tal arquivo” ao executar um programa de 32 bits em um sistema de 64 bits

6

Eu fiz o download de um instantâneo do Chromium e o descompactei assim:

michael@ubuntu:/opt/chrome-linux$ ls
chrome                  libffmpegsumo.so                nacl_irt_x86_32.nexe
chrome.1                libppGoogleNaClPluginChrome.so  product_logo_48.png
chrome_100_percent.pak  locales                         resources
chrome.pak              nacl_helper                     resources.pak
chrome_sandbox          nacl_helper_bootstrap           xdg-mime
chrome-wrapper          nacl_irt_srpc_x86_32.nexe       xdg-settings

Mas quando tento executar chrome , não está lá ...

michael@ubuntu:/opt/chrome-linux$ ./chrome
bash: ./chrome: No such file or directory

Alguém sabe por que não abre? Executando o Xubuntu 12.10 AMD64.

michael@ubuntu:/opt/chrome-linux$ ldd /opt/chrome-linux/* | grep -i "not found"
ldd: /opt/chrome-linux/locales: not regular file
ldd: /opt/chrome-linux/resources: not regular file
    
por Michael 21.12.2012 / 20:46

2 respostas

3

Você está perdendo o suporte de 32 bits. Instale o libc6:i386 , ou seja, o pacote da biblioteca base de 32 bits e todas as outras bibliotecas de 32 bits de que o Chrome precisa ( é provável que esteja próximo das dependências do pacote do Chromium ).

Quando você não consegue executar um arquivo que depende de um "carregador", o erro que você recebe pode se referir ao carregador, em vez do arquivo que você está executando.

  • O carregador de um executável nativo vinculado dinamicamente é a parte do sistema responsável pelo carregamento de bibliotecas dinâmicas. É algo como /lib/ld.so ou /lib/ld-linux.so.2 e deve ser um arquivo executável.
  • O carregador de um script é o programa mencionado na linha shebang , por exemplo /bin/sh para um script que começa com #!/bin/sh .

A mensagem de erro é bastante enganadora, não indicando que o carregador seja o problema. Infelizmente, consertar isso seria difícil porque a interface do kernel só tem espaço para reportar um código de erro numérico, não para indicar também que o erro de fato diz respeito a um arquivo diferente.

Depois de instalar o carregador dinâmico de 32 bits /lib/ld-linux.so.2 , que está no pacote libc6:i386 , você receberá pelo menos uma mensagem de erro não enganosa informando sobre as outras bibliotecas ausentes.

    
por Gilles 21.12.2012 / 21:21
1

O caminho mais rápido para chegar à solução da Gilles é instalar o ia32-libs-multiarch . Enquanto isso puxa em um lote de pacotes, você economiza tempo para descobrir todas as diferentes dependências.

    
por iGadget 24.01.2013 / 12:55