Enlace simbólico: no existe tal archivo o directorio

18

Creé un enlace simbólico desde un archivo en "/ opt / bladir / bla" a "bla". Entonces "bla" ahora está en "/ usr / bin / bla". Pero si quiero llamar a "bla" en la terminal, aparece el error de no archivo o directorio. Miré hacia arriba en "/ usr / bin / bla" y el archivo se vincula correctamente en "/ opt / bladir / bla".

¿Cuál puede ser el error?

PD: aquí está mi "entrada" terminal: sudo ln -s /opt/bladir/bla bla

¡Gracias!

€: Problema resuelto. De acuerdo con la Lista de características, 12.04 debería tener soporte Multiarch ... 'debería'. Obtuve las ia32-libs de synaptic y ahora el programa funcionó bien. Como parece, mis enlaces simbólicos fueron correctos.

¡Gracias por todas las respuestas!

Sehe
fuente

Respuestas:

13

EDITAR: la solución a continuación no funciona. Es evidente que el enlace simbólico está roto, porque file -Lno se puede abrir el enlace simbólico / usr / bin / bla. En este caso, haga lo siguiente:

sudo ln -sf /opt/bladir/bla /usr/bin/bla

usando rutas completas (-f es forzar la sobrescritura del enlace simbólico anterior, si hay uno).

Hm. Creo que el programa "bla" puede estar buscando cosas que están instaladas en / opt / bladir y no puede encontrarlas. Por ejemplo, puede ser un contenedor de script de shell alrededor de un ejecutable Java, con una ruta relativa al directorio actual: pero su directorio actual es / usr / bin /, y no / opt / bladir /.

Si lo siguiente funciona

file -L /usr/bin/bla

... entonces definitivamente no es un problema con su enlace simbólico.

Compruebe si "bla" es un script de shell que puede modificar, eche un vistazo al interior; tal vez encuentre el problema. Posiblemente, agregar / opt / bladir a su RUTA sería una mejor solución.

enero
fuente
El comando dado dice: ERROR: no se puede abrir `/ usr / bin / bla '. No puedo mirar dentro de "bla", es un programa, no solo un script de shell.
Sehe
OK, rehaga el enlace simbólico con rutas completas, por favor.
Enero
Llegué a esa idea antes solo. Incluso con rm los enlaces antiguos y la creación de nuevos, el error sigue apareciendo. -sf tampoco funcionó.
Sehe
OKAY. Plese ejecuta ls -l /usr/bin/blay ls -l /opt/bladir/blae informa el resultado exacto de estos comandos.
Enero
@Enero ¿qué curso de acción recomendaría si file -L no funciona?
dbliss
0

A menudo se muestra este tipo de mensaje de error, si no tiene habilitado el bit de ejecución. Compruebe si el archivo principal y el enlace tienen permiso de ejecución.

Sospecho que /optpuede estar montado desde una partición separada y no está montado con la execopción de montaje

Anwar
fuente
El bit de ejecución se establece y / opt / no está en una partición separada: /
Sehe