jueves, 31 de agosto de 2017

Ubuntu, solucionar los problemas reportados por Apport

He leído en varios sitios de Internet referido a este tema de los pop up en ubuntu sobre "Se ha detectado un problema en un programa del sistema" (en inglés "System program problem detected").


En general, estos sitios sugieren dos soluciones:

1) Colaborar con la comunidad y los desarrolladores enviando dicho reporte para ser tenido en cuenta y procurar una solución.

2) Desactivar directamente apport system. 

Quiero proponer una tercera solución que, desde mi punto de vista, le da sentido a esta herramienta tanto a los desarrolladores como a uno mismo.

Se trata de SOLUCIONAR el problema detectado.
Para ello, en principio y respetando las normas del software libre, enviaremos el reporte a ubuntu.
luego abrimos una terminal y listamos el contenido de /var/crash



 nos aparece un reporte por cada evento detectado.
en cada archivo se encuentra la información de la aplicación y el dump.

listamos cada archivo


 podemos ver que la aplicación con problemas es appstreamcli, un componente del escritorio de ubuntu.

A partir de esta información se verá con cada aplicación si corresponde reconfigurarla, des instalar y reinstalar, o el procedimiento que consideremos adecuado.

una vez finalizado, eliminamos los archivos de /var/crash


sábado, 26 de agosto de 2017

Ubuntu script para purgar kernel antiguos

En las distribuciones de Ubuntu es normal que a lo largo de la vigencia del soporte de la versión instalada, al ir actualizando el SO vayan quedando los kernel antiguos.




Podemos generar una lista que nos muestre los kernel instalados y que ya no serán utilizados



y aquellos que aun están instalados (install) los podemos purgar prestando atención de no eliminar el "linux-image-generic" ni el kernel actualmente en uso.

Para ello creamos un script que nos automatiza esta operación el cual pueden descargarlo desde aqui

El mismo verifica que sea el usuario administrador quien lo ejecute:









una vez que lo ejecutamos como root (sudo) comprueba que el kernel actual sea el último actualizado, si no coinciden nos ofrece reiniciar o cancelar la ejecución:


Una vez que las variables coinciden ya podemos purgar los kernel antiguos





Finalmente eliminamos los paquetes innecesarios:



Si no pueden descarga el script, se puede copiar a continuación:
 #!/bin/bash
# script para purgar los kernel antiguos conservando el actual y el generic.
# El script debe ser ejecutado como usuario administrador.

# identificamos el usuario actual
USER=$(whoami)
# verificación (si es root continua, sino muestra mensaje y sale)
if [ "$USER" != "root" ]; then
echo "Sr. $USER:"
echo "Ejecute este script como root!!"
exit 0
else
echo -e "Chequeando el sistema, espere...\n\n"
fi

# Definimos las variables.
R='\e[1;31m'
G='\e[1;32m'
N='\e[0m'
CURRENT=`uname -r`
LAST=`dpkg --get-selections | grep linux-image|awk '{print $1}'|sort -n|sed '$d'|tail -1|sed 's/^.\{18\}//g'`
LISTA=`dpkg --get-selections | grep linux-image|awk '{print $1}'|sed "/$CURRENT/d"|sed '/linux-image-generic/d'`
# verificamos si el kernel actual es el último instalado. Si no lo es,
# reiniciamos el sistema
if [ "$CURRENT" != "$LAST" ]; then
   echo -e "${R}Debe reiniciar el sistema para cargar el último kernel instalado...${N}\n"
   echo -e "${G}Presione ENTER para reiniciar o CTRL+c para cancelar${N}"
   read
   reboot
   else
       for r in $LISTA
       do
       apt -y purge $r
       done
fi


Nos aseguramos que todo quede limpio con:
sudo dpkg --purge `dpkg --get-selections |grep linux-image | grep deinstall | cut -f1`