¿Por qué los softwares no están empaquetados en un solo archivo?


15

Vemos que la mayoría de los softwares de Windows están empaquetados en un solo archivo ejecutable. Cuando hago doble clic en el archivo de configuración, configura todos los archivos, binarios y bibliotecas con él.

Entiendo la dependencia de Ubuntu o, en general, los paquetes de Linux. Pero me pregunto, ¿por qué existe esto? ¿No es posible construir un solo archivo con todas las dependencias? ¿Cuáles son los problemas con este método?

Por favor, trate de dar la razón en detalles.

Respuestas:


17

La razón principal por la que las dependencias no se incluyen con el programa en sí es para que los componentes del sistema puedan actualizarse fácilmente.

Imagine que una dependencia es utilizada por cinco programas diferentes. Si se encuentra una vulnerabilidad de seguridad en esa dependencia, solo se debe actualizar una copia, en lugar de cinco copias.

Para el usuario, no importa que se deban instalar varios paquetes; la instalación de la única pieza de software que desea instala automáticamente sus dependencias.


La principal diferencia entre el empaquetado .deb y .exe no es que el software Ubuntu no se publique en un solo archivo. La principal diferencia es todo el concepto de un repositorio de software que contiene paquetes, y desde el cual se pueden proporcionar actualizaciones fácilmente.

Esto a veces puede ser problemático para las computadoras sin una conexión directa a Internet. Existen herramientas, como APTonCD , que ayudan a minimizar estas dificultades.


2
a veces es importante para los usuarios como nosotros sin el acceso adecuado a Internet
Anwar

2
De todos modos, odio esta función porque mi internet es lento. Y el intercambio de ubuntu descargar softwares son muy difíciles, (no sugieren backuping apt-cache porque lo hago al día)
Los taquiones

1
Pero entonces, ¡deberías amar la función! Porque, en lugar de descargar una biblioteca cinco veces, simplemente descárgala una vez. ¡Imagina que cada programa en tu instalación de Ubuntu viene con su propia instalación GTK + o Qt! Esas cosas son enormes .
Michael Wild

4

Eso no es totalmente cierto. El software de Ubuntu generalmente viene en un solo archivo .deb. Siendo completamente simplistas (e inexactos), los archivos .deb son el archivo .exe correspondiente para Windows. Todos los programas, incluidos los de Windows, dependen de otros archivos del sistema operativo (bibliotecas). El proceso de instalación es más o menos explícito en diferentes sistemas operativos. Cuando utiliza el centro de software en Ubuntu para descargar un programa, solo descarga las dependencias que no están instaladas en su sistema y los archivos de programa reales. Eso evita que el sistema se sobrecargue con archivos duplicados y funciones duplicadas que terminarían en conflictos.

Lo creas o no, la única diferencia entre instalar un programa en Windows o Ubuntu es la cantidad de información que proporcionan a los usuarios. Windows piensa que sus usuarios son tontos y no quieren que sepan qué se está instalando cuando ejecutan un archivo exe. En Linux obtienes esa información ... para algunos usuarios es demasiado detalle, pero otros (la mayoría) realmente lo aprecian.

Espero que tenga sentido.


2
Absolutamente correcto. Incluso otras distribuciones (no tan buenas como Ubuntu) usan .rpms. ¡Lo que pasa con un .exe, .deb, o lo que sea, es que es básicamente un gran .tar que se extrae a diferentes lugares! En Windows, va a Archivos de programa y le muestra una barra de progreso, pero en Linux le muestra mucho más.
WindowsEscapist

1
Creo que la sugerencia de que un archivo exe es como un gran archivo tar va demasiado lejos en la dirección de la simplificación. Un archivo tar no es ejecutable. Un archivo exe (naturalmente) es. Es decir, con un archivo deb (que de hecho es un archivo tar), es el administrador de paquetes el que maneja el proceso real de mover los archivos, por lo que el sistema puede estar al tanto de las cosas con bastante elegancia. Con un programa instalador (como en Windows), es el propio instalador quien lo hace. Puede hablar con algunos componentes del sistema para mantener las cosas ordenadas, pero solo si así lo desea.
Dylan McCall

1
La mejor manera de resumir esto es que Windows tiene creadores de programas de instalación como InstallShield y NSIS. También hay herramientas como esa para Linux. MojoSetup es popular. Ahí es donde a veces descargas un programa y tiene un archivo ejecutable (que generalmente termina en .sh o .run) y te da un pequeño asistente. Esos generalmente no hablan con el administrador de paquetes, y funcionan de manera similar a los programas de instalación en Windows. En ese sentido, Windows Installer (con sus archivos .msi) es una especie de intento de limpiar ese desastre;)
Dylan McCall

Creo que las formas de Linux son mucho mejores que las de Windows. Pero sí, las formas de Windows son simples y fáciles
Anwar

2
El formato de archivo de Windows que corresponde .debes .msi.
Eliah Kagan

3

En Ubuntu, la mayoría del software viene en un solo archivo. Es un *.debarchivo de paquete Debian que se descarga, desempaqueta e instala desde su administrador de paquetes.

¿Por qué Ubuntu no instala software desde ejecutables autoextraíbles como lo hace la mayoría del software de Windows?

Porque los *.exearchivos autoextraíbles son una propuesta muy peligrosa de aceptar.

Las diferencias más críticas entre un ejecutable autoextraíble y un sistema de empaquetado, como el de Debian / Ubuntu, son:

  • Seguridad
  • Transparencia
  • Control más granular.

Con más detalle:

Seguridad

En el mundo de Windows tienes que confiar en ese único *.exearchivo. ¿Cómo puede uno estar realmente seguro de que se puede confiar? ¿Cómo puedes saber que instala algo? ¿Cómo puede estar seguro de que no hace otras cosas a sus espaldas?

