¿Es mejor compilar desde la fuente o instalar desde un paquete .deb?

18

A veces, cuando descargo software de Internet, encuentro que hay un paquete .deb listo para mi Debian / Ubuntu y también para compilar un tarball. Al principio, simplemente usaría el paquete por su facilidad de instalación, y ni siquiera me atrevería a intentar compilarlo. Incluso el sonido me asustó un poco. Hoy en día, sin embargo, cuando tengo la opción, a veces me encuentro en un dilema: ¿hay una ventaja impopular para compilar desde la fuente en comparación con el paquete .deb? Espero encontrarlo aquí, gracias.

the_midget_17
fuente

Respuestas:

24

La ventaja de compilar desde la fuente es que puede compilar paquetes con ciertos indicadores / opciones que pueden faltar / deshabilitarse en los paquetes de Ubuntu estándar. Además, facilita la instalación de varias versiones del mismo programa. Además, puede elegir una versión exacta de un paquete que ya se haya eliminado o que aún no esté presente en los repositorios de Ubuntu (ejemplo: tengo varias versiones de Python 2.4.x en mi directorio / opt / ya que lo necesito para ejecutar algunas versiones anteriores software).

La desventaja de compilar desde la fuente es que, a menos que construyas un .deb y luego lo instales, el procedimiento normal "./configure; make; sudo make install" mantiene al administrador de paquetes de Ubuntu completamente inconsciente de los cambios que estás haciendo, por lo que no obtendrá ninguna actualización para el software compilado manualmente; y es posible que el administrador de paquetes anule / rompa su paquete más adelante si no tiene cuidado de instalarlo en una ubicación separada.

En resumen: siempre considere instalar primero desde los repositorios estándar de Ubuntu, luego considere instalar un .deb; solo compila a partir de fuentes si sabes exactamente por qué necesitas hacer esto.

Sergey
fuente
También leí que el rendimiento del paquete podría ser diferente, cuando se compila, una especie de mejor compatibilidad con el núcleo actual. No lo comparé personalmente.
Fedir RYKHTIK
@Fedir: No estoy seguro de que el kernel tenga algo que ver con esto, es más bien la arquitectura del procesador; por ejemplo, en los viejos tiempos, muchas distribuciones contenían paquetes compilados con el conjunto de instrucciones 80386 para una máxima compatibilidad, mientras que compilar manualmente un programa para Pentium lo habilitaría para usar instrucciones más eficientes. Hay distribuciones completas, como Gentoo, que se compilan desde la fuente en la máquina host por este motivo. Sin embargo, la diferencia suele ser mínima y solo se puede notar en aplicaciones muy específicas.
Sergey
1
Tenga en cuenta que el uso de checkinstall en lugar de make install alivia muchas de las desventajas mencionadas. Ver help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Perdón por ser quisquilloso, @EliahKagan, pero, aunque virtualenv es increíble, es más para mantener múltiples entornos Python con diferentes bibliotecas instaladas. Si quisieras una versión específica de Python, tal vez compilada con configuraciones específicas, aún necesitarías instalar el binario real, ya sea desde un .deb o compilado desde cero.
Sergey
@Sergey Tienes razón. (¡Y no veo nada que haya dicho que sea insignificante, si es que debería disculparme por mi comentario equivocado y engañoso!). Según tengo entendido, los administradores de paquetes como condacrearán automáticamente entornos virtuales e instalarán diferentes instalaciones de Python para ellos , creando y manteniendo versiones por proyecto. Pero como dices, virtualenv no hará esto por sí mismo.
Eliah Kagan
1

Estaba discutiendo sobre esto ayer. Creo que es extremadamente importante no construir nada frágil, ya que se sabe que no existe una documentación actualizada y buena, especialmente cuando se trabaja con un sistema frágil, no habrá tiempo para combatir el fuego y escribir documentación, y donde todo es robusto, la documentación no se necesita tanto. Por lo tanto, nunca debe compilar desde la fuente, encontrar otra solución, usar otro software, cambiar su arquitectura, pero no usar algo que se rompa después de la actualización. Y sí, no tiene nada que ver con la versión del kernel, se trata de la arquitectura de su máquina, y en la actualidad apenas puede obtener una diferencia significativa con la compilación del código fuente, apuesto a que no obtendrá ninguna.

Edik Mkoyan
fuente
0

Sin duda, es mucho más fácil instalar el .deb, aunque si puedes, la mejor opción es encontrarlo en un repositorio o en un ppa, para que puedas recibir actualizaciones.

AFAIK no hay ningún beneficio real para compilarlo usted mismo, a menos que planee alterarlo primero. Si solo desea el software tal como está, instale .deb

Chris Wayne
fuente