¿Cómo puedo instalar solo actualizaciones de seguridad desde la línea de comando?

286

sudo apt-get upgrade instala todas las actualizaciones, no solo las actualizaciones de seguridad. Sé que puedo usar Update Manager para seleccionar solo actualizaciones de seguridad importantes, pero ¿hay alguna manera de hacerlo desde la línea de comandos?

    
pregunta mac9416 29.07.2010 - 00:50

7 respuestas

266

El paquete desatendida-actualizaciones proporciona la funcionalidad para instalar actualizaciones de seguridad automáticamente.

Puedes usar esto, pero en lugar de configurar la parte automática, puedes llamarla manualmente. Para este caso, lo siguiente debe hacerlo en silencio:

sudo unattended-upgrade

o más versión detallada, para controlar cómo funciona

sudo unattended-upgrade -d

NOTA: Cuando llamas a desatendido-actualización dejas la "s" fuera del final.

Esto supone que el paquete está instalado por defecto, lo que probablemente sea. Si no, solo hazlo:

sudo apt-get install unattended-upgrades

Ver también /usr/share/doc/unattended-upgrades/README.md .

    
respondido por el blueyed 29.07.2010 - 19:28
104

Algunos consejos sobre cómo administrar las actualizaciones

Esto se aplica tanto a Debian como a Ubuntu, pero siguen instrucciones más específicas para Ubuntu.

  • Mostrar solo las actualizaciones de seguridad:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    o

    sudo unattended-upgrade --dry-run -d
    

    o

    /usr/lib/update-notifier/apt-check -p
    
  • Mostrar todos los paquetes actualizables

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Instalar actualizaciones de seguridad solo

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print '} | 
        xargs apt-get install
    

Notas:

  • A veces, Ubuntu muestra actualizaciones de seguridad como si provinieran del repositorio $ release-updates. Esto es así, según me dijeron, porque los desarrolladores de Ubuntu introducen actualizaciones de seguridad en el repositorio $ release-updates y aceleran su disponibilidad.

    Si ese es el caso, puede hacer lo siguiente para mostrar solo las actualizaciones de seguridad:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    y

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print '}
    
  • Verifique qué servicios deben reiniciarse después de las actualizaciones del paquete. Averigua qué paquetes vas a actualizar de antemano y programa tus reinicios / reinicios. El problema aquí es que, a menos que reinicie un servicio, aún puede estar usando una versión anterior de una biblioteca (razón más común) que se haya cargado en la memoria antes de instalar un nuevo paquete que corrige una vulnerabilidad de seguridad o lo que sea.

    checkrestart -v
    

    Sin embargo, tenga en cuenta que checkrestart puede enumerar procesos que no necesariamente deben reiniciarse. Por ejemplo, el servicio PostgreSQL puede mantener en su memoria la referencia a un archivo xlog ya eliminado, que no es una razón válida para reiniciar el servicio.

    Por lo tanto, otra manera más confiable de comprobar esto utilizando utilidades estándar es el siguiente pequeño script bash que robé desvergonzadamente de enlace

    Comprueba si los procesos que se ejecutan en un sistema aún utilizan bibliotecas eliminadas por mantener copias de esas en la memoria activa.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
respondido por el ILIV 16.11.2012 - 12:35
46

reemplace /etc/apt/preferences con lo siguiente:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

ahora, un simple apt-get upgrade solo actualizará todas las actualizaciones de seguridad.

Por qué (y cómo) funciona esto: el archivo de preferencias fijará todos los paquetes de la distribución de Ubuntu a la prioridad 50, lo que los hará menos deseables que los paquetes ya instalados. Los archivos que se originan en el repositorio de seguridad reciben la prioridad predeterminada (500) por lo que se consideran para la instalación. Esto significa que solo los paquetes que se consideran más deseables que los instalados actualmente son actualizaciones de seguridad. Obtenga más información acerca de la fijación en la página de manual de apt_preferences .

Puede promocionar temporalmente una determinada distribución de actualizaciones con la opción --target-release que funciona con apt-get y aptitude (como mínimo), lo que le permitirá anotar ciertas versiones para que sean aptas para la actualización.

Si desea usar esto solo para scripts y no hacerlo predeterminado para el sistema, puede colocar las reglas en alguna otra ubicación y usar esto en su lugar:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Esto hará que apt busque el archivo de preferencias desde una ubicación no predeterminada.

El archivo de preferencias que se proporciona como ejemplo no se aplica a repositorios de terceros, si desea fijarlos también puede usar apt-cache policy para determinar fácilmente las claves necesarias para la fijación.

    
respondido por el Ressu 29.07.2010 - 06:12
9

Lo siguiente se confirma en Ubuntu 14.04 LTS.

Usa el paquete unattended-upgrade .

Mira el archivo /etc/apt/apt.conf.d/50unattended-upgrades . Debe haber una sección en la parte superior que sea:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Observe cómo se ha configurado para permitir únicamente actualizaciones desatendidas para paquetes de seguridad, de forma predeterminada.

Modifique el archivo /etc/apt/apt.conf.d/10periodic similar a:

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

Esto ejecutará actualizaciones automáticas de seguridad sin supervisión, una vez por día.

Ahora, para ejecutar manualmente: sudo unattended-upgrade .

Para probar como una ejecución en seco, sin hacer nada: sudo unattended-upgrade --dry-run .

Fuente: enlace

    
respondido por el vcardillo 03.10.2016 - 19:18
5

Aunque es bastante feo, puedes inhabilitar todos los repositorios aparte del repositorio de seguridad y luego hacer:

sudo apt-get update && sudo apt-get upgrade

No lo he probado, pero en teoría solo encontraría actualizaciones en el repositorio de seguridad y las aplicaría ...

    
respondido por el Stephen RC 29.07.2010 - 02:00
3
  • %código%: solo lea las entradas en el repositorio, de acuerdo con la lista existente. Necesario para verificar qué hay de nuevo.
  • apt-get update : todas las actualizaciones para paquetes instalados sin módulos kernel. Sin actualización de lanzamiento
  • apt-get upgrade : todas las actualizaciones para paquetes instalados también con módulos kernel. Sin actualización de lanzamiento
  • apt-get dist-upgrade con el parámetro apt-get : solo prueba, no se realizaron cambios.
respondido por el fuser 02.08.2013 - 11:49
0

No puedo encontrar una opción en apt-get o aptitude, sin embargo, alguien tenía misma pregunta en SuperUser. La única respuesta es:

  

Verifique y ajuste /etc/apt/apt.conf.d/50untended-upgrade. ¿Reemplazó 'karmic' con el nombre en clave de su Ubuntu?

Sin respuesta si eso funcionó, sin embargo.

    
respondido por el Ross 29.07.2010 - 01:04

Lea otras preguntas en las etiquetas