Gestión de paquetes y actualizaciones

Descripción del uso de los comandos apt, apt-get, dpkg y aptitude

Obtener información

Lists all packages installed
sudo dpkg -l

Buscar paquetes o archivos en paquetes
http://packages.ubuntu.com/

Ver log de instalaciones
cat /var/log/dpkg.log | grep "status installed"

Ver qué paquetes se han instalado manualmente
sudo apt-mark showmanual

Ver dependencias inversas
sudo apt-rdepends --state-follow=Installed --follow=Depends,PreDepends,Recommends --show=Depends,PreDepends,Recommends --state-show=Installed -r [nombre_paquete]

Purgar paquetes desinstalados
dpkg --purge $(dpkg --get-selections | grep deinstall | cut -f1)

Upgrade or install the latest versions (sin resolver dependencias)
sudo apt-get upgrade

Upgrade or install the latest versions (resolviendo dependencias)
sudo apt-get dist-upgrade

Actualizaciones automáticas en Ubuntu

Se realizan mediante el paquete unattended-upgrades

Links de interés

https://libre-software.net/ubuntu-automatic-updates/
https://help.ubuntu.com/lts/serverguide/automatic-updates.html

Instalación

sudo apt install unattended-upgrades

Configuración

Edición del archivo de actualización:
vim /etc/apt/apt.conf.d/50unattended-upgrades

Líneas propias en lechuga:
Unattended-Upgrade::Mail "adminlechuga@lechuga.eu";
Unattended-Upgrade::Sender "root en brocoli.lechuga.eu";

Activación de la ejecución periódica

vim /etc/apt/apt.conf.d/20auto-upgrades:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::AutocleanInterval "7";

Comprobación del funcionamiento

Hacer un dry-run
sudo unattended-upgrades --dry-run --debug

Ver el log de actualizaciones
cat /var/log/unattended-upgrades/unattended-upgrades.log

Ver el estado de funcionamiento actual
sudo systemctl status unattended-upgrades

!

Sólo instalar actualziaciones de seguridad (ubuntu)
apt-get install -y --only-upgrade $( apt-get --just-print upgrade | awk 'tolower($4) ~ /.*security.*/ || tolower($5) ~ /.*security.*/ {print $2}' | sort | uniq )