¿Cómo instalar actualizaciones a través de la línea de comandos?

693

Cuando inicio sesión en mi servidor web a través de SSH, veo la información:

88 packages can be updated.
80 updates are security updates

Probé apt-get updatea continuación, apt-get upgradepero cada vez que me conecto Todavía veo el mensaje acerca de las actualizaciones. ¿Cómo los instalo?

Aguja
fuente
1
Intentó esto primero: sudo apt-get clean esto debería limpiar el caché.
user2635584

Respuestas:

871

Utilizar este:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

La documentación sobre cada aptopción se puede encontrar en las páginas de manual de apt . También están disponibles ejecutándolos man apten su terminal.

El uso de ambos upgradey full-upgradejuntos generalmente no es necesario, pero puede ayudar en algunos casos: consulte la documentación de Debian sobre las actualizaciones de Debian 9 .

SirCharlo
fuente
29
¿Debería reiniciar siempre con sudo rebootdespués?
hellboy
1
Necesitaba agregar -y para que funcione. Ubuntu 17.10
T04435
125

Ejecute todos los comandos escribiendo sudouna vez:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

o

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

o incluso más corto en un bucle for (Gracias @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'
Benny
fuente
3
Puedes combinar dist-upgradey autoremovepor apt-get dist-upgrade --auto-remove.
jarno
3
No hay necesidad de ejecutar ambos upgradey dist-upgrade.
jarno
3
@jarno dist-upgradepuede eliminar paquetes. Usar upgradeprimero puede evitar esto, como cuando las nuevas versiones de paquetes satisfacen las dependencias más fácilmente que las antiguas. No sé con qué frecuencia esto ayuda al actualizar paquetes dentro de una versión estable de Ubuntu, pero se recomienda en algunos otros contextos . Personalmente, rara vez lo uso dist-upgradeen Ubuntu, y cuando lo hago, nunca paso -y. Pero si se trata de correr dist-upgradey pasar -y, creo que es razonable realizar la upgradeacción primero.
Eliah Kagan
1
@jarno, aunque puede encadenar --autoremovejunto con el comando de actualización que elija, no es aconsejable, ya que puede terminar con un estado impuro cuando falla uno de los paquetes. Una mejor opción es usar autoremovesolo en una línea separada después de que se complete el proceso de actualización, si también desea limpiar los archivos de configuración antiguos, puede encadenar esto --purge.
Videonauth
@Videonauth oh, depende de cómo aptse implemente. Creo que debería implementarse para que no deje el sistema en estado impuro.
jarno
91

Este es un comportamiento normal.

El mensaje que ve al iniciar sesión se ha agregado al estado del servidor 'Mensaje del día', que solo se actualiza cada día calendario (o en el arranque / inicio del servidor). Echa un vistazo a los contenidos, usando

cat /etc/motd

Aún veo las mismas actualizaciones disponibles, después de ejecutar

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

Es de esperarse. Si luego vuelve a ejecutar este comando, solo se le solicitarán actualizaciones adicionales si se han lanzado actualizaciones aún más nuevas (más recientes).

david6
fuente
Me doy cuenta de que cualquier cambio de archivo en todo el sistema no se muestra hasta el próximo día calendario, ¿hay alguna forma de "actualizar" para comenzar a ver los cambios de inmediato?
aljuaid86
¿Te refieres a actualizaciones para el contenido del Mensaje del día o no obtienes lo que quieres después de correr sudo apt-get update && sudo apt-get upgrade?
david6
3
Esto ya no es cierto en 16.04. Después de "apt-get dist-upgrade" y un reinicio veo "0 paquetes se pueden actualizar".
Bogdan Calmac
1
La declaración anterior "... o al reiniciar el servidor ..." cubre eso.
david6
3
cat: / etc / motd: No existe tal archivo o directorio
xApple
11

Una vez que inicie sesión en su servidor, ejecute el siguiente comando.

sudo apt-get upgrade

Debería hacer el truco. Tal vez solo necesite reiniciar su servidor.

Mitch
fuente
3
Gracias por su respuesta, pero probé sudo apt-get upgrade. Reiniciar el servidor está fuera de discusión porque tengo sitios en él.
Marlin
3
Si instaló una actualización que afecta directamente al kernel o es una actualización del controlador o es una actualización de seguridad crítica, debe reiniciar el servidor.
Evandro Silva el
Tal vez deberías considerar un error 503 por un minuto. ¿Sabes qué tipo de actualización es esta?
NorTicUs
1
¿Cómo puede dar un 503 si el servidor está fuera de línea?
mcont
8

En mi caso, tenía una URL incorrecta o no accesible en /etc/apt/sources.list. Después de eliminar esta URL, pude actualizar todos los paquetes con éxito.

Comandos:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade
burtsevyg
fuente
7

Mi solución (muy tarde, me gustan las insignias de nigromante :-)):

  1. Instalar wajig (una vez):

    sudo apt-get install wajig 
    
  2. Cuando desee actualizar / actualizar completamente su sistema

    wajig dailyupgrade
    

    (solicitará una contraseña si es necesario y realizará todos los pasos de actualización, actualización, actualización automática y eliminación automática por usted).

Rmano
fuente
1

este script es útil para automatizar actualizaciones, incluida la eliminación de paquetes innecesarios y reiniciar solo si el sistema operativo lo desea

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

para ejecutar en su casilla local, simplemente deje esa primera línea haciendo el ssh

Aquí hay un alias que guardo en ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

luego en la terminal acabo de emitir doit

Scott Stensland
fuente
0

Si apt-get updatevuelve a ejecutar después de que apt-get upgradese haya concluido, esos mensajes en el inicio de sesión ssh deberían desaparecer.

Francisco luz
fuente