O Stata 14 falha ao iniciar no Ubuntu 16.10 / 17.04 / 17.10, com o erro “libpng12.so.0”. Como instalo a libpng12?

0

O software proprietário Stata versão 14 funciona bem em LTS 16.04, mas cometi o erro de atualizar o Ubuntu para 16.10 sem pensar na possibilidade de que software proprietário (Stata é meu único) pudesse quebrar. Eu não posso rebaixar. Stata diz:

stata-se: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory

O suporte do Stata me diz para instalar o libpng12.

Então, minha pergunta é: como posso instalar e disponibilizar esta biblioteca com segurança para o Stata? (Aparentemente, a GUI Stata não funciona perfeitamente mesmo com a biblioteca, mas a funcionalidade estará disponível.)

Tentar com o apt dá:

E: Unable to locate package libpng12

libpng-dev já está instalado e parece não atender à necessidade.

Eu presumo que o suporte do Stata teria me dito se uma correção fácil como essa funcionaria, mas ao tentar falsificá-la com links simbólicos,

sudo ln -s /usr/lib/i386-linux-gnu/libpng16.so.16.25.0 /usr/lib/i386-linux-gnu/libpng12.so.0

não fez diferença.

sudo ln -s /usr/lib/i386-linux-gnu/libpng16.so.16.25.0 /usr/lib/x86_64-linux-gnu/libpng12.so.0

deu:

stata-se: error while loading shared libraries: libpng12.so.0: wrong ELF class: ELFCLASS32
    
por CPBL 05.04.2017 / 18:33

2 respostas

1

Seus links simbólicos não funcionarão porque você está criando um link para uma biblioteca i386 em um caminho que é comumente procurado por bibliotecas amd64. Executáveis compilados para uma arquitetura (amd64) não podem carregar bibliotecas compartilhadas compiladas para outra arquitetura (i386).

Você pode ser capaz de enganar o Stata para usar libpng16 ao invés de libpng12 se você garantir que é para a mesma arquitetura como o próprio arquivo Stata. Suponho que o último é para amd64 (considerando que a mensagem de erro reclama de uma classe ELF inválida ELFCLASS32 , que é usada apenas para conjuntos de instruções i386).

Parece que o Stata verifica explicitamente a versão libpng, portanto o truque descrito acima e, portanto, as duas soluções que estão sendo desenvolvidas a seguir não funcionarão. Consulte a Better Solution em seu lugar.

Solução rápida e suja

Mascarar libpng16.so.16 as libpng12.so.0 para todos executáveis amd64:

sudo ln -sfT libpng16.so.16 /usr/lib/x86_64-linux-gnu/libpng12.so.0

Ainda sujo, mas com menos surpresas futuras

Mascarar libpng16.so.16 como libpng12.so.0 apenas para executáveis selecionados (eliminando assim o risco de que outros aplicativos captem o falso libpng12.so.0 por engano):

  1. Crie um diretório para bibliotecas compartilhadas "masquerade", e. g .:

    sudo mkdir -p /usr/local/lib/stata/shared-library-hack
    
  2. Coloque um link simbólico na biblioteca compartilhada mascarada:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libpng16.so.16 /usr/local/lib/stata/shared-library-hack/libpng12.so.0
    
  3. Execute o programa com um caminho de pesquisa da biblioteca modificada:

    LD_LIBRARY_PATH=/usr/local/lib/stata/shared-library-hack [COMMAND] [ARGUMENTS...]
    

    Ou se você quiser reter alterações potencialmente existentes no caminho de pesquisa da biblioteca:

    LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"${LD_LIBRARY_PATH}:"}/usr/local/lib/stata/shared-library-hack" [COMMAND] [ARGUMENTS...]
    

    Se você não quiser digitar um comando tão longo toda vez que iniciar um aplicativo desse tipo, poderá usar um wrapper de script de shell ou editar a descrição inicial do aplicativo (ou seja, a sub-rotina Exec= no arquivo .desktop ) adequadamente.

Melhor solução

Instale realmente libpng12.so.0 . A maneira mais fácil é baixar e instalar o pacote Deb de uma versão anterior do Ubuntu:

  1. Vá para link , escolha um espelho e baixe o arquivo do pacote.

  2. Use seu gerenciador de pacotes favorito para instalar o arquivo de pacotes.

    Na linha de comando, você pode usar:

    sudo apt install [DOWNLOAD-PATH]/libpng12-0_*_amd64.deb
    

    (Substitua [DOWNLOAD-PATH] pelo caminho usado anteriormente como o diretório de destino do download).

This is not a proper solution, because updates to libpng12, including security updates, will not be automatically installed, so doing this introduces a security risk. – fkraiem Dec 8 '17 at 4:36

    
por David Foerster 29.08.2017 / 16:11
-1

Aqui está a resposta mais simples / compacta:

Isso é testado para o Stata de 64 bits em um Ubuntu de 64 bits 16.10 e 17.10 (mas parece falhar em 17.04?). Simplesmente:

visite link e clique em qualquer um dos links para os espelhos lá. Isso fará o download de libpng12-0_1.2.54-1ubuntu1_amd64.deb . Clique neste arquivo ou inicie-o com algo como

gnome-open ~/Downloads/libpng12-0_1.2.54-1ubuntu1_amd64.deb

e clique no botão de instalação.

Agora o Stata14 e seus xstata serão lançados corretamente. Os ícones estarão faltando nos menus, mas tudo parece funcionar bem.

    
por CPBL 06.04.2017 / 20:30