Como soluciono o erro "Não é possível abrir o arquivo de objeto compartilhado libudev.so.0"?

81

Tentando executar o Game Dev Tycoon no Ubuntu 64. Ele solicita o objeto acima.

Eu corri sudo apt-get install libudev1:i386e ele voltou já instalado.

Eu tenho, /lib/i386-linux-gnu/libudev.so.1mas não em libudev.so.0lugar algum.

senshikaze
fonte
1
Isso aconteceu ao tentar instalar a nova versão do Popcorntime no Mint Petra 16
igorsantos07

Respostas:

27

Para o Ubuntu de 64 bits, ele está no pacote libudev0 de 32 bits.

Você pode instalar isso com o seguinte comando:

sudo apt-get install libudev0:i386

Este pacote foi removido do Ubuntu em 14.04. Você precisará instalá-lo a partir de uma versão mais antiga.

Sean
fonte
3
nenhum pacote encontrado ao tentar procurar libudev0: i386 alguma idéia?
Jonathan
26
Eu acabei fazendo o sudo apt-get install libudev1: i386 e depois o sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong
Eu tive que entrar este comando para obter google-webdesigner para instalar no Debian 64 bit
HoboBen
2
Por favor, instale a versão antiga a partir daqui: packages.ubuntu.com/precise/libudev0
rubo77 30/10/2015
O pacote libudev0 não está disponível, mas é referido por outro pacote. Isso pode significar que o pacote está ausente, foi obsoleto ou está disponível apenas em outra fonte
Aaron Franke
199

Para corrigir, vinculei libudev.so.1a libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
senshikaze
fonte
25
para 64 bits: sudo ln -sF /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu
10
Por favor não faça isso. Está apenas pedindo problemas.
Dobey
1
Este desarrumada Plex Home Theater para mim, para reverter remover libudev.so.0 ligação simbólica e reinstalar libudev0: i386
Johan Bjäreholt
2
Em 32 bits, este é o comando (no caso de alguém ter chegado aqui):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena
6
Ouça o dobey, este é um procedimento confuso. Ryan Crichton postou o caminho certo para fazê-lo AQUI .
berbt
55

Para o ubuntu 14.04 e superior

O método mais fácil que encontrei foi baixar o .deb ( link direto para o download de 64 bits e o download de 32 bits ) e clicar duas vezes nele para instalá-lo ou usar o dpkg para instalá-lo:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Para versões anteriores

Na versão anterior do ubuntu, este pacote estava disponível nos repositórios oficiais. Você pode instalar com o seguinte:

sudo apt-get install libudev0:i386
Ryan Crichton
fonte
17
ESTA É A RESPOSTA CERTA . Se um pacote estiver faltando, você instala o pacote ... isso é simples. Criar links, editar nomes em hexadecimal, reconfigurar o Google Chrome, martelar a CPU e cheirar pimenta em pó não são soluções reais.
berbt
2
Mas isso só funciona se esse pacote estiver disponível.
Tamsyn Michael
1
@TamsynMichael o pacote não precisa estar disponível nos repositórios, você pode baixá-lo no link acima e instalá-lo manualmente nas versões do ubuntu que não têm o pacote disponível em seus repositórios oficiais.
Ryan Crichton
Esta deve ser a resposta certa! esta é a correção adequada, sem links simbólicos desarrumado ou qualquer
lord-ralf Adolf
Este é o método mais fácil que eu posso encontrar. Adicionar dependência mais antiga ao repositório é uma dor
denny
32

Eu tive o mesmo problema para um programa diferente, mas a resposta aceita por Sean não me ajudou em nada. Na minha instalação atualizada do 13.04 de 64 bits, o libudev0 não está disponível no formato de 64 bits ou no i386. E o ia32-libs já está instalado. Portanto, não há dados.

O que eu tive que fazer foi uma versão mais modificada da solução senshikaze, mais técnica. Eu vinculei manualmente o libudev.so.0 a libudev.so.1 no diretório lib x86_64, assim:

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

Isso consertou para mim.

Penhasco
fonte
Isso também foi corrigido para mim - executando o Ubuntu 15.04 de 64 bits. Muito obrigado.
Tamsyn Michael
Corrigido no Ubuntu 19.04
Alexander Haroldo da Rocha
5

