Búsqueda de sitios web

Cómo solucionarlo: Demasiados niveles de error de enlaces simbólicos


El error "Demasiados niveles de enlaces simbólicos" normalmente indica un problema en el que un enlace simbólico apunta a sí mismo directa o indirectamente, creando un bucle infinito. Este bucle evita la finalización de operaciones que involucran el enlace simbólico, como leer o enumerar contenidos. Comprender cómo utilizar correctamente el comando ln en Linux para crear enlaces simbólicos es crucial para evitar este error.

En este tutorial aprenderás:

  • ¿Qué causa el error "Demasiados niveles de enlaces simbólicos"?
  • Cómo crear correctamente enlaces simbólicos utilizando rutas absolutas y relativas
  • Cómo diagnosticar y arreglar bucles en enlaces simbólicos

Comprender y prevenir el error "Demasiados niveles de enlaces simbólicos"

¿Qué causa este error?

Este error ocurre cuando un enlace simbólico hace referencia a sí mismo (ya sea directamente o mediante otro enlace simbólico), lo que crea un bucle de referencia irresoluble. Esta situación es análoga a recibir una serie de instrucciones que regresan al punto de partida y no conducen a ninguna parte.

Ejemplo de creación problemática de enlaces simbólicos:

  1. Cree un directorio y cámbielo:

    $ mkdir /tmp/symlink_test
    $ cd /tmp/symlink_test
  2. Crea un archivo y un directorio:

    $ echo "This is a test file." > testfile
    $ mkdir testdir
  3. Cree un enlace simbólico en testdir apuntando a sí mismo (erróneo):

    $ ln -s testfile testdir/testfile
  4. Este comando intenta crear un enlace simbólico testfile en testdir que apunte a ../testdir/testfile. La referencia apunta al propio enlace simbólico, formando un bucle. fusible de datos="22189504506">

  5. Al intentar acceder al enlace simbólico se produce un error:

    $ cat testdir/testfile

  6. Ejemplo de creación problemática de enlaces simbólicos que provoca cómo solucionarlo: demasiados niveles de error de enlaces simbólicos
    Esto generará: cat: testdir/config: Demasiados niveles de enlaces simbólicos

Crear correctamente enlaces simbólicos:

Para evitar este error, debe asegurarse de que el destino del enlace simbólico apunte correctamente al destino previsto y no al enlace simbólico en sí ni a otro enlace simbólico que conduzca a él.

Usando caminos absolutos:

  1. Cree un enlace simbólico usando una ruta absoluta:

    $ ln -s /tmp/symlink_test/testfile /tmp/symlink_test/testdir/testfile2
  2. Esto crea un enlace simbólico testfile2 en testdir que apunta absolutamente a /tmp/symlink_test/testfile.

  3. Acceder a este enlace simbólico ahora debería mostrar correctamente el contenido de testfile2:

    $ cat /tmp/symlink_test/testdir/testfile2

    Esto generará correctamente: Este es un archivo de prueba.

  4. Crear correctamente enlaces simbólicos con ruta absoluta

Usando rutas relativas:

  1. Alternativamente, utilice sabiamente una ruta relativa:

    $ ln -s ../testfile /tmp/symlink_test/testdir/testfile3
  2. Esto apunta testfile3 en testdir a testfile usando una ruta relativa que navega hacia arriba dos niveles y luego a testfile.

  3. Comprobando el enlace simbólico:

    $ cat testdir/testfile3

    Esto generará correctamente: Este es un archivo de prueba.

  4. Crear correctamente enlaces simbólicos con ruta relativa

Creación de enlaces simbólicos simplificada: recordar la sintaxis de la ruta correcta – Notas del autor

Mi mejor estrategia para lidiar con enlaces simbólicos y recordar usarlos correctamente, ya sea usando rutas relativas o absolutas, es recordar esta sintaxis:

$ ln -s <path to original file from the target directory whether relative or absolute> <target file or directory> 

Consideremos este ejemplo desde el directorio /home/linuxconfig/:

$ mkdir test
$ echo "linuxconfig.org" > orig_file
$ ln -s ../orig_file test/
$ ln -s ../orig_file test/sym_file1
$ ln -s /home/linuxconfig/../../tmp/../home/linuxconfig/orig_file test/sym_file2
$ ln -s ../../../home/linuxconfig/orig_file test/sym_file3
$ tree test/

Como puede ver en el ejemplo anterior, incluso puede combinar rutas relativas y absolutas y, aún así, el enlace simbólico funciona siempre que apunte correctamente al archivo original. Este no es un concepto fácil de entender, pero piense en el primer argumento como una ruta al archivo original desde el directorio de destino. Si se encuentra en el directorio de destino, la ruta proporcionada como primer argumento del comando ln debe ser correcta desde allí. Para comprender mejor las rutas relativas y absolutas, considere consultar la sección Ruta relativa frente a absoluta como parte de nuestro tutorial de secuencias de comandos bash.

Conclusión

Gestionar correctamente los enlaces simbólicos es esencial para mantener una estructura funcional del sistema de archivos. Al comprender cómo configurar correctamente los objetivos de los enlaces simbólicos, ya sea a través de rutas absolutas o relativas, puede evitar errores relacionados con bucles de resolución infinitos, como "Demasiados niveles de enlaces simbólicos". Asegúrese siempre de que sus enlaces simbólicos apunten a los objetivos correctos y revise los enlaces existentes si encuentra este error.

Artículos relacionados: