¿Cómo resuelvo el error "No se puede abrir el archivo de objeto compartido libudev.so.0"?

81

Intentando ejecutar Game Dev Tycoon en Ubuntu 64. Pide el objeto anterior.

Corrí sudo apt-get install libudev1:i386y volvió ya instalado.

Tengo /lib/i386-linux-gnu/libudev.so.1pero no en ningún libudev.so.0lado.

senshikaze
fuente
1
Esto sucedió al intentar instalar la nueva versión de Popcorntime en Mint Petra 16
igorsantos07

Respuestas:

27

Para Ubuntu de 64 bits, está en el paquete libudev0 de 32 bits.

Puede instalar eso con el siguiente comando:

sudo apt-get install libudev0:i386

Este paquete fue eliminado de Ubuntu en 14.04. Deberá instalarlo desde una versión anterior.

Sean
fuente
3
no se encontró ningún paquete al intentar buscar libudev0: i386 alguna idea?
Jonathan
26
Terminé haciendo sudo apt-get install libudev1: i386 y luego sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong
Tuve que ingresar este comando para que google-webdesigner se instale en Debian de 64 bits
HoboBen
2
Instale la versión anterior desde aquí: packages.ubuntu.com/precise/libudev0
rubo77
El paquete libudev0 no está disponible, pero otro paquete hace referencia a él. Esto puede significar que falta el paquete, que ha quedado obsoleto o que solo está disponible de otra fuente
Aaron Franke el
199

Para solucionarlo, me vinculé libudev.so.1a libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
senshikaze
fuente
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 no hagas esto. Solo está pidiendo problemas.
dobey
1
Esto arruinó Plex Home Theater para mí, para revertir eliminar el enlace simbólico libudev.so.0 y reinstalar libudev0: i386
Johan Bjäreholt
2
En 32 bits, este es el comando (en caso de que alguien llegue aquí):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena
66
Escucha a Dobey, este es un procedimiento desordenado. Ryan Crichton publicó la forma correcta de hacerlo AQUÍ .
berbt
55

Para ubuntu 14.04 y superior

El método más fácil que encontré fue simplemente descargar el .deb ( enlace directo a la descarga de 64 bits y a la descarga de 32 bits ) y hacer doble clic para instalarlo o usar dpkg para instalarlo:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Para versiones anteriores

En la versión anterior de ubuntu, este paquete estaba disponible en los repositorios oficiales. Puede instalar con lo siguiente:

sudo apt-get install libudev0:i386
Ryan Crichton
fuente
17
ESTA ES LA RESPUESTA CORRECTA . Si falta un paquete, instale el paquete ... es así de simple. Crear enlaces, editar nombres hexadecimales, reconfigurar Google Chrome, martillar la CPU y resoplar chile en polvo no son soluciones reales.
berbt
2
Pero solo funciona si ese paquete está disponible.
Tamsyn Michael
1
@TamsynMichael el paquete no tiene que estar disponible en los repositorios, puede descargarlo desde el enlace de arriba y luego instalarlo manualmente en las versiones de ubuntu que no tienen el paquete disponible en sus repositorios oficiales.
Ryan Crichton
¡Esta debería ser la respuesta correcta! esta es la solución adecuada, sin enlaces simbólicos desordenados o en absoluto
lord-ralf-adolf
Este es el método más fácil que puedo encontrar. Agregar una dependencia anterior al repositorio es una molestia
denny
32

Tuve el mismo problema para un programa diferente, pero la respuesta aceptada de Sean no me ayudó en absoluto. En mi instalación actualizada de 64.04 13.04, libudev0 no está disponible ni en forma de 64 bits ni en forma i386. Y ia32-libs ya está instalado. Entonces no hay dados.

Lo que tuve que hacer fue una versión ligeramente modificada de la solución más técnica de senshikaze. He vinculado manualmente libudev.so.0 a libudev.so.1 en el directorio lib x86_64, por lo tanto:

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

Esto me lo arregló.

Acantilado
fuente
Esto también lo solucionó para mí: ejecutar Ubuntu 15.04 de 64 bits. Gracias un montón.
Tamsyn Michael
Corregido en Ubuntu 19.04
Alexander Haroldo da Rocha
5

Este error puede ocurrir al intentar usar nw ejecutable desde Node Webkit . Me gusta esto:

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

Cómo resolver:

  1. Obtenga el editor hexadecimal que le permite cambiar la cadena ASCII de binario, por ejemplo. hexedit :

    • En el terminal ( Ctrl+ Alt+ T), ejecute: sudo apt-get install hexedit.
    • Siga las instrucciones presentadas en la terminal (escriba la contraseña si es necesario, confirme la instalación).
  2. Vaya al directorio con nodo webkit :
    • En mi caso: cd ~/Dokumenty/node-webkit-*.
  3. Abra nw binary usando el comando de editor hexadecimal precedido por sudo:
    • Ejecute: sudo hexedit nw.
  4. Buscar libudev.so.0como cadena ASCII:
    • Si usa hexedit : presioneTab .
    • Presione Ctrl+ S.
    • Tipo: libudev.so.0.
  5. Cambio 0en libudev.so.0cadena a 1, por lo que se convierte en: libudev.so.1:
    • Use las teclas de flecha para seleccionar 0en libudev.so.0cadena.
    • Presione 1en el teclado.
  6. Salga y guarde los cambios.
    • Presione Ctrl+ X.
    • Presione Ypara guardar los cambios.

