Como programador, gran parte de nuestro trabajo nos la pasamos desarrollando código (y en reuniones, por supuesto), tanto es así, que solemos dedicarle muchísimo tiempo a configurar nuestro set de herramientas que usamos diariamente para nuestro trabajo. Ya no solo hablamos de la evolución de la configuración, sino de cómo configurar tu nuevo portátil, tener varios ordenadores, o simplemente compartir cierta configuración de alguna herramienta con algún compañero.
La gran mayoría de aplicaciones (y más en sistemas unix) son configuradas a través de los conocidos “dotfiles”(guardados en la $HOME del usuario), que no son más que ficheros o carpetas que empiezan por un . para configurar las aplicaciones (ej: .bashrc, .git/). El propósito de que empiece por un punto es que por defecto los sistemas operativos los trata como archivos ocultos y no los muestra a no ser que se lo indiques.
Antes de comenzar, vamos a explicar los 3 términos que necesitamos saber para trabajar con STOW, que són: Package, Stow Directory y Target Directory.
- Package: Es una colección de ficheros que deben ser “instalados” juntos en el mismo target directory.
- Stow directory: Es el repositorio donde estarán todos nuestros packages.
- Target directory: Es el directorio donde queremos instalar esas configuraciones que están en nuestros packages.
La funcionalidad que buscamos Stow va a ser que nos genere un symbolik link de los ficheros que tenemos dentro de nuestros packages en el target directory. En el ejemplo, si ejecutaramos stow git
, nos crearía un link de ~/.gitconfig to ~/.dotfiles/git/.gitconfig.
En este caso, la convención que ha decidido la comunidad es colocarlo todo dentro de un directorio llamado .dotfiles dentro de nuestra home, pero esto es algo que se aprecia leyendo foros y artículos sobre el manejo de dotfiles. Tiene cierta lógica ya que en stow, por defecto, el target directory es el parent del stow directory. Eso significa que si colocamos ~/.dotfiles es el stow directory, el target directory será ~/, que es donde vamos a querer colocar nuestros dotfiles.
El fin de este artículo será sacar nuestra configuración de git (.gitconfig) y de zsh (.zshrc) de nuestro home sin ningún tipo de control y moverlo dentro de nuestra carpeta .dotfiles, donde podremos subirla a un repositorio git (stow con git tiene muy buena sinergia), sincronizarla con dropbox, o lo que más nos guste.
Para comenzar, vamos a crearnos nuestro stow directory, que puede estar donde más nos guste, pero en el artículo usaremos ~/.dotfiles por los motivos que se han explicado previamente. Ahora vamos a empezar creando la configuración de git, para ello, crearemos nuestro package git
dentro de nuestro stow directory, y dentro del mismo, los ficheros de configuración relacionados con git que queremos crear un simlink en el target directory.
En este caso será únicamente nuestro .gitconfig:
$ cd ~ $ mkdir -p .dotfiles/git
$ touch .dotfiles/git/.gitconfig
Ahora lo que buscamos es copiar el contenido del .gitconfig con la configuración actual que se encuentra en la $HOME del usuario (~/.gitconfig), y pegarla en el nuevo fichero generado dentro de nuestro stow directory. Para ello, lo que vamos a hacer es lanzar el comando stow con los parámetros –adopt, -n y -v, y como argumento le diremos que queremos hacer stow en la carpeta git: `stow –adopt -nv git`.
$ stow –adopt -nv git
Vamos a explicar lo que hace cada opción por separado:
- -n: Con esta opción le estamos diciendo a stow que no ejecute ninguna acción, simplemente nos diga que pretende hacer si le quitamos la opción.
- -v: Esta opción es la que nos permitirá leer que pretende hacer stow (Al final es incrementar el nivel de verbosidad)
- -adopt: Esta opción es la única que modifica el stow directory, todas las demás se centran en el target directory. Con esta opción lo que hacemos es que previo a stowear, moverá el fichero actual en el target directory al stow directory, y luego creará el link. Muy útil cuando estamos empezando a crear nuestros .dotfiles.
Una vez vemos las acciones que va a hacer, bastaría con eliminar la opción -n
del comando para ejecutarlo:
$ stow -adopt -v git
Con esto ya vemos como guardarnos la configuración actual dentro de nuestro .dotfiles y como stow gestiona todo el tema de links de una manera fácil.
Para terminar el artículo, me gustaría comentar de manera resumida qué otras cosas he necesitado hacer con stow:
- Para terminar el artículo, me gustaría comentar de manera resumida qué otras cosas he necesitado hacer con stow:
- Que pasa si eliminamos un fichero de nuestro stow directory (~/.dotfiles) que ya estaba stoweado? El fichero no existe pero el link sigue ahí, para ello tenemos stow -R, que es básicamente un shortcut a
stow -D && stow -S
.
- Si por algún motivo no quieres tener tu repositorio dotfiles en la home (pe: ~/projects/dotfiles), y dado que el target directory es el parent (en este caso será ~/projects), debemos hacer explícito donde queremos crear los links de configuración, para ello deberemos usar
stow -t=~
.
Author
-
Software developer with over 16 years experience working as Fullstack Developer & Backend Developer.
Ver todas las entradas
More to Explore