¿Cuál es la diferencia entre build desde la fuente y usar un package de installation?

Me preguntaba: al instalar algo, hay una manera fácil de hacer doble clic en un file ejecutable de installation y, por otro lado, hay una forma de comstackrlo desde el origen.

El último, download un package fuente, es realmente engorroso.

Pero, ¿cuál es la diferencia fundamental entre estos dos methods?

Todos los progtwigs son progtwigs , que también se llaman packages fuente . Por lo tanto, todos los packages fuente deben buildse primero para que se ejecuten en su sistema.

Los packages binarys son uno que ya están comstackdos desde el origen por alguien con características generales y parameters proporcionados en el software para que una gran cantidad de usuarios puedan instalarlo y usarlo.

Los packages binarys son fáciles de instalar .
Pero puede que no tenga todas las opciones del package original.

Por lo tanto, para instalar desde el origen, debe comstackr el código fuente usted mismo. Eso significa que debe encargarse usted mismo de las dependencies. También debe conocer todas las características del package para que pueda buildlo en consecuencia.

Ventajas de instalar desde la fuente:

  • Puede instalar la última versión y siempre puede mantenerse actualizado, ya sea un parche de security o una nueva característica.
  • Le permite recortar las funciones durante la installation para que se ajuste a sus necesidades.
  • De manera similar, puede agregar algunas características que pueden no estar provistas en el binary.
  • Instálalo en la location que desees.
  • En el caso de algún software, puede proporcionar la información específica de su hardware para una installation adecuada.

En resumen, la installation desde la fuente le ofrece una gran opción de personalización , al mismo time que requiere un gran esfuerzo, mientras que la installation desde binarys es más fácil, pero es posible que no pueda personalizarla como desee.

Actualización : Agregar el argumento relacionado con la security en los comentarios a continuación. Sí, es cierto que al instalar desde binary, no tiene la integridad del código fuente. Pero luego depende de dónde has obtenido el binary. Hay muchas fonts de confianza desde donde puede get el binary de cualquier proyecto nuevo, el único aspecto negativo es el time . Puede tomar algún time para que el binary de las actualizaciones o incluso un nuevo proyecto aparezca en nuestros repositorys de confianza.

Y, sobre todo, sobre la security del software, me gustaría destacar esta hilarante página en Bell-Labs proporcionada por Joe en los comentarios a continuación.

Un file fuente contiene el código original escrito por el desarrollador en el idioma que elija (C, C ++, Python, etc.) y es genérico. No es específico de ninguna distribución y, en muchos casos, de ningún sistema operativo.

Un package (RPM o DEB por ejemplo) es el ejecutable binary (o script interpretado, etc.) preparado previamente para su distribución particular. La tarea de preparar la fuente para comstackr (agregar los parches necesarios, etc.), la compilation real, la creación de files de configuration específicos de la distribución, la creación de scripts previos y posteriores a la installation, etc., todo lo hace el mantenedor del package.

En otras palabras, todo el trabajo de burro se ha hecho por usted en un package, mientras que tendrá que hacerlo usted mismo si elige instalar desde la fuente.

Es mucho más fácil usar un package en casi todos los casos ya que:

  • Son mucho más fáciles de instalar
  • Están diseñados específicamente para trabajar con su distribución
  • A veces son parcheados por el mantenedor del package para arreglar errores específicos de la distribución
  • El administrador del package los desinstalará
  • El administrador de packages administrará todas las dependencies por usted
  • El administrador del package se encargará de las actualizaciones
  • No necesita instalar herramientas de desarrollador en su sistema (comstackdores, etc.)

Sin embargo, a veces la versión empaquetada es una versión anterior o incluso peor, no hay una versión empaquetada; en cuyo caso, su única opción es comstackrte. Si lo hace, debe considerar lo siguiente:

  • Necesitarás instalar todas las herramientas de desarrollo en tu sistema
  • Usted será responsable de search una actualización y volver a comstackr
  • Tendrá que asegurarse de que todas las dependencies estén instaladas, incluidos los packages de desarrollo, podría haber muchos de ellos.
  • Es posible que deba solucionar problemas si no funciona como se esperaba en su distribución

Si está dispuesto a esforzarse más, entonces comstackr desde la fuente puede brindarle los beneficios de:

  • Acceso a la última versión disponible
  • La opción de optimizar el process de compilation para el performance / estabilidad
  • ¡Disfrute!

Tenga en count que, si bien algunos packages pnetworkingiseñados de las distribuciones proporcionan ejecutables binarys que están listos para instalarse y ejecutarse (RPM y DEB son ejemplos), otras distribuciones proporcionan packages que simplemente automatizan el process de compilation.

Los ebuilds de Gentoo son un ejemplo de esto: el package es básicamente instrucciones para el administrador de packages que describe cómo comstackr e instalar el ejecutable. Esto tiene muchas de las ventajas de los gestores de packages tradicionales (actualizaciones automáticas, desinstallation, etc.) al time que permite al usuario optimizar el process de compilation a su gusto.

Arch Linux tiene un sistema de empaquetado donde los packages convencionales son binarys, mientras que muchos packages adicionales se comstackn en el sistema utilizando files PKGBUILD .

Aparte de las otras respuestas, me gustaría agregar algo:

Si decide comstackr un progtwig usted mismo, debe pensar que comstackr no es algo que haga solo una vez. Probablemente necesite suscribirse a la list de correo de desarrollo de las aplicaciones que decidió comstackr y mantenerse actualizado con las nuevas versiones y, especialmente, con las actualizaciones de security.

Cada vez que se actualice la aplicación, tendrá que volver a comstackr la nueva versión, así que tenga en count que tendrá que dedicar parte de su time cada semana.

Si no puede pagar eso, es mejor dejar que el mantenedor del package haga ese trabajo por usted.

Construir desde la fuente permite especificar la architecture de su máquina exactamente. Los nuevos CPU tienen instrucciones adicionales que los comstackdores entienden, exprimiendo un poco el performance. Los packages preconstruidos generalmente countn con la CPU más arcaica que aún es de uso común.

Esto es más importante para las aplicaciones críticas para proyectos que usan CPU en gran medida, como herramientas de tubería bioinformática, por ejemplo, o herramientas de modelado geofísico. Dicho software se ejecuta en un entorno muy controlado, no count con control de acceso por sí mismo, por lo que rara vez tiene errores de security tan urgentes que deben ser parcheados en días u horas. Casi nunca necesita ejecutarse en una máquina diferente con una architecture inicialmente desconocida.

Sí, lo sé, las computadoras son muy, muy rápidas ahora y cualquier esfuerzo o acción que tomen son muy, muy caros, pero al tercer día de sentarse y esperar a que termine su progtwig (esta es la situación de la que estoy hablando) tales verdades comienza a parecer cuestionable

De manera diferente, las aplicaciones como los browseres y similares deberían utilizarse mejor desde el repository del mantenedor (y no desde algunos packages precomstackdos descargados), ya que es muy importante mantenerlos actualizados.

Una forma de get lo mejor de ambos mundos (software actualizado, installation / desinstallation simple, incorporar la mayoría de los ajustes y adaptaciones de distribución, puede optimizar los requisitos locales), mientras que los costos (debe mantenerse al día, tenga cuidado con los errores) y parches de último minuto, siga el desarrollo, usted solo con respecto a las correcciones de errores e incompatibilidades entre versiones) no se puede mitigar (mucho), es build sus propios packages, comenzando con los packages fuente de su distribución. Sí, es más trabajo que simplemente build e instalar.