[Tip] Notificación de paquetes en Archlinux

Estándar

Como no voy a poder postear en un par de semanas (aquello de los exámenes odiosos de la universidad, ya sabéis) os pongo un pequeño truco visto en el blog de Bash que nos ayuda a conocer cuántos paquetes tenemos desactualizados en Archlinux, ya que a veces cuesta acordarse por la falta de gestor gráfico de actualizaciones.

Se trata de dos scripts de cron que nos son más que una especie de tareas programadas del sistema que se ejecutan cada cierto tiempo, en el caso de cron son scripts de shell.

Cron tiene una serie de carpetas dedicadas a unos periodos de actualización estándar (aunque también se pueden definir reglas propias de actualización) que son las carpetas /etc/cron.{hourly,daily,weekly,monthly} del sistema. En nuestro caso usaremos la carpeta /etc/cron.hourly para actualizar nuestra base de datos de paquetes con pacman, pero de una manera un tanto especial:

#!/bin/bash

fakedb=/dev/shm/fakepacdb
realdb=/var/lib/pacman

[[ ! -d $fakedb ]] && { mkdir -p "$fakedb/sync" || exit 1; }
[[ ! -L $fakedb/local ]] && { ln -s "$realdb/local" "$fakedb" || exit 2; }

exec fakeroot pacman --dbpath "$fakedb" -Sy

Como véis no nos sirve con un simple pacman -Sy ya que esto puede provocar serios problemas de estabilidad a nuestro sistema, llegando incluso a la imposibilidad de actualización de paquetes. Así creamos una base de paquetes temporal y actualizamos esta base de datos y no la real de pacman.

El segundo script se usa para la notificación de los paquetes con un demonio de notificaciones, en el caso del script kdialog parte del escritorio KDE:

#!/bin/bash

fakedb=/dev/shm/fakepacdb

pkgs=$(pacman --dbpath "$fakedb" -Qqu | wc -l)
aurpkgs=$(cower -udf 2> /dev/null | wc -l)

unset msg1
unset msg2
unset packages

if [[ ${pkgs} -gt 0 ]]; then
   msg1="${pkgs} in pacman"
fi 

if [[ ${aurpkgs} -gt 0 ]]; then
   msg2=" ${aurpkgs} in AUR"
fi 

let packages=${pkgs}+${aurpkgs}

if [[ ${packages} -gt 0 ]]; then
   kdialog --title "Out-Of-Date packages" --passivepopup "There are ${packages} outofdated packages (${msg1}${msg2})" 10
fi

En las primeras lineas se usan unas variables para tomar los paquetes desactualizados, tanto de los repositorios oficiales con pacman como de AUR con el helper cower. Podéis usar el helper que más os guste, en mi caso lo modificaré para usar yaourt que es el que utilizo normalmente. Además si no usáis KDE tendréis que cambiar la línea que escribe el mensaje de notificación, como notify-osd, o el propio dzen2.

Esto es todo para la primera tip del blog, esperemos que haya muchas más :). Saludos!

Anuncios

Un comentario en “[Tip] Notificación de paquetes en Archlinux

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s