¿Por qué el software no administrado por paquetes no se actualiza por sí solo?

¿Por qué el software no administrado por paquetes no se actualiza por sí solo?

Soy usuario de distribuciones basadas en Debian: Debian, Ubuntu, Linux Mint. Sé que a menudo las últimas versiones de software no están en los repositorios, por lo que frecuentemente las descargo directamente desde la fuente y las instalo.

Sin embargo, observo que este software rara vez te avisa de una actualización. Además, nunca me he dado cuenta de que ninguno de ellos se actualiza por sí solo y luego pide permiso para instalarlo.

¿Es porque generalmente se supone entre los programadores que las versiones de Linux se actualizarán a través del administrador de paquetes?

Respuesta1

Implementar este tipo de característica es bastante difícil, tanto en el lado de "llamar a casa" (para ver si ha habido una actualización) como en el lado de "actualización en el lugar":

  • el software que se ejecuta en el sistema del usuario necesita saber cómo verificar si hay una versión más nueva disponible (lo que significa agregar código de red a su aplicación, que bien podría no tener ninguna otra razón para usar la red);
  • el software necesita funcionar independientemente de las condiciones de la red en la que se encuentre (obviamente cuando está completamente fuera de línea; pero tampoco debería fallar con errores extraños cuando se encuentra parcialmente conectado);
  • necesita tener alguna forma de decidir si hay una versión más nueva disponible (¿cómo se comparan las versiones cuando los usuarios construyen desde el repositorio fuente?);
  • necesita tener un servidor en algún lugar con el lado del servidor, que quizás también necesite desarrollar;
  • debe asegurarse de que las actualizaciones no puedan verse comprometidas, ya sea en el servidor o mediante un ataque de intermediario (por lo que debe usar TLS y/o una firma segura de algún tipo);
  • necesita que las actualizaciones estén disponibles en un formato que sus usuarios puedan utilizar; Es posible que hayan creado desde el código fuente inicialmente, pero no hay garantía de que el sistema en el que ejecutan el software tenga todo lo necesario para reconstruir una versión más nueva desde el código fuente, por lo que es necesario proporcionar archivos binarios (¿para todas las plataformas de destino posibles?).

(Esta no es una lista exhaustiva).

Todos estos son problemas que han sido manejados por las distribuciones, por lo que es más fácil dejar que las distribuciones se encarguen de todo. Además, comoKusalanandaComo ha explicado, los usuarios que se preocupan por ejecutar la última versión de un software probablemente se preocupan lo suficiente como para seguir al menos una lista de correo de anuncios, por lo que serán notificados de esa manera.

Otro aspecto a considerar es que un número significativo de personas no quiere que el software que utilizan llame a casa de ninguna manera. Algunas distribuciones llegan a ciertos extremos paraeliminarcódigo que hace esto desde el software que distribuyen, o incluso otras partes del software que pueden usarse para rastrear su uso (p.ejdocumentación que carga imágenes o fuentes o CSS desde la web). Vea todas las etiquetas de "violación de privacidad" enLintian de DebianPor ejemplo.

Todo esto explica por qué hay tan pocos programas que contengan los mecanismos necesarios para proporcionar información de actualización por sí mismos, y aún menos que puedan actualizarse por sí mismos.

Hay otras formas de resolver el “problema”: los desarrolladores de software que utilizan un sistema de CI normalmente pueden ampliarlo para proporcionar compilaciones “nocturnas” en algún tipo de forma consumible (como paquetes); los usuarios interesados ​​pueden configurar sus propios sistemas de compilación para obtener periódicamente fuentes actualizadas del software que les interesa (esto es bastante común en contextos empresariales); o puede configurar paquetes estilo AUR que se construyen solos a partir de la fuente más reciente.

Respuesta2

A menos que el software en sí tenga la capacidad de "llamar a casa" para buscar actualizaciones, como algunos navegadores y cosas comoSincronizaciónparece poder hacer, generalmente no existe ningún mecanismo que pueda alertar automáticamente al usuario/administrador que hay una versión más nueva del software disponible.

Los paquetes que instala con su administrador de paquetes están hechos por humanos, usuarios que probablemente estén interesados ​​en mantenerlos actualizados y funcionales en los sistemas operativos que les interesan.

Alguien que empaqueta, por ejemploansible, oPrincipales utilidades de GNU, ola concha de yash, oChacero cualquier otro de los miles de proyectos de software que existen para un sistema Unix en particular probablemente (pero no necesariamente) estará suscrito a las listas de correo relevantes para esos proyectos y/o tendrá herramientas especiales para monitorear regularmente los repositorios de código fuente o los archivos de distribución fuente. . Cuando se les informa de una nueva versión, descargarán, compilarán, probarán, parchearán (etc.) y empaquetarán el software de las formas pertinentes dependiendo de los procedimientos de empaquetado en su Unix. Esto puede implicar comunicación tanto ascendente (al desarrollador del software) como descendente (a los usuarios del software) sobre incompatibilidades u otros problemas que aparecen en el proceso de construcción/empaquetado.

