stow-1

No todos los programas están disponibles en los repositorios oficiales o de terceros, por lo que no puedes instalarlos utilizando los gestores de paquetes habituales. Algunas veces, tienes que instalar los programas compilando manualmente desde el código fuente. Como ya sabrás, cuando instalas programas desde el origen, los archivos de paquete se copiarán en múltiples ubicaciones, como /usr/local/bin, /usr/local/etc/, en el sistema de ficheros. Si el programa instalado desde el origen no tiene un desinstalador incorporado, será una tarea tediosa quitar los paquetes cuando ya no los necesites. Puede que necesites pasar un par de minutos (o varios) para encontrar esos archivos de paquete y eliminarlos manualmente. Esto es lo que he estado haciendo hasta que me encontré con una utilidad llamada “GNU Stow”. Afortunadamente, Stow tiene una forma fantástica de gestionar fácilmente los programas instalados desde el origen.

Para citar el sitio web oficial,

GNU Stow es un administrador de symlink que toma distintos paquetes de software y/o datos ubicados en directorios separados en el sistema de archivos, y los hace parecer que están instalados en el mismo lugar.

En pocas palabras, Stow te ayuda a mantener los archivos de paquetes organizados de forma que sean fácilmente gestionables. En este método, los archivos no se copiarán en varias ubicaciones. En su lugar, todos los archivos se guardan en una carpeta específica, normalmente bajo el propio nombre del programa, y Stow crea enlaces simbólicos a todos los archivos de los programas en los lugares apropiados. Por ejemplo, /usr/local/bin podría contener enlaces simbólicos a archivos dentro de /usr/local/stow/vim/bin, /usr/local/stow/python/bin, etc., y también recursivamente para cualquier otro subdirectorio como …/share, …/man, etc. En este tutorial, te mostraré cómo gestionar fácilmente los programas instalados desde el origen utilizando Stow con un ejemplo práctico. Sigue leyendo.

Instalando GNU Stow

GNU Stow está disponible en los repositorios por defecto de los sistemas operativos Linux más populares.

En Arch Linux y sus variantes, ejecuta el siguiente comando para instalar Stow.

$ sudo pacman -S stow

En DebianUbuntuLinux Mint:

$ sudo apt install stow

En Fedora:

$ sudo dnf install stow

En RHEL/CentOS:

$ sudo yum install epel-release
$ sudo yum install stow

Como ya he mencionado anteriormente, todos los archivos de programa de un paquete se guardarán en una carpeta raíz ubicada en /usr/local/stow/. Bajo este directorio raíz o padre, cada paquete se guardará en su propio subdirectorio privado. Por ejemplo, si instalamos el editor Vim desde el origen, todos los archivos de programa y directorios relacionados con Vim se guardarán en la carpeta /usr/local/stow/vim. Si instalas python desde el origen, todos los archivos relacionados con python se guardarán en /usr/local/stow/python y así sucesivamente.

Permítanme instalar un programa, por ejemplo Hello, desde el código fuente.

Primero descarga el tarball del programa `hello’.

$ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz

Extrae el archivo tarball descargado usando el comando:

$ tar -zxvf hello-2.10.tar.gz

El comando anterior creará un directorio llamado ‘hello-2.10’ en el directorio de trabajo actual y extraerá todo el contenido del mismo.

Cambia al directorio extraído:

$ cd hello-2.10/

Ejecuta el siguiente comando con la opción -prefix.

$ ./configure --prefix=/usr/local/stow/hello

El comando anterior guardará los archivos de construcción en la ubicación especificada, es decir, /usr/local/stow/hello en nuestro caso.

Finalmente, construye e instala el programa hello usando los siguientes comandos:

$ make
$ sudo make install

Eso es todo. El programa hello se ha instalado en /usr/local/stow/hello/. Puedes verificarlo con el comando ‘ls’ como se muestra a continuación.

$ ls /usr/local/stow/hello/
bin share

Finalmente, ve al directorio /usr/local/stow/ y ejecuta el siguiente comando para generar los enlaces simbólicos necesarios.

$ cd /usr/local/stow/
$ sudo stow hello

Lo que acaba de ocurrir es que todos los archivos y directorios contenidos en el paquete hello han sido enlazados simbólicamente al directorio /usr/local/. En otras palabras, /usr/local/stow/hello/bin se ha enlazado simbólicamente con /usr/local/binand /usr/local/stow/hello/share y /usr/local/stow/hello/share/man se ha enlazado simbólicamente con /usr/local/share/man y así sucesivamente.

Puedes verificarlos usando el comando ‘ls’:

$ ls /usr/local/bin/
hello

Comprobemos si el programa hello funciona o no con el comando:

$ hello
Hello, world!

Sí, está funcionando…

Del mismo modo, puedes instalar programas como se ha descrito anteriormente en su propio subdirectorio.

Aquí está el contenido del directorio raíz de Stow:

$ tree /usr/local/stow/

tree-command

¿Ves? El programa hello se instala en /usr/local/stow/hello/. Como es sabido, todos los paquetes se mantendrán bajo su propio directorio.

Aquí viene la parte principal. Quitémos el programa hello. Para ello, ve al directorio /usr/local/stow/:

$ cd /usr/local/stow/

..y ejecuta este comando:

$ sudo stow --delete hello
Remove-program-using-Stow

El programa hello acaba de ser eliminado. Puedes verificar si realmente se ha eliminado usando el comando:

$ hello
-bash: /usr/local/bin/hello: No such file or directory

hello-world

¿Ves? Hello, el programa ha sido eliminado.

Ten en cuenta que Stow sólo ha eliminado los enlaces simbólicos. Todos los archivos de programa y directorios relacionados con el programa hello siguen estando disponibles en la carpeta /usr/local/stow/hello. Por lo tanto, puedes instalar el programa hello de nuevo sin tener que descargar el archivo fuente real. Si ya no los deseas, simplemente elimina la carpeta.

$ sudo rm -fr /usr/local/stow/hello/

Para conocer más detalles sobre Stow, consulta las páginas de manual.

$ man stow

 

Fuente: Original | maslinux

¿Quién está en línea?

Hay 17792 invitados y ningún miembro en línea