Error 'No existe tal archivo o directorio' en bash, pero ¿existe el archivo?


29

En Ubuntu, aparece el error 'No existe tal archivo o directorio' cuando intento ejecutar un comando.

Verifiqué con ls -la, el archivo adbestá allí y tiene la bandera 'x' Entonces, ¿por qué recibo un 'No existe tal archivo o directorio'?

~/Programs/android-sdk-linux_x86/platform-tools$ ./adb
 bash: ./adb: No such file or directory
~/Programs/android-sdk-linux_x86/platform-tools$ ls -la
 total 34120
 drwxrwxr-x 3 silverstri silverstri     4096 2011-10-08 18:50 .
 drwxrwxr-x 8 silverstri silverstri     4096 2011-10-08 18:51 ..
 -rwxrwxr-x 1 silverstri silverstri  3764858 2011-10-08 18:50 aapt
 -rwxrwxr-x 1 silverstri silverstri   366661 2011-10-08 18:50 adb
 -rwxrwxr-x 1 silverstri silverstri   906346 2011-10-08 18:50 aidl
 -rwxrwxr-x 1 silverstri silverstri   328445 2011-10-08 18:50 dexdump
 -rwxrwxr-x 1 silverstri silverstri     2603 2011-10-08 18:50 dx
 drwxrwxr-x 2 silverstri silverstri     4096 2011-10-08 18:50 lib
 -rwxrwxr-x 1 silverstri silverstri 14269620 2011-10-08 18:50 llvm-rs-cc
 -rwxrwxr-x 1 silverstri silverstri 14929076 2011-10-08 18:50 llvm-rs-cc-2
 -rw-rw-r-- 1 silverstri silverstri      241 2011-10-08 18:50 llvm-rs-cc.txt
 -rw-rw-r-- 1 silverstri silverstri   332494 2011-10-08 18:50 NOTICE.txt
 -rw-rw-r-- 1 silverstri silverstri      291 2011-10-08 18:50 source.properties

¿Qué se obtiene si ejecutafile adb
jdigital

me sale este '$ file adb adb: ELF ejecutable LSB de 32 bits, Intel 80386, versión 1 (SYSV), vinculado dinámicamente (usa libs compartidas), para GNU / Linux 2.6.8, no eliminado'
michael

Respuestas:


16

Es un archivo ejecutable que pierde las bibliotecas requeridas. Use lddpara ver qué necesita, luego proporcione estos archivos.


11
me sale este '$ ldd ./adb no es un ejecutable dinámico'
michael

55

Android SDK requiere bibliotecas de 32 bits. Probablemente tenga 64 bits y necesite las bibliotecas de 32 bits. Aquí están las instrucciones de solución de problemas de developer.android.com

Para Ubuntu 13.10 (Saucy Salamandra) y por encima, instale el libncurses5:i386, libstdc++6:i386y zlib1g:i386paquetes usando apt-get:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

Para versiones anteriores de Ubuntu, instale el ia32-libspaquete usando apt-get:

apt-get install ia32-libs

2
maldita sea que instala muchas cosas. Pero funciona.
Travis Reeder

1
Al igual que michael, "archivo" me dijo que era un binario ELF de 32 bits y ldd me dijo que no era un ejecutable dinámico. La instalación de estas bibliotecas de 32 bits solucionó el problema.
Epónimo

2
¡El mensaje de error más engañoso NUNCA! o_O
MathematicalOrchid

re: {Aquí están las instrucciones de solución de problemas de developer.android.com} No veo ninguna dirección de solución de problemas allí ...
ruslo

4
sudo apt-get install --reinstall libc6-i386

También es necesario para mí.


3
¿Quiso decir que ayudó? ¿Alguna idea de por qué? ¿De dónde sacaste esto?
Tamara Wijsman

3

También estaba viendo lo mismo después de cambiar mi máquina de ubuntu de 32 bits a 64 bits. Bash informaría 'No existe tal archivo o directorio' de archivos que claramente existían con el atributo ejecutar

sudo apt-get install --reinstalar libc6-i386

Solucionado el problema. Estas son la "Biblioteca GNU C: bibliotecas compartidas de 32 bits para AMD64"

Parece que esto es un error en bash. Tenga en cuenta que también cambié el shell predeterminado de guión a bash usando

sudo dpkg-reconfigure dash

antes de intentar ejecutar el ejecutable de 32 bits. Así que no estoy seguro de si el problema hubiera sucedido con el shell de tablero predeterminado


2

En una nueva instalación de Xubuntu 13.10 x64 pude adbejecutar con:

sudo apt-get install --reinstall libc6-i386
sudo apt-get install libstdc++6:i386

Y también zlib1g:i386para hacer el aapttrabajo.

y si aún te falta algo usa:

lld adb

Esto funcionó muy bien para mí, pero tuve que llamar sudo dpkg --add-architecture i386; sudo apt-get updatepara que libstdc ++ 6: i386 estuviera disponible
nicopico

Creo que quisiste decir ldd adb
Prashanth Chandra

1

Para adb, asegúrese de tener el SDK desempaquetado y de haber ejecutado el SDK Manager para completar el SDK. Además, asegúrese de tener instalado lo siguiente: A.) JDK 6 o mejor B.) lib32stdc ++ 6 C.) lib32ncurses5

hoffmanc fue lo más cercano a hacerlo bien, realmente no entiendo por qué la respuesta de Daniel Beck está marcada como correcta cuando ni siquiera está cerca y no tiene nada que ver con el problema.

Por cierto, si intentas ejecutar un comando verdaderamente inexistente (es decir:

# fakecommand

obtendrá: fakecommand: comando no encontrado, mientras que en su situación el resultado que está viendo en realidad proviene de adb, aunque no está muy claro que ese sea el caso.


1

Ubunto parece tener algunos problemas con la compatibilidad con LSB, así que intente esto si está en Ubunto

apt-get install lsb

Tenga en cuenta que ldd mostrará que todas las bibliotecas están allí, pero no lo están.

usmp-vm-lamp01$ ldd lmgrd
 linux-vdso.so.1 =>  (0x00007fffb33fe000)
 libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f10b0a48000)
 libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10b074c000)
 libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f10b0535000)
 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f10b0175000)
 libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f10aff71000)
 /lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f10b0c67000)
usmp-vm-lamp01$ locate libpthread.so.0
/lib/x86_64-linux-gnu/libpthread.so.0
usmp-vm-lamp01$ locate libm.so.6
/lib/x86_64-linux-gnu/libm.so.6
usmp-vm-lamp01$ locate /lib64/ld-lsb-x86-64.so.3
usmp-vm-lamp01$

Estaba teniendo este problema con un paquete de reconocimiento de voz llamado Julius. Esto es lo que me arregló.
Fireandlight27
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.