¿Por qué existe la separación de actualización y actualización?

12

Entiendo que en aptel comando update, se actualiza la lista de paquetes disponibles, pero no actualiza el software que ya estaba instalado desde estos paquetes.

También entiendo que upgradeactualiza cualquier software que ya instalé desde un paquete que actualicé updatecomo se describe anteriormente.

¿Cuál fue la razón por la que los desarrolladores de Ubuntu / Debian hicieron esta división updatey, en su upgradelugar, trabajaron con un comando para realizar ambas tareas?

Esta es más una pregunta sobre la filosofía arquitectónica de los desarrolladores de Ubuntu.

usuario9303970
fuente
Si voy a instalar muchas aplicaciones (y las estoy agrupando, así que un comando para un grupo, el siguiente comando para el siguiente, etc.), ¿por qué querría descargar los repositorios para cada grupo? pasos de instalación posteriores puedo ahorrar ancho de banda. Si quisiera que un comando hiciera ambas cosas, podría escribirlo de aliastodos modos. La forma de Unix es que un comando hace una sola cosa de todos modos, por lo que la separación encaja mejor con la forma de Unix si los argumentos 'teológicos / filosóficos' son lo tuyo también.
guiverc
Del mismo modo, si voy apt dist-upgradey presiono "n" para cancelar, entonces cambio de opinión, ahorraré ancho de banda porque no se 'actualizará' para volver a hacer mi apt dist-upgradecomando ... Incluso si 'dist-upgrade' hizo la actualización automáticamente, hay razones para 'actualizar' que no incluyen 'instalar', 'actualizar' o 'dist-actualizar', por lo que el comando 'actualizar' existiría de todos modos ..
guiverc
He argumentado que la separación no debería existir desde la perspectiva del usuario, y que la acción de apt updatedebería ejecutarse automáticamente cuando sea necesario.
Robie Basak

Respuestas:

7

Una actualización no es la única vez que puede necesitar apt-get update, y no quiero actualizar cada vez que simplemente quiero actualizar las listas de paquetes.

Un apt-get upgradetrabajo bien puede depender de apt-get updateque se ejecute no hace mucho tiempo, pero entonces eso es cierto de apt-get removey apt-get install, así! ¿Deberían implicar todo esto apt-get update? ¡Por supuesto no! Como una simple cuestión de la eficiencia de los recursos y la limpieza del diseño, si una operación es común a muchas otras operaciones, debe ser eliminada.

Por el contrario, dado que apt-get removey apt-get installpuede depender también de apt-get updateser puesto en funcionamiento recientemente con éxito hasta el final, ¿tiene sentido que apt-get upgradepara cada ejecución de apt-get update? No, una vez más, ya que lo que pretendo hacer puede entrar en conflicto con lo apt-get upgradeque hará.

muru
fuente
6

Cada vez que cambie las fuentes de software, debe ejecutar el comando sudo apt updatepara actualizar la lista de software disponible. Luego, puede buscar los paquetes disponibles en la nueva fuente de software que acaba de agregar y / o instalarlos.

El comando sudo apt upgradees el terminal equivalente a actualizar la lista de paquetes instalados utilizando la aplicación Software Updater. Esto es diferente del flujo de trabajo normal de agregar una nueva fuente de software, actualizar la lista de software disponible para incluir paquetes de la nueva fuente de software e instalar nuevos paquetes de la nueva fuente de software que acaba de agregar, por lo que es más conveniente y menos confuso eso sudo apt updatey sudo apt upgradeson comandos separados.

También es menos confuso separarse sudo apt updatey sudo apt upgradeporque cuando ejecuta con sudo apt updateéxito ha confirmado que tiene conectividad a Internet. Si hay un problema cuando se ejecuta sudo apt upgradedespués, es más probable que sea un problema de administración de paquetes que un problema con la conectividad a Internet, y los resultados sudo apt upgradeproporcionarán pistas para diagnosticar y resolver el problema.

karel
fuente
5

La historia de la diferencia entre updatey upgradees realmente genial.

Hace mucho, mucho tiempo, digamos alrededor de 2000, años antes de que Ubuntu existiera, el ancho de banda y el espacio en disco eran mucho más limitados ... aunque expansivos en comparación con mediados de los noventa. La banda ancha apenas comenzaba y el acceso telefónico seguía siendo una forma vital de conectarse. Los discos grandes solo tenían unos pocos cientos de MB. Apt era brillante y nuevo, radical y revolucionario, construido sobre dpkg.

La base de datos de apt, cuando lo piensas, es una maravilla: es una base de datos precisa al minuto de todo el software de todos los repositorios conocidos. Es lo suficientemente detallado como para calcular dependencias e identificar actualizaciones disponibles, pero lo suficientemente pequeño como para transmitir a través de los módems de acceso telefónico de la época y para almacenar en las unidades pequeñas de la época. La actualización de su base de datos por teléfono puede llevar minutos con una buena conexión. Si bien eso es mucho tiempo ahora, buscar actualizaciones de paquetes manualmente (antes de apt) podría consumir horas .