Este erro pode ocorrer ao tentar usar o nw executável do Node Webkit . Como isso:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

Como resolver:

  1. Obtenha o editor hexadecimal que permite alterar a sequência ASCII do binário, por exemplo. hexedit :

    • No terminal ( Ctrl+ Alt+ T), executar: sudo apt-get install hexedit.
    • Siga as instruções apresentadas no terminal (digite a senha, se necessário, confirme a instalação).
  2. Vá para o diretório com o webkit do nó :
    • No meu caso: cd ~/Dokumenty/node-webkit-*.
  3. Abra o binário do nw usando o comando hex editor precedido por sudo:
    • Execute: sudo hexedit nw.
  4. Procure libudev.so.0como string ASCII:
    • Se estiver usando o hexedit : Pressione Tab.
    • Pressione Ctrl+ S.
    • Tipo: libudev.so.0.
  5. Mudança 0na libudev.so.0string para 1, por isso se torna: libudev.so.1:
    • Use as setas para selecionar 0na libudev.so.0string.
    • Pressione 1no teclado.
  6. Saia e salve as alterações.
    • Pressione Ctrl+ X.
    • Pressione Ypara salvar as alterações.

Você Terminou. Isso também corrige o problema com o binário Atraci ao seguir as mesmas instruções, exceto a edição hex do arquivo Atraci em vez de nw.

Daniel Kmak
fonte
2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nwchmod a+x fixed_nwe , em seguida, você pode executá-lo, sem precisar instalar nada
Catalyst
4

A única resposta aqui que funciona no Ubuntu 14.04 é a resposta aceita e, como muitos comentários apontam que isso pode causar problemas com o sistema no futuro (embora eu não saiba nada disso), cheguei a um compromisso. Este script solicitará (no terminal) sua senha root. Ele criará o link simbólico e iniciará o aplicativo (no meu caso, hora da pipoca). Quando você sai do aplicativo, ele usa a sessão sudo existente para remover o link simbólico:

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0
TenLeftFingers
fonte
Eu gosto dessa idéia, embora me pergunte se existe uma maneira de usar a variável de ambiente LD_LIBRARY.
Flimm
@Limlim, deixe-me saber como você se dá.
#
1
Acabei indo com esta resposta .
Flimm
4

Acabei de encontrar uma maneira de fazer isso funcionar, é bem bobo.

Eu tenho o Google Chrome instalado no meu sistema e o Chrome tem esse objeto compartilhado incorporado. Então, eu apenas tive que criar um link simbólico para a biblioteca no diretório de instalação do Chrome.

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

Funciona muito bem para mim.

nunesvictor
fonte
4

Esta foi a solução mais simples que encontrei

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Weston Ganger
fonte
2

como Phil Strong apontou

instalar libudev.so.1

sudo apt-get install libudev1:i386

então vincule-o como libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Zeroows
fonte
1

Eu fiz isso em 14.04, mas deve ser semelhante. basta excluir o pacote e reinstalar. as bibliotecas corretas são instaladas adequadamente.

apt-get purge google-chrome-stable
apt-get install google-chrome-stable

Tenho certeza de que as outras respostas funcionam, mas tenho uma base básica na modificação de objetos do sistema de arquivos gerenciados por pacotes de gerenciamento de configuração.

MARK SMITH
fonte
1

Isto é o que eu costumava resolver o mesmo problema no Ubuntu 15.04 de 32 bits.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
user491326
fonte
0

ATUALIZAÇÃO Criei um script bash para envolver o programa que você deseja executar. Você pode adicioná-lo à sua pasta bin local e apenas iniciar o programa sem copiar e colar ou executar scripts de shell.

#!/bin/bash

ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor

system=$(uname -m) #Returns x86_64 on 64 bit systems
libdir="/lib/$system-linux-gnu"
libudev1="$libdir/libudev.so.1"

if [ ! -f $libudev1 ]
then
        #check if an i386 folder exist because ' uname -m' returns i686 instead of i386.
        libdir="/lib/i386-linux-gnu"
        libudev1="$libdir/libudev.so.1"
        #if none of the lookups return a file, this script exits,
        BreakUpNotice="This $libudev1 isn't working out. It's not you
        it's me. Or maybe you forgot to install libudev1 library.
        sudo apt-get install libudev1 "

        [ ! -f $libudev1 ] && echo $BreakUpNotice  && exit 0
