¿Usar Software Updater es lo mismo que ejecutar apt-get update y apt-get upgrade?

Respuestas:

21

Respuesta corta

No, no son lo mismo. apt-get upgradeno maneja las dependencias cambiantes entre versiones, por lo que si un paquete ha cambiado dependencias, no se actualizará (se "retendrá"). Vea la respuesta larga para más detalles.

Usar el Actualizador de software y usar sudo apt-get update ; sudo apt-get dist-upgrade(tenga en cuenta que dist-) sería casi equivalente, excepto que obviamente es una GUI y la otra una aplicación de consola y también algunas diferencias informativas muy pequeñas.


Larga respuesta

De man apt-get,

  • apt-get upgrade:

    upgrade
               upgrade is used to install the newest versions of all packages
               currently installed on the system from the sources enumerated in
               /etc/apt/sources.list. Packages currently installed with new
               versions available are retrieved and upgraded; under no
               circumstances are currently installed packages removed, or packages
               not already installed retrieved and installed. New versions of
               currently installed packages that cannot be upgraded without
               changing the install status of another package will be left at
               their current version. An update must be performed first so that
               apt-get knows that new versions of packages are available.

    (énfasis por mí)

    Esto significa que una versión más nueva de un paquete que tenga una nueva dependencia no requerida en la versión anterior no se actualizará con este método (a menos que la nueva dependencia ya esté instalada). Estos se mostrarán como "Retenidos".

  • apt-get dist-upgrade:

    dist-upgrade
           dist-upgrade in addition to performing the function of upgrade,
           also intelligently handles changing dependencies with new versions
           of packages; apt-get has a "smart" conflict resolution system, and
           it will attempt to upgrade the most important packages at the
           expense of less important ones if necessary. The dist-upgrade
           command may therefore remove some packages. The
           /etc/apt/sources.list file contains a list of locations from which
           to retrieve desired package files. See also apt_preferences(5) for
           a mechanism for overriding the general settings for individual
           packages.

    (énfasis por mí)

    Esto significa que con este comando en lugar de upgrade, los paquetes con dependencias nuevas (o eliminadas) pueden actualizarse.

Ejemplo

Un buen ejemplo de la diferencia entre los dos es cuando se lanza un nuevo kernel de Linux. Esto se incluye en el linux-image-genericpaquete que siempre depende del último paquete del kernel de Linux. Debido a las dependencias de linux-image-genericcambio con cada actualización del núcleo, upgradeno lo actualizará.

kiri
fuente
1
¿Puede explicar por qué, cuando Software Updater ya no requiere contraseña de root para actualizar los paquetes existentes (es decir, cuando solo apt-get upgradese requiere), apt-getno puede hacer lo mismo? Parece que hay algo más fundamentalmente diferente entre los dos.
Jonathan Y.
4

Es casi lo mismo pero no exactamente. Por ejemplo, cuando se ofrecen actualizaciones del kernel, sudo apt-get update && sudo apt-get dist-upgradees necesario para obtener esas actualizaciones.

sudo apt-get update && sudo apt-get upgrade le dirá que algunos paquetes han sido retenidos.

El uso del Actualizador de software hace que todo sea perfecto y no verá nada retenido.


fuente
3

Con aptlas actualizaciones disponibles, las fases ( mencionadas por pabouk ) son la diferencia más destacada entre la actualización con el Actualizador de software y la línea de comandos.

En estos días, la aptutilidad, que no existía cuando se publicó esta pregunta, pero que probablemente se habría incluido en la pregunta si lo hubiera hecho, es una alternativa cada vez más popular apt-getpara actualizar paquetes. Son similares: el mismo paquete (también llamado apt) proporciona ambos , y todo lo que aptpuede hacer, las apt-utilidades tradicionales también, aunque en algunos casos tendrías que pasar opciones especiales de configuración. Pero aptestá más cerca que apt-getel Actualizador de software. Al igual que el Actualizador de software, es capaz de instalar nuevos paquetes cuando la nueva versión de un paquete existente los declara como dependencias.sudo apt upgrade

Por lo tanto, en la actualidad, los usuarios interesados ​​en esta distinción pueden simplemente ejecutar en sudo apt upgradelugar de sudo apt-get upgradesi desean que se instalen automáticamente nuevas dependencias. En consecuencia, la característica del Actualizador de software de retrasar ligeramente algunas actualizaciones, para determinar si son estables en la naturaleza y limitar el daño si no lo son, ahora es probablemente la principal diferencia entre usar el Actualizador de software y actualizar en la línea de comandos.

Este comportamiento del Actualizador de software se debe a la política de actualizaciones por fases . Esa política, implementada en el Actualizador de software pero no enapt-get (o apt), ha sido una gran diferencia entre los dos métodos desde que se introdujo la política , y pabouk comentó al respecto hace un par de años :

Hay otra diferencia: apt-getno utiliza PhasedUpdates, por lo que a veces Software Updater muestra menos actualizaciones que apt-get. Consulte ¿Por qué Software Updater dice No hay actualizaciones disponibles, pero apt-get upgrade Muestra actualizaciones disponibles? .

- pabouk 25 de febrero de 15 a 7:34

Esta puede haber sido siempre la diferencia más significativa, ya que uno siempre podría ejecutarse sudo apt-get dist-upgradeante la upgradefalta de voluntad de la acción para instalar nuevos paquetes o desinstalar los existentes. Sin embargo, cuando se actualiza desde la línea de comandos, la importancia relativa de las actualizaciones por fases aumenta con apt:

  • Al igual apt-get, el aptcomando descargará e instalará actualizaciones incluso si se retrasarían debido a la política de actualizaciones por fases si se hubiera utilizado el Actualizador de software.
  • Pero a diferencia de apt-get la aptdel comando de upgradeacción será instalar nuevos paquetes que no fueron previamente instalados, pero se requieren como dependencias para las nuevas versiones de los paquetes.

Además de (a) preferir una interfaz gráfica y (b) su integración de escritorio que proporciona notificaciones cuando hay actualizaciones disponibles, la razón principal por la que uno podría usar el Actualizador de software es que es la forma más fácil de participar en actualizaciones por fases.

Eliah Kagan
fuente