En Ubuntu, todos los paquetes están firmados digitalmente, por lo que mediante el uso de un archivo de paquete separado, el administrador de paquetes (ya sea muon, synaptic, aptitude o incluso apt), se verifica el contenido antes de que se desempaquete, y mucho menos se instale. Esto supone, por supuesto, que confía en los repositorios. Prefiero confiar en los repositorios de Ubuntu (una sola autoridad) que en cientos de fuentes diferentes a menudo desconocidas para descargar.

Control granular

Con un *.exearchivo, esencialmente puede hacer una cosa: ejecutarlo. En Ubuntu, puede inspeccionar el contenido del paquete, las descripciones, las configuraciones, los archivos individuales, los últimos cambios, las correcciones de errores, etc. desde la comodidad de su administrador de paquetes, antes de decidir si instalarlo o no.

Cuando instala desde un *.exearchivo, también debe confiar en su enlace de "desinstalación" (y no *.exese garantiza que todos los archivos tengan uno). En Ubuntu, todos los archivos que pertenecen a paquetes estándar instalados por el administrador de paquetes, siempre se pueden desinstalar porque esa es una función del administrador de paquetes, no del paquete en sí. El administrador de paquetes es una aplicación independiente y confiable, que proporciona tanto el instalador como el desinstalador, el paquete no puede quitarle el enlace de desinstalación. Por supuesto, un paquete malicioso puede colarse a través de acciones posteriores a la instalación, pero es por eso que tenemos el sistema de repositorio oficial y las mismas personas en las que confiamos para mantenerlos.

Transparencia

Va más allá. En Ubuntu realmente puedo confiar en mi sistema, porque puedo verificar el software en muchos niveles. El último nivel es poder mirar el código fuente. Los paquetes binarios tienen paquetes fuente correspondientes. De hecho, puedo mirar la fuente (Ejemplo: ' apt-get source bash ' le dará las fuentes completas al shell bash). En el mundo de los archivos * .exe, generalmente solo hay binarios, y ¿quién sabe qué hacen realmente detrás de escena?

Dicho esto, siempre hay excepciones a las reglas, pero para mí la seguridad y la confianza significan que no puedo aceptar la ejecución de archivos binarios de cientos de fuentes diferentes que son difíciles de verificar como una forma estándar de instalar componentes en mi sistema.


2

Además de lo que han dicho otros, a veces una sola pieza de software se divide en varios paquetes porque no todas las características son relevantes para todos los usuarios. Por ejemplo, si la documentación de un programa es voluminosa, generalmente será proporcionada por un paquete separado. Esto permite a los usuarios que no están interesados ​​en estas características opcionales ahorrar espacio en disco y ancho de banda / tiempo para la descarga.


0

Intentemos compartir mi comprensión sobre las dependencias (Sí, estaba al tanto del mérito de Ubuntu o, en general, de la forma en que Linux maneja el software. Simplemente estaba tratando de reunir todas las buenas opiniones y razones de una manera central, para poder demostrar algunas de mis amigos) .

Los softwares de Windows se empaquetan principalmente en un solo archivo. ¿Esto implica que no tienen ninguna dependencia?

No, casi todos los softwares dependen de otros softwares. (A menos que el software sea de muy bajo nivel y pueda hablar directamente con el hardware, como el propio sistema operativo) . Los softwares de Microsofts no están libres de dependencia. Entonces, la pregunta importante es: ¿cómo manejan esto?

Respuesta: Manejan esto a su manera tradicional. Asumiendo que la mayoría de sus usuarios son tontos, simplemente ponen toda la dependencia en el archivo único, lo que resulta en un Software de mayor tamaño (1 archivado).
Por ejemplo, vea los juegos lanzados para Microsoft. Casi todos los juegos incluyen configuraciones de DirectX, aunque los usuarios pueden tener versiones actualizadas de ellos.

Aquí hay algo que he encontrado en Google sobre por qué DirectX se incluye con cada juego.

Incluso si ya está instalada una versión posterior del binario, esa versión no se puede usar, e incluso si su instalación de DirectX está actualizada porque ha ejecutado una versión más reciente del instalador que no garantiza que haya instalado todos Versión anterior. Peor aún, si se instala una versión para x86, no garantiza que se instale la misma versión para x64, por lo que los juegos de 64 bits y 32 bits pueden necesitar ejecutar la misma versión exacta del instalador, pero apuntando a diferentes plataformas cuando se ejecutan.

Haga clic aquí para ver el artículo completo. Está claro que no les está yendo muy bien con el manejo de la dependencia.

La mayoría de las veces, independientemente de las dependencias que ya existen, lo proporcionan para ganar simplicidad (para sus usuarios) . También vea cuántos temas de software incluyen los componentes de tiempo de ejecución .NET.
Otro ejemplo de mi experiencia: una vez que descargué e instalé un software de MS. Estando satisfecho con el proceso, hice clic en el icono para abrir el software, solo entonces me dice que "necesito Java para ejecutar". Tal situación nunca ocurre en un mundo Linux a través de su gestión de paquetes. (a menos que intente descargar archivos .deb del sitio del repositorio e instalarlos haciendo doble clic, como MS) .

¿Cómo maneja Linux este problema de dependencia?

Bueno, Linux o Ubuntu no oculta el hecho de que debe tener dependencias instaladas para usar el software (a diferencia de la forma de Microsoft). Pero cuando instaló los componentes, otro software que depende del mismo componente utiliza las dependencias instaladas previamente instaladas (a diferencia del software de MS que incluye todas las cosas).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.