fi

libudev0="$libdir/libudev.so.0"

echo "$libudev1 found."
sudo ln -sf $libudev1 $libudev0
sudo -k #revoke sudo 
$($ProgramToExecute)

NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel."
RmSuccess="And $libudev0 link is gone."
RmFailed="Whaat? $libudev0 still exists."

echo $NoticeAfterExec
sudo rm $libudev0
sudo -k
[ ! -f "$libudev0" ]  && echo $RmSuccess || echo $RmFailed
exit 

RESPOSTA ANTIGA No Ubuntu 14.04, eu recebia a mensagem de erro do Dart Editor ao tentar usar o Live Preview (Chromium). O erro foi resolvido instalando o libudev1 e criando um link simbólico .

    sudo apt-get install libudev1

Eu também usei o script mencionado acima por TenLeftFingers para executar o DartEditor.

    #!/bin/sh
    sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
    ./DartEditor
    sudo rm /lib/i386-linux-gnu/libudev.so.0

Se o Dart Editor não executar, verifique se o JAVA está instalado e se isso não é um problema de permissão.

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer

e torne o IDE executável:

    sudo chmod a+x ./DartEditor

Isso funcionou para mim.

Diaz
fonte
0

Eu estava recebendo o mesmo erro no meu sistema de 32 bits após a atualização do Xubuntu Precise para Trusty. Isso corrigiu para mim:

sudo dpkg-reconfigure google-chrome-stable

Encontrei aqui . Com absolutamente nenhum parâmetro, não tenho certeza de como isso foi corrigido, mas foi o que aconteceu. O que eu mais gostei é que não era necessário fazer nada que potencialmente causasse problemas para mim no futuro, nem exigir que eu caçasse nenhum pacote.

sublinhar
fonte
-1

Se alguém se deparar com esta página enquanto procura na web correções no libudev.so.0 e no Emotiv Epoc SDK Dev Edition no Ubuntu, espero que o seguinte ajude:

// minha configuração é o Ubuntu 13.04 de 64 bits

Para um sistema de 64 bits:

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1. /lib/x86_64-linux-gnu/libudev.so.1

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

o que permite evitar o "erro ao carregar as bibliotecas compartilhadas: libudev.so.0: classe ELF incorreta: ELFCLASS32"

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

Para um sistema de 32 bits:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1. /lib/i386-linux-gnu/libudev.so.1

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0

o que permite evitar o "erro ao carregar as bibliotecas compartilhadas: libudev.so.0: classe ELF errada: ELFCLASS64" (observe que é um palpite, eu estou em um sistema de 64 bits)

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

O EmotivControlPanel, EmoKey, EmoComposer, os exemplos de Java e pequenos exemplos personalizados de Qt devem poder ser executados após o procedimento acima (eu já tentei todas as etapas acima e outras encontradas na Web (estouro de pilha, ..), mas nenhuma estava funcionando para mim, foi o que acabei fazendo depois de algumas "tentativas e erros"

Por último, mas não menos importante, se alguém aqui sabe como executar programas compilados contra bibliotecas de 32 bits em um sistema de 64 bits, ESPECIFICANDO USAR UMA BIBLIOTECA DE 32 bits FORNECIDA POR TERCEIROS?

mais precisamente, para quem sabe do que estou falando, como devo executar os exemplos de Qt "EmoCube" e "BlueAvatar" no meu sistema de 64 bits?

-> pelo que tentei até agora, o máximo que consegui foi: "erro ao carregar as bibliotecas compartilhadas: libedk.so.1: classe ELF errada: ELFCLASS64"

Eu acho que um link simbólico para essa lib no diretório i386 não seria suficiente (embora eu ainda não tenha tentado), por isso, se alguém tiver uma resposta ... Estou ansioso para lê-la.

Cheers all +

StephaneAG
fonte
-4

Execute estes comandos em um terminal:

cd /lib/x86_64-linux-gnu/
sudo cp libudev.so.0.13.0 libudev.so.1

Isso me ajudou

user214274
fonte
Agora, você pode usar o seguinte comando: libdev.so.0.13.0 libudev.so.1
user214274