En aquel entonces, las distribuciones se construían de manera diferente: sin integración continua, sin pruebas de humo (bueno, ¡no hay muchas pruebas en absoluto!), Las granjas de construcción apenas comenzaban. Las actualizaciones tuvieron que revertirse más a menudo que ahora. Muchos usuarios optaron por no actualizar ciertos paquetes por varias razones, o seleccionar solo ciertas actualizaciones hoy (para probar manualmente) y otras actualizaciones mañana.

Durante la posterior de 15 o tan años, las herramientas no han cambiado mucho, por lo que aún nos queda por separado updatey upgradeacciones. El flujo de trabajo del usuario ha evolucionado a medida que la fiabilidad de la distribución ha mejorado, y gran parte de la gestión de fuente / actualización / actualización que solía ser manual se ha ocultado lentamente detrás de las capas de automatización ( software-updater, unattended-upgrades).

Modernizar las herramientas del paquete de software es una de las razones por las que Snaps y AppImage y Flatpack han aparecido recientemente, pero ese es el próximo capítulo.

usuario535733
fuente
2

Hacen cosas separadas por muchas razones.

Un ejemplo es una pregunta que publiqué y respondí por mi cuenta: ¿Cómo se pueden eliminar los PPA usando la GUI? . En esta pantalla, queremos eliminar los PPA y no actualizar el software:

Eliminar PPA.png

Después de eliminar un PPA, el software GUI se ejecuta automáticamente sudo apt update. Si fuera a eliminar un PPA de la línea de comando, debe ejecutarlo sudo apt update después de eliminar un PPA de la lista de fuentes.

Sin una apt updatefunción separada , no hay forma de eliminar un PPA.


Otro ejemplo es que necesita ejecutar sudo apt updatedesde la línea de comandos para actualizar las fuentes. Luego puede averiguar qué se puede actualizar sin actualizar realmente:

$ apt list --upgradable
Listing... Done
conky-std/xenial 1.10.1-3 amd64 [upgradable from: 1.9.0-4]
google-chrome-stable/stable 65.0.3325.181-1 amd64 [upgradable from: 63.0.3239.132-1]
libxnvctrl0/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
nvidia-settings/xenial 390.48-0ubuntu0~gpu16.04.1 amd64 [upgradable from: 387.22-0ubuntu0~gpu16.04.1]
peek/xenial 1.3.1-0~ppa23~ubuntu16.04.1 amd64 [upgradable from: 1.2.1-0~ppa20~ubuntu16.04.1]

Si observa el resultado, puede decidir que un paquete dado "esté anclado" o "retenido" y no se actualice la próxima vez que se ejecute "sudo apt upgrade". Si hubiera un solo proceso de "actualización / actualización", perdería esta capacidad .

¡Sin un separado apt updateno puedes ver qué se actualizaría!

WinEunuuchs2Unix
fuente
El segundo párrafo es falso. yumy dnfejecuta automáticamente el equivalente de una actualización al realizar operaciones relevantes. Por ejemplo, el equivalente deapt list --upgradable es yum check-update, que actualiza la lista de paquetes si no se actualizó recientemente. Ciertamente es posible que esto funcione, como se puede ver en otros administradores de paquetes.
muru
@muru Se basa en esta respuesta de 238 votos positivos que dice que debe ejecutar sudo apt updatedespués de eliminar un repositorio.
WinEunuuchs2Unix
la segunda sección separada, entonces.
muru
Ahora que lo mencionas, eso también es falso. Como se puede ver en el ejemplo deyum / dnfagain, la operación de actualización es automática, por lo que una fuente deshabilitada se elimina automáticamente de la siguiente operación. De nuevo, algo que es completamente posible.
muru
@muru Además, al menos en mi sistema, tampoco yum tampoco dnfestán instalados. Instalar uno de ellos para reemplazar un apt updateaumentaría la sobrecarga del sistema y el tiempo de aprendizaje.
WinEunuuchs2Unix
0

Uno podría preguntarse por qué descargar el programa desde el repositorio formal de Ubuntu y aptluego instalarlo. ¿Qué diferencia haría si primero lo descarga y luego lo instala en lugar de descargarlo e instalarlo en una sola operación?

Bueno, después de leer los comentarios y pensar más sobre esto, entiendo que esto se debe a la filosofía de Unix , una filosofía modular que básicamente dice "Cada programa hace una cosa": primero descarga, luego instala --- cada acción con su propio programa dedicado .

usuario9303970
fuente
0

En ninguna distribución, hay un comando de actualización-actualización, si está allí, no es más que alias predefinidos, como supongo. Esos alias también se pueden configurar fácilmente en Ubuntu, editando ~ / .bashrc.

La actualización se utiliza para resincronizar los repositorios y solucionar cualquier problema allí. Luego, cuando actualiza, en realidad actualiza los paquetes instalados. Pero cuando Dist-Upgrade, se actualiza por completo. En Arch Linux, hacen hincapié en la actualización completa con Syu. Puedes hacer lo mismo en Ubuntu. En la actualización completa, en realidad resuelve cualquier problema de dependencia del sistema, que pueda surgir en la actualización parcial.

Espero eso ayude. Disculpe el texto en bruto como escrito en el teléfono.

Arijit Chatterjee
fuente
2
yumy dnfautomáticamente hace el equivalente de un updateen la mayoría de las operaciones si los datos en caché son lo suficientemente antiguos. Vea, por ejemplo, la discusión sobre cómo
muru