danirod

Actualizaciones - page 4

Flexiones
46 lagartijas
Duración
00:10:19 min
Calorías
42 kcal

Lo guay de un blog es que puedes contar cosas que no caben en un tweet. Páginas escritas últimamente:

⏱ Qué estoy haciendo ahora: danirod.es/now
💻 Con qué grabo: danirod.es/equipo
🎒 Qué llevo en la mochila: danirod.es/edc

Duración
00:51:30 min
Distancia
10.03 km
Calorías
723 kcal
Ritmo de vuelta
05:08 min/km

Control de versiones en dpkg

Es demasiado fácil perder el control sobre los paquetes instalados a través de un gestor de paquetes, sobre todo cuando esos paquetes tienen dependencias. Para evitar esto, la última vez que tuve que resetear mi workstation (equipada con Debian), hice un sistema para asegurar que tengo una manera de controlar qué paquetes entran y salen de mi ordenador.

En un directorio aislado del sistema creé un repositorio de Git. Después, fabriqué un script que cuando es llamado, vuelca la lista de paquetes instalados en un archivo dentro de ese repo y hace commit:

#!/bin/sh

cd /backups/dpkg
dpkg --get-selections > /backups/dpkg/selections.lst
git commit -am "Updating selection list after dpkg change"

Cada vez que se llame este script, si ha habido cambios en los paquetes instalados (no en sus versiones), se actualizará el archivo selections.lst y se hará un commit. Si no ha habido cambios, dirá nothing to commit, working tree clean, y ya.

Para que todo funcione como un reloj, configuré el script como un hook en apt. Creé un archivo en /etc/apt/apt.conf.d/06dpkghook con el siguiente contenido:

Dpkg::Post-Invoke { "if [ -x /sbin/dpkg-hook ]; then /sbin/dpkg-hook; fi" ; };

Un poco más complejo de lo que me gustaría, pero me venía bien controlar errores en este script. Aun así, como el código de retorno de git commit cuando no hay cambios es 1, y como mi script Bash no trata ese caso con un || return 0, a veces apt muestra mensajes de error un poco peculiares cuando hago un apt upgrade y no cambia la lista de paquetes instalados. Llevo 6 meses diciendo que tengo que editar el script, y aquí sigo.

No obstante, en general funciona que es una maravilla, y ya me ha permitido alguna vez detectar dependencias que no se eliminan bien al quitar el paquete que depende en ellas, o hacer rollbacks al instalar paquetes que causan problemas de estabilidad en mi workstation.

Captura de pantalla de tig
El repositorio con mis paquetes visualizado en tig.

Tengo pendiente portarlo a otros gestores de paquete, porque Homebrew en mi portátil personal es todavía más guarro con el tema dependencias y estoy harto de me cueste la vida hacer limpieza por no saber qué paquetes son dependencias y cuáles no.

Un selfie.

No obstante, tengo que hacer la compra, y sería igual de osado no aprovechar la situación para sacar el outfit primavera-verano. Testimonio gráfico porque la gente luego no me cree.

Un termómetro marca 25ºC.

Tener este tiempo un 22 de febrero me parece ligeramente osado.

Duración
56:43 min
Distancia
10.02 km
Calorías
690 kcal
Ritmo de vuelta
05:40 min/km
Duración
00:52:12 min
Distancia
10.01 km
Calorías
727 kcal
Ritmo de vuelta
05:13 min/km

“Horario flexible de 10 a 18 horas.” Flexiblemente inconciliable con la vida personal, querrás decir. Me envían cada cosa al LinkedIn…

Nuevo aspecto visual en danirod.es

Nuevo aspecto visual en danirod.es. Ha estado aproximadamente una semana en pruebas en mi ordenador siendo visitado por varios tipos de pantalla y navegadores para asegurar que todo se ve bien, pero ya habrá tiempo de pulir los posibles errores que aparezcan ahora que está en producción. Changelog:

  • La interfaz de usuario de la página web ahora está mucho menos cargada, sobre todo para las actualizaciones de estado y las fotografías. Fuera barra lateral, fuera menús de navegación complejos.

  • Traduce la interfaz de usuario al español ahora que he adoptado el español para nuevas publicaciones. Tengo pendiente de ver qué hago con el contenido viejo. Idealmente, me gustaría tenerlo en varios idiomas, pero no es tan fácil implementar negociación de contenido en NGINX –mi servidor–, como lo es en Apache.

  • Crea un nuevo feed llamado Diario para las actualizaciones de estado sueltas. La diferencia entre una nota y un artículo es que los artículos de blog tardan más en desarrollarse, pero las notas son más improvisadas. Las notas pueden ser del tamaño de un tweet, o pueden tener formato –como esta nota.