¿Cómo construir todo mi paquete instalado desde las fuentes?

26

He leído acerca de cómo las distribuciones de Linux basadas en código fuente como Gentoo pueden tener aumentos considerables de rendimiento en comparación con las distribuciones precompiladas como Ubuntu porque se instalan desde el código fuente con optimizaciones para su sistema en particular. ¿Es posible construir Ubuntu desde la fuente para obtener el mismo tipo de beneficio?

ciferkey
fuente
3
Instale Gentoo, no Ubuntu, para eso. En serio, ¿por qué usar una distribución que falla absolutamente en la gestión de dependencias basada en la fuente en lugar de una que es genial?
mathepic
77
Sería curioso ver puntos de referencia entre el origen y el binario donde realmente usaban las mismas versiones de pila y configuración. La comparación suele ser una versión de Ubuntu (con sus valores predeterminados) frente al último Gentoo posible con un sistema de archivos extraño y valores predeterminados de aplicaciones extrañas. Los valores predeterminados de Ubuntu son en su mayoría bastante sanos y de ahí proviene la mayor parte de su rendimiento y es por eso que la mayoría de las comparaciones directas colocan a Ubuntu por delante de Gentoo.
Oli
1
Un gran ejemplo de una mala comparación es este artículo de Linux Magazine (se requiere registro gratuito para leer) donde usan diferentes núcleos, diferentes controladores de Nvidia, diferentes versiones de X y diferentes entornos de escritorio. También podría comparar dos versiones diferentes de Ubuntu. Mostrarán escalas de diferencia similares.
Oli
44
Aumentos de rendimiento de qué? ¿Rendimiento de red, velocidad de disco, conmutación de procesos, cálculos matemáticos puros, gráficos 3D, tiempo de arranque?
usuario desconocido
1
Solo recomendaría compilar software, que necesita rendimiento de la CPU a gran escala (me viene a la mente la codificación de video) y el usuario lo utiliza mucho y se beneficia de la optimización de la CPU, como por ejemplo FMA3 o AVX2.
keiki

Respuestas:

42

Is is possible to build Ubuntu from source to get the same kind of benefit?

No estoy seguro de los beneficios si tiene componentes de hardware bastante nuevos, pero para la parte de la pregunta "Ubuntu desde el origen" la respuesta es SÍ, puede construir no solo sus aplicaciones favoritas desde el origen, sino todo el sistema operativo.

Aquí es cómo:

Necesita instalar apt-build . Es una herramienta de línea de comandos como apt-get, pero en lugar de descargar e instalar el paquete binario, apt-build descarga el código fuente del paquete, lo compila y luego lo instala en su sistema.

Después de instalarlo con

sudo apt-get install apt-build

se le pedirá un nivel de optimización (el medio está bien), si desea crear un repositorio apt-build para APT (Sí) y una pregunta sobre la arquitectura del procesador (mi Intel i7 se considera core2). Por supuesto, todas las opciones se pueden reconfigurar de esta manera:

dpkg-reconfigure apt-build

El comando anterior ofrece dos opciones adicionales para el compilador gcc y make builder. Sus descripciones se pueden encontrar en los manuales del sistema: man gcc y man make.

Para un manual y opciones de comando disponibles, verifique

man apt-build

Pero los más útiles son:

  • apt-build update - actualiza la lista de repositorios, (como apt-get update)
  • Actualización de apt-build: actualiza el sistema operativo (como la actualización de apt-get)
  • programa de instalación de apt-build: instala una aplicación (como apt-get install)
  • apt-build world - algo para usuarios de núcleo duro, ¡recompila todo el sistema!

Por ejemplo:

Digamos que desea compilar / instalar Gedit. En lugar de apt-get install, simplemente haz

sudo apt-build install gedit

Apt-build utiliza las entradas de deb-src contenidas en el archivo /etc/apt/sources.list para que los procesos de compilación e instalación sean completamente automáticos (similar a emerge encontrado en Gentoo). Apt-build descarga las fuentes de la aplicación principal y sus dependencias, las compila, crea un paquete deb y finalmente lo instala.

Algunas notas sobre apt-build world.

En mi opinión, no lo intentes, ¡a menos que tengas 24 o más horas disponibles!