Ya terminaste Esto también soluciona el problema con el binario Atraci cuando se siguen las mismas instrucciones, excepto la edición hexadecimal del archivo Atraci en lugar de nw.

Daniel Kmak
fuente
2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwy luego puede ejecutarlo, sin necesidad de instalar nada
Catalyst
4

La única respuesta aquí que funciona en Ubuntu 14.04 es la respuesta aceptada, y dado que muchos comentarios señalan que esto puede causar problemas con el sistema en el futuro (aunque no sé sobre eso yo mismo) se me ocurrió un compromiso. Este script le pedirá (en la terminal) su contraseña de root. Creará el enlace simbólico y ejecutará la aplicación (en mi caso, hora de hacer palomitas de maíz). Cuando salga de la aplicación, usará la sesión de sudo existente para eliminar el enlace 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
fuente
Me gusta esta idea, aunque me pregunto si hay una manera de usar la variable de entorno LD_LIBRARY en su lugar.
Flimm
@Flimm, déjame saber cómo te va.
TenLeftFingers
1
Terminé yendo con esta respuesta en su lugar.
Flimm
4

Acabo de encontrar una manera de hacer que esto funcione, aunque es bastante tonto.

Tengo Google Chrome instalado en mi sistema y Chrome tiene incrustado este objeto compartido. Entonces, solo tuve que hacer un enlace simbólico a la biblioteca en el directorio de instalación de Chrome.

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

Funciona bastante bien para mí.

nunesvictor
fuente
4

Esta fue la solución más simple que encontré

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

como señaló Phil Strong

Instalar en pc libudev.so.1

sudo apt-get install libudev1:i386

luego vincúlalo como libudev.so.0

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

Hice esto el 14.04, pero debería ser similar. simplemente elimine el paquete y vuelva a instalarlo. Las bibliotecas correctas están instaladas adecuadamente.

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

Estoy seguro de que las otras respuestas funcionan, pero tengo un truco básico para modificar los objetos del sistema de archivos que se administran mediante paquetes de administración de configuración.

MARK SMITH
fuente
1

Esto es lo que solía resolver el mismo problema en Ubuntu 15.04 de 32 bits.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
usuario491326
fuente
0

ACTUALIZACIÓN Hice un script bash para envolver el programa que desea ejecutar. Puede agregarlo a su carpeta bin local y simplemente iniciar el programa sin copiar y pegar o ejecutar 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 

ANTIGUA RESPUESTA En Ubuntu 14.04 recibí el mensaje de error del Editor de Dart cuando intentaba usar Vista previa en vivo (Chromium). El error se resolvió instalando libudev1 y creando un enlace simbólico .

    sudo apt-get install libudev1

También utilicé el script mencionado anteriormente por TenLeftFingers para ejecutar 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

Si el Dart Editor no se ejecuta, asegúrese de que JAVA esté instalado y que no sea un problema de permisos.

    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

y hacer que el IDE sea ejecutable:

    sudo chmod a+x ./DartEditor

Esto funcionó para mí.

Diaz
fuente
0

Recibí el mismo error en mi sistema de 32 bits después de actualizar de Xubuntu Precise a Trusty. Esto me lo arregló:

sudo dpkg-reconfigure google-chrome-stable

Lo encontré aquí . Sin absolutamente ningún parámetro, no estoy muy seguro de cómo esto lo solucionó, pero lo hizo. Lo que más me gustó es que no requería hacer nada que pudiera causarme problemas en el futuro y no requería que buscara ningún paquete.

desenredar
fuente
-1

Si alguien se topa con esta página mientras busca soluciones en la página web libudev.so.0 y Emotiv Epoc SDK Dev Edition en Ubuntu, espero que lo siguiente ayude:

// mi configuración es 64bit Ubuntu 13.04

Para un 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

lo que permite evitar el "error al cargar bibliotecas compartidas: libudev.so.0: clase ELF incorrecta: ELFCLASS32"

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

Para un 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

lo que permite evitar el "error al cargar bibliotecas compartidas: libudev.so.0: clase ELF incorrecta: ELFCLASS64" (tenga en cuenta que es una suposición, estoy en un sistema de 64 bits)

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

El EmotivControlPanel, EmoKey, EmoComposer, los ejemplos de Java y los pequeños ejemplos de Qt personalizados deberían poder ejecutarse después de hacer lo anterior (ya probé todos los pasos anteriores + otros encontrados en la web (desbordamiento de pila, ...), pero ninguno funcionaba para mí, así que eso fue lo que terminé haciendo después de algunos "intentos y errores"

Por último, pero no menos importante, si alguien aquí sabe cómo ejecutar programas compilados contra bibliotecas de 32 bits en un sistema de 64 bits ¿MIENTRAS ESPECIFICA UTILIZAR UNA BIBLIOTECA PROPORCIONADA POR TERCEROS DE 32 BITS?

más precisamente, para aquellos que saben de lo que estoy hablando, ¿cómo se supone que debo ejecutar los ejemplos de Qt "EmoCube" y "BlueAvatar" en mi sistema de 64 bits?

-> por lo que he intentado hasta ahora, lo máximo que pude obtener fue: "error al cargar bibliotecas compartidas: libedk.so.1: clase ELF incorrecta: ELFCLASS64"

Supongo que un enlace simbólico a esa lib en el directorio i386 no lo haría (aunque todavía no lo intenté), así que si alguien tiene una respuesta ... Estoy ansioso por leerlo.

Saludos a todos +

StephaneAG
fuente
-4

Ejecute estos comandos en una terminal:

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

Esto me ha ayudado

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