Luego, dependiendo de con qué Unix trabajan y cómo funciona la distribución de paquetes de terceros, registrarán, cargarán o confirmarán el paquete de alguna manera para que los usuarios como yo y usted puedan usar nuestros administradores de paquetes para actualizar nuestros sistemas.

Me importa, por ejemplo, tenerAlmacenar GNUdisponible para OpenBSD (soy el "mantenedor de puertos" de este software). De vez en cuando compruebo cuál es el estado actual de Stow en el sitio web de GNU (no se actualiza muy a menudo), y cuando veo una nueva versión la instalo, me aseguro de que funciona y actualizo el puerto OpenBSD. en mi máquina privada. Luego envío por correo electrónico la lista de puertos de OpenBSD con un parche para el puerto (los puertos se distribuyen como un conjunto de Makefiles en OpenBSD). Alguien con derechos de confirmación se asegurará de que mi parche se aplique correctamente y de que el puerto se vea correcto antes de enviarlo al árbol CVS de puertos de OpenBSD.

La próxima vez que un usuario actualice el árbol CVS y reconstruya el puerto, o descargue el puerto binario que eventualmente aparecerá, se actualizará su instalación de GNU Stow.Pero GNU Stow no es consciente de si hay disponible una nueva versión de sí mismo.Simplemente no es algo que se supone que GNU Stow deba estar haciendo. Es una herramienta que se utiliza para instalar software de terceros en jerarquías de directorios independientes, y seríaseriamente extrañosi intentaba "llamar a casa" cada vez que se usaba (tan extraño como si lsde repente requiriera acceso a la red para ejecutarse).

En muchos casos, tener una actualización de software por sí sola podría ser indeseable, ya que muchos componentes de un sistema deben probarse juntos. Los bits de infraestructura necesarios también inflarían seriamente los paquetes más pequeños, y sería imposible para las personas que carecen de conocimientos o recursos ejecutar algún tipo de servidor de actualización de alta disponibilidad para desarrollar software que se mantenga actualizado automáticamente.

Respuesta3

Antiguamente, las computadoras eran administradas por profesionales, quienes instalaban nuevo software según fuera necesario.

Con el tiempo, los diferentes sistemas operativos desarrollaron dos tradiciones diferentes para aliviar la carga de mantener el software actualizado manualmente.

  • En Linux y en la mayoría de las otras variantes modernas de Unix, el sistema operativo viene con ungerente de empaquetación. La mayor parte del software se instala a través de este administrador de paquetes, y el administrador de paquetes actualiza el software cuando hay una nueva versión disponible.
  • Windows no venía con un administrador de paquetes hasta hace poco, por lo que los proveedores de software de Windows adoptaron la costumbre de tener su propio código para instalar actualizaciones.

El enfoque del administrador de paquetes es especialmente adecuado para el mundo del código abierto porque el software de código abierto se compone de miles de paquetes que se desarrollan de forma independiente y se ensamblan juntos. Muchas cosas pueden salir mal al ensamblar paquetes, por lo que la mayoría de las distribuciones de Linux proporcionan un conjunto consistente, llamadoliberar. Algunas distribuciones tienen "lanzamientos continuos" donde la única verificación de coherencia es que el software se compila. Otros realizan más pruebas y solo ofrecen una nueva versión una o dos veces al año, o incluso una vez cada dos años.

Una ventaja del enfoque de Linux sobre el de Windows es que permite que los paquetes de software colaboren entre sí. Esto es difícil en el enfoque de Windows porque si el software A y el software B quieren hacer algo juntos, tienen que controlar si su socio está instalado, hacer frente a las actualizaciones, tener cuidado de no dejar migajas cuando uno se desinstala... Esto es en particular por qué el software de Windows tiene que agrupar todas las bibliotecas que utiliza, lo que significa que si se encuentra un error en la biblioteca, entonces todo el software que utiliza la biblioteca debe actualizarse. Por el contrario, en Linux, sólo es necesario actualizar el paquete que contiene la biblioteca, sin importar cuántos programas lo utilicen.

Dado que el sistema operativo proporciona un mecanismo para las actualizaciones de software, los autores de software Linux no necesitan reinventar la rueda.

Rara vez es necesario instalar versiones de software más recientes que las que proporciona su distribución. En general, el software más nuevo no tiene menos errores. Las distribuciones proporcionan actualizaciones si se encuentra un error grave (especialmente errores de seguridad). Una versión más nueva de algún software solo es útil si esa versión tiene una nueva característica que usted puede utilizar.

Si desea tener la última versión del software incluso cuando no la necesita, debe instalar una distribución de lanzamiento continuo como Debian inestable o Arch Linux. Las distribuciones con versiones coherentes como Ubuntu, Mint o Debian estable son para personas que no quieren estropear su sistema cada semana.

Respuesta4

Las otras respuestas son buenas, pero quiero agregar algo que ninguna de ellas abordó de manera destacada: la cuestión de la seguridad.

La instalación de software (al menos, instalarlo en todo el sistema) generalmente requiere acceso de root. Confías en el administrador de paquetes de tu distribución y en los humanos que empaquetan el software para usar este privilegio de manera adecuada, pero no necesariamente confías en que cada pieza aleatoria de software que hayas instalado lo haga correctamente.

información relacionada