Si es así, lo primero que debe hacer es eliminar / deshabilitar / desinstalar cualquier aplicación de terceros (es mejor hacerlo en una nueva instalación de Ubuntu) y luego hacer:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

El comando anterior copiará su lista completa de paquetes del sistema en apt-build.list para que puedan compilarse desde la fuente. Abre ese archivo

sudo gedit /etc/apt/apt-build.list

y elimine cualquier entrada de GCC / G ++

Entonces puedes hacer:

sudo apt-build world

Sugiero agregar dos opciones: - sí y --force-yes - para que el proceso de reconstrucción sea completamente automático.

Salih Emin
fuente
10
+1 para la respuesta concreta, en comparación con "¿por qué construir?" respuestas Prefiero leer también una opinión más extensa (incluso si es subjetiva) sobre los beneficios que podría (o no) obtener usando apt-build.
enzotib
1
Actualmente hay +17 para esta respuesta. ¿Pero alguien lo ha hecho con éxito?
keiki
1
@ otakun85 He usado apt-build para compilar algunos paquetes con éxito en Ubuntu (no recuerdo qué versión, una de 12.04 | 12.10 | 13.04), intenté apt-build world, que fue un desastre. La página de manual de apt-build tiene esto al final BUGS Many., así que espere problemas.
Phises
Encuentro que en lugar de usarlo apt-build world, es mejor descargar un libro "Linux from Scratch", y hacerlo apt-buildpara cada paquete que aparece en él. Especifica el orden correcto, etc. Por ejemplo, no estoy seguro, si apt-build worldsabe que primero debe binutilsvolver a compilar , luego gcc, binutilsnuevamente, gccotra vez, luego lenguajes de programación, gzipetc. Parece que solo compila todo alfabéticamente.
Serhyi Vynohradov
@SerhyiVynohradov: No importaría. LFS hace eso para evitar dejar dependencias de las bibliotecas en el sistema host, pero aquí solo reemplaza todo en su lugar con versiones compiladas; seguirán en el mismo lugar, tendrán el mismo ABI, etc.
Nick Matteo
3

Podría comenzar una guerra de llamas y un gran debate sobre este tipo de tema, pero veamos la vida real.

La velocidad de su sistema operativo depende en gran medida de qué hardware lo ejecute y ese es el factor principal.

Cambio las distribuciones con frecuencia mientras me quedo con Arch la mayor parte del tiempo, pero ¿Arch es mucho más rápido que Ubuntu? No.

Gnome con compiz en Ubuntu 10.10 utiliza aproximadamente 300ram, en Arch 200ram, tengo 4gb de ram, no siento la diferencia, pero si comparas Ubuntu con gnome con Arch con increíble, habrá un gran impulso en la capacidad de respuesta y los recursos uso (300ram vs 50ram), pero esto solo importa si está eligiendo una distribución para una netbook.

Entonces, si tiene un escritorio rápido y no desea pasar tiempo jugando con su sistema, simplemente use Ubuntu, pero si tiene un netbook, considere usar un WM ligero en Arch :)

Marcus Maxwell
fuente
Bueno, en algún momento puede llegar a la situación en la que tiene el hardware más reciente, pero aún necesita realizar operaciones de una hora. Y en lugar de configurar un montón de servidores para distribuir la carga, no le importa pasar un poco de tiempo jugando, para obtener ese aumento adicional del 20%. Nunca usé Arch, pero probé Gentoo. Y vi que muchas veces no existe la "distribución más rápida". En cambio, hay una "distribución con menos software". Es posible que tenga un sistema básico que sea rápido, pero no seguro. Y cuando instala los otros paquetes, se convierte en la misma velocidad que Ubuntu + apt-build.
Serhyi Vynohradov
0

Apt-build es útil para algo más que rendimiento, puede crear imágenes de distribución personalizadas y repositorio para hardware específico listo para una instalación masiva para su negocio. Con esto, me refiero a una distribución binaria optimizada si sabes que todo el hardware será el mismo. De esta manera, solo una computadora hace todo el trabajo de compilación, y el resto solo se actualiza utilizando el ISO remasterizado. No es completamente solo para peso ligero o codificación. Y un ISO de instalador personalizado le permite reinstalar sin recompilar si, por alguna razón, su sistema no se puede recuperar después de un desastre.

Doble T
fuente