Paquete debian para puestos de alumno
Todos los años preparamos una maqueta con Ubuntu para instalar en los ordenadores de profesores y alumnos. Quizás un paquete debian facilite la creación de la maqueta y su mantenimiento. Además, esto me ha permitido probar los servicios de CI/CD de Github, por medio de sus Action.
Creación de un paquete deb
El comando dpkg-deb
utiliza el fichero DEBIAN/control
del directorio especificado para construir un paquete de debian. En este fichero se especifican, entre otras cosas, las dependiencias del paquete.
Package: iesavellaneda-tools Version: 2022.11.25.09.40-a33pcprofesor Section: base Priority: optional Architecture: all Homepage: https://github.com/alvarogonzalezsotillo/iesavellaneda-tools Depends: libnotify-bin Recommends: epoptes-client, tmux, tcpdump, git, htop, iftop, sshfs Maintainer: alvaro.gonzalezsotillo@educa.madrid.org Description: Cosas que les ponemos a los ordenadores con linux en el IES Alonso de Avellaneda
Primera utilidad: monitoreo de cuota
Me sorprendió bastante no encontrar ningún programa que avise del nivel de cuota utilizado por los usuarios, más allá del envío de un email interno (que nadie leerá). Al final, he incluido en el paquete un script para que se monitorice cada hora la cuota, y si se pasa del 80% avisar con un cuadro de diálogo. Para ello he utilizando algo de bash
, notify-send
y zenity
#!/bin/bash dialogo(){ local MSG="$*" if which kdialog then kdialog --title Aviso de cuota --msgbox "$MSG" return 0 fi if which zenity then zenity --info --title "Aviso de cuota" --text "$MSG" return 0 fi echo "No se encuentra ningún programa para mostrar un diálogo" return 1 } IFS="\n" quota | tail -n +3 | awk '{print $2 " " $4 " " $1}' | while read LINEA do LINEA=$(echo "$LINEA" | tr -d '*') read USADO MAXIMO DISCO < <(echo "$LINEA") echo "Usado-maximo-disco:" $USADO $MAXIMO $DISCO if [ $MAXIMO -gt 0 ] then PORCENTAJE=$((100*USADO/MAXIMO)) MSG="$PORCENTAJE del disco $DISCO ya utilizado ($USADO KB de un máximo de $MAXIMO $KB)" notify-send --category=Aviso "$MSG" > /dev/null 2> /dev/null echo "$MSG" if [ $PORCENTAJE -gt 80 ] then dialogo "$MSG" > /dev/null 2> /dev/null fi fi done
Despliegue continuo
He utilizado una Action de Github para crear el paquete DEB
cada vez que se crea una etiqueta en la rama master
name: Makefile CI on: push: branches: [ "master" ] tags: - '*' pull_request: branches: [ "master" ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Construir el paquete DEB run: ./build.sh - name: Subir el DEB a la acción de Github uses: actions/upload-artifact@v3 with: name: iesavellaneda-tools.deb path: iesavellaneda-tools.deb - name: Crear la release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: iesavellaneda-tools.deb