

Copie y pegue el siguiente código en un fichero de texto y guárdelo con el nombre de archupdate (en minúsculas).
#!/bin/bash
USUARIO=`whoami`
dependencias=(xdotool zenity screenfetch)
for item in ${dependencias[*]}
do
if ! (pacman -Q $item >/dev/null); then lista=$lista" "$item; fi
done
if [ -n "$lista" ]; then echo $USUARIO | sudo -S pacman -S $lista --noconfirm; fi
# Información del sistema
screenfetch
echo ""
# Comprobamos conexión cada 10 segundos.
x=0
until ping -c1 google.com &>/dev/null
do
x=$(( $x + 1 ))
if [ $x = 5 ]; then exit # Al 5º intento salimos
else
echo "No hay conexión. Reintentando..."
sleep 5
fi
done
# Corregimos el fallo de /var/lib/pacman/db.lck
if [ -f "/var/lib/pacman/db.lck" ]; then echo $USUARIO | sudo -S rm /var/lib/pacman/db.lck; fi
# Sincronizamos las bases de datos de los paquetes
echo $USUARIO | sudo -S pacman -Sy
# Si no hay actualizaciones...
NUMERO=$(pacman -Qqu | wc -l)
if [ $NUMERO = "0" ]; then
#sudo pacman -Rs $(pacman -Qtdq) --noconfirm # Eliminar paquetes huerfanos
RED="\033[0;31m"
ENDCOLOR="\033[0m"
echo -e $RED"Sistema actualizado."$ENDCOLOR
sleep 5
exit 0
else
# Ocultar terminal
xdotool windowunmap $(xdotool getactivewindow)
clear
# Mostramos las actualizaciones pendientes.
UPDATELIST=`zenity --list --checklist \
--height=280 \
--width=300 \
--title="Hay "$NUMERO" actualizaciones" \
--column="Sel." \
--column="Paquete" \
--column="Version" \
$(pacman -Qu | awk -F ' ' '{print selected " " $1 " " $2}' selected="TRUE")`;
clear
# Actualizamos los paquetes seleccionados
if [ -n "$UPDATELIST" ]; then
echo $USUARIO | sudo -S \
(
IFS="|"
for word in $UPDATELIST; do
echo "#Actualizando: $word" ;
sudo pacman -S $word --noconfirm
BARRA=$((BARRA+(100/NUMERO)))
echo $BARRA ;
done;
) | \
zenity --progress \
--width=400 \
--height=80 \
--no-cancel \
--title="Instalando actualizaciones" \
--percentage=0 \
--auto-close
fi
fi
Damos permisos de ejecución con:chmod +x /ruta del archivo/archupdate
0 comentarios:
Publicar un comentario