¿Cuáles son las ventajas de construir herramientas / libs desde la fuente?

8

Al construir desde la fuente, ¿obtienes algún beneficio? ¿Está el código mejor optimizado para su arquitectura de hardware? ¿Está optimizado mejor en general?

¿Por qué alguien elegiría construir desde la fuente en lugar de usar un sistema de administración de paquetes como APT / yum? Si hay algún tipo de ganancia de optimización, ¿cuándo supera eso el beneficio de un sistema de gestión de paquetes?

Doug T.
fuente
Sus dos opciones no son mutuamente excluyentes. Puede personalizar las fuentes de un paquete o incluso empaquetarlo usted mismo.
Faheem Mitha

Respuestas:

11

La construcción desde el origen proporciona las siguientes opciones que no están disponibles cuando se utiliza una versión de un administrador de paquetes binarios.

Compilar desde la fuente le permite:

  • usar optimizaciones específicas del procesador
  • usa la última versión
  • aprenda cómo funciona la compilación y la vinculación (sugerencia de @mattdm)
  • corregir errores, trabajo de desarrollo
  • establecer opciones de tiempo de compilación (por ejemplo, incluir características X en vim)
Shawn J. Goff
fuente
1
Para un usuario de escritorio normal, ¿vale la pena el costo de la complejidad de administrar manualmente las dependencias entre piezas de software? ¿Es como una ganancia del 2% o una duplicación en el rendimiento?
Doug T.
1
@Doug Para el software pesado de CPU, la diferencia puede ser 10..20%, para el software de escritorio típico, la diferencia es cero. Si desea intentar compilar software desde la fuente, le recomendaría una distribución basada en la fuente (por ejemplo, Gentoo). Es una muy mala idea instalar software desde la fuente (aparte del software de terceros instalado en / opt) en una distribución binaria.
Šimon Tóth
Creo que el rendimiento no vale la pena salir de las dependencias de su administrador de paquetes. Sin embargo, existen sistemas de administración de paquetes basados ​​en la fuente que realizan un seguimiento de las dependencias y le permiten compilar desde la fuente. La ventaja mencionada anteriormente que no obtiene con esto es solo 'la última versión': el administrador de paquetes tiene una versión elegida que funcionará con el resto de la distribución.
Shawn J. Goff
55
Lo único que agregaría es: aprender mucho más sobre lo que sucede debajo del capó. Eso puede valer la pena por sí solo.
mattdm
7

He hecho esto exactamente muy recientemente.

Compilé openssl-1.0.algo de la fuente en un sistema Linux Slackware 11.0. Quería parchear el inicio de sesión por contraseña para pausar durante 7 segundos en un inicio de sesión fallido, a fin de evitar a los molestos adivinadores de contraseñas ssh chinos.

Compilé Apache httpd 2.2.17 en el mismo sistema Slackware 11.0 porque venía con Apache 2.0.algo, y quería usar un httpd.conf 2.2.x de otro sistema.

Ahora que lo pienso, también compilé Alpine 2.0 (cliente de correo electrónico, seguimiento de pino) para el mismo sistema. ¿Por qué Slackware 11.0? Se ejecuta en una máquina de alrededor de 2003 con gráficos Intel "Brookdale", y cualquier otro Slackware posterior no es compatible con los gráficos Intel mal documentados.

En una máquina diferente, saqué el soporte de chip inalámbrico TI ACX111 de github y compilé un nuevo controlador, lo que me permitió usar una tarjeta inalámbrica de $ 9.

También recompilo habitualmente los núcleos de Linux para que sean específicos para la máquina en la que se ejecutan.

Entonces, en mi caso, hay varias razones de personalización, soporte de hardware y "solo porque".

Dado lo que sabemos de epidemiología en una población uniforme (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf), ¿por qué no todos compilan desde la fuente en sus propios sistemas, con lo que sea opciones de tiempo de compilación que eligen? Eso daría lugar a una población mucho más resistente a virus y gusanos.

Bruce Ediger
fuente
Hay formas más sencillas de ralentizar a esos malvados ssh-martilleo ... busque la limitación de la tasa de iptables. Esa solución tiene una aplicabilidad más amplia y, además, no anula su garantía.
vonbrand
Por lo general, Linux no viene con una garantía. Slackware 11 tiene algunos años en este momento. Estás rogando la pregunta con FUD, específicamente, "miedo". "¡Oh, no! ¡No hagas eso! ¡Anularás tu garantía!" ¿Cuántas veces se confía en una garantía? Muy pocos. A todos nos gustaría que alguien más se haga responsable (especialmente moral, pero principalmente financiero) de todas nuestras acciones, pero eso no puede suceder sin muchas consecuencias negativas para las personas y la sociedad. Respeto mi consejo y más: compile la fuente usted mismo y asuma toda la responsabilidad. No culpes a nadie más.
Bruce Ediger
Oh vamos. Si es RHEL o SLES (o incluso Ubuntu LTS con un contrato de soporte), ciertamente hay una garantía que se anulará. Si se trataba de Debian o Fedora, un informe de error para su OpenSSH pirateado simplemente se cerrará sin mirar dos veces.
vonbrand