domingo, 5 de abril de 2015

Enlaces Simbólicos

A medida que inspeccionamos, es probable que veamos un listado de directorios con una entrada como esta:

lrwxrwxrwx 1 root root 11 2007-08-11 07:34
libc.so.6 -> libc-2.6.so

¿Ves como la primera letra del listado es “l” y la entrada parece tener dos nombres de archivo? Esto es un tipo especial de archivo llamado enlace simbólico (también conocido como enlace blando o sym-link.) En la mayoría de los sistemas tipo Unix es posible tener un archivo referenciado por múltiples nombres. Aunque el sentido de esto no parezca obvio, es realmente una característica muy útil.

Imagina este escenario: Un programa requiere el uso de  algún tipo de  recurso compartido contenido en un archivo llamado “foo”, pero “foo” tiene frecuentes cambios de versión. Sería bueno incluir el número de versión en el nombre del archivo para que el administrador u otras partes interesadas pudieran ver qué versión de “foo” está instalada. Esto presenta un problema. Si cambiamos el nombre del recurso compartido, tenemos que localizar cada programa que pudiera usarlo y cambiarlo para que busque el nuevo nombre del recurso cada vez que se instale una nueva versión del mismo. Esto no suena nada divertido.

Aquí es donde los enlaces simbólicos nos salvan el día.  Digamos que instalamos la versión 2.6 de “foo”, que tiene el nombre de archivo “foo-2.6” y entonces creamos un enlace simbólico llamado simplemente “foo” que apunta a “foo-2.6”. Esto significa que cuando un programa abre el archivo "foo", en realidad  está abriendo el archivo "foo-2.6". Ahora todo el mundo está contento. Los programas que utilizan “foo” pueden encontrarlo y nosotros aún podemos ver qué versión está instalada en realidad.  Cuando llegue la hora de actualizar a “foo-2.7”, sólo añadiremos el archivo a nuestro sistema, borraremos el enlace simbólico “foo” y crearemos uno nuevo que apunte a la nueva versión. No sólo soluciona el problema del cambio de versión,  también nos permite guardar ambas versiones en nuestra máquina. Imagina que “foo-2.7” tiene un bug (¡Condenados programadores!) y necesitamos recuperar la versión antigua. De nuevo, sólo borramos el enlace simbólico que apunta a la nueva versión y creamos un nuevo enlace simbólico apuntando a la versión antigua.

El directorio listado anteriormente (del directorio /lib de un sistema Fedora) muestra un enlace simbólico llamado “libc.so.6” que apunta a un archivo de biblioteca compartida llamado “libc-2.6.so”. Esto significa que los programas que busquen “libc.so.6” en realidad obtendrán el archivo “libc-2.6.so”. Aprenderemos cómo crear enlaces simbólicos en el próximo capítulo.

No hay comentarios:

Publicar un comentario