GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la fuente de la mentalidad de compilarlo usted mismo en Linux?

Muy simple, durante gran parte de la historia de *nix, no había otra opción. Los programas se distribuyeron como tarballs fuente y la única forma que tenía de usarlos era compilar desde la fuente. Así que no es tanto una mentalidad como un mal necesario.

Dicho esto, hay muy buenas razones para compilar cosas usted mismo, ya que luego se compilarán específicamente para su hardware, puede elegir qué opciones habilitar o no y, por lo tanto, puede terminar con un ejecutable ajustado, tal como le gusta. . Eso, sin embargo, obviamente es solo algo que tiene sentido para usuarios expertos y no para personas que solo quieren una máquina que funcione para leer sus correos electrónicos.

Ahora, en el mundo de Linux, las principales distribuciones se han alejado de esto hace muchos años. Muy, muy rara vez necesita compilar algo usted mismo en estos días a menos que esté usando una distribución que está diseñada específicamente para personas a las que les gusta hacer esto como Gentoo. Sin embargo, para la gran mayoría de las distribuciones, su usuario promedio nunca necesitará compilar nada, ya que casi todo lo que necesitarán está presente y compilado en los repositorios de su distribución.

Así que esta mentalidad de CIY, como usted la llama, esencialmente ha desaparecido. Es muy posible que todavía esté vivo y coleando en el mundo de UNIX, no tengo experiencia allí, pero en Linux, si está usando una distribución popular con un repositorio decente, casi nunca necesitará compilar nada usted mismo.


Hay algunas causas para esa mentalidad, desde usuarios finales, mantenedores de distribución y proveedores de código/desarrolladores/grupos de proyectos, y todas y cada una de ellas son perfectamente válidas.

El aspecto de código abierto

Hay algunos que disfrutan sabiendo que están usando software libre y lo validan eligiendo compilar desde la fuente. Aquí es donde entran cosas como el proyecto/howto/guía/libro de Linux From Scratch.

El aspecto de optimización y opciones

¿Quiere compilar cosas con optimizaciones específicas para su arquitectura de CPU en particular? Tal vez haya una opción de tiempo de compilación (o un parche para crear uno) para habilitar o deshabilitar una característica particular que necesite. Ejemplos de esto podrían ser parchear postfix para tener la capacidad de administrar cuotas, o usar una distribución como Gentoo donde puede optar por no usar systemd, u optar específicamente por admitir ogg/theora/vorbis/lo que sea y NO mp3 debido a problemas de licencia. o lo que sea.

El aspecto de la arquitectura de la CPU

¿Su lugar de trabajo utiliza máquinas de gama alta que no sean x86/amd64? Es posible que el paquete que necesita/quiera no esté disponible precompilado para la arquitectura de su CPU, y mucho menos sea cual sea la distribución que esté ejecutando. Por supuesto, la mayoría de los lugares que ejecutan este tipo de hardware también cuentan con el soporte de IBM, etc. y no van a instalar/compilar cosas de cualquier manera. Pero, ¿qué sucede si compra uno de una venta excedente, busca un iMac antiguo con procesador PPC, etc.?

El aspecto de distribución

Las "familias" de distribución, es decir, Debian con Ubuntu, Mint y otros, y RedHat con CentOS, Whitebox, Fedora y otros, utilizan diferentes formatos de paquetes. Y cada versión se envía con diferentes versiones de biblioteca, etc. Incluso para un simple script de shell de un solo archivo, configurar un archivo Debian .deb adecuado requiere tiempo y esfuerzo. Si escribió algún software para rascarse un poco, y quería hacerlo gratuito y publicarlo en gitlab, su propio servidor web, lo que sea, ¿preferiría simplemente publicar un archivo fuente genérico .tar.gz con instrucciones sobre la construcción o preferiría empaquete versiones para 2 versiones de Debian (estable y de prueba, tal vez antigua estable), múltiples versiones de Redhat y Fedora como RPM, un TGZ para Slackware, un perfil ebuild para Gentoo, etc. etc. etc.


Como dice @terdon, hoy en día la necesidad de compilar cosas es bastante escasa, especialmente para los usuarios domésticos.

En el pasado, en el mundo Unix, dependía mucho de las fuentes de compilación, por ejemplo, ya que administraba los sistemas Solaris, AIX, Ultrix, Digital Ultrix y HP/UX que a veces el proveedor ya no mantenía o cuyas implementaciones de los servicios comunes estaban muy por detrás de lo que comúnmente usaban otros Unixes, incluido Linux.

Todavía existen necesidades genuinas de compilar cosas en el presente, ya sea para obtener una pieza de software más oscura u obsoleta que no está en los repositorios, o usar una versión más reciente de un paquete para el que no tiene archivos binarios compatibles, o cuando desea agregar funcionalidad adicional o, en raras ocasiones, si puede escribir un parche o módulo para ello.

También tuve que compilar el software a mano cuando hacía la reingeniería de los sistemas para migrar a Debian y/o nuevas versiones de Debian que tenían un marco que ya no era compatible con el sistema operativo.

Por ejemplo, en el pasado tenía que compilar a mano los demonios DHCP para tener soporte para los cambios (por entonces recientes) de Windows en el protocolo, o para soportar parches específicos para el aprovisionamiento en el mundo de las telecomunicaciones.

Todavía conservo en mi repositorio local debs para las versiones de FreeRadius compiladas por mí mismo desde el repositorio dev git, ya que había una serie de versiones estables que tenían errores (graves) en Debian y, por lo general, los .debs correspondientes para Debian/Ubuntu no han sido adecuada a nuestras necesidades.

Y no hace falta decir que, a menudo, también tenemos que ejecutar o compilar cosas escritas por nosotros mismos.

Instalar las dependencias hoy en día no es tan difícil como en el pasado, y algunos programas incluso tienen archivos de reglas personalizados para algunas distribuciones comunes de Linux que nombran las dependencias para compilar y hacen el trabajo pesado de crear el archivo del paquete con la lista de dependencias incorporadas. Instalar un paquete de este tipo desde un repositorio local no es muy diferente de instalar el mismo paquete desde los repositorios oficiales.


Linux
  1. ¿Qué hace que la comunidad de Linux sea especial?

  2. Linux vs Unix:¿Cuál es la diferencia?

  3. ¿Cuál es el propósito del archivo .bashrc en Linux?

  4. ¿Cuál es la definición de una sesión en Linux?

  5. ¿Cuál es el significado de curl -k -i -X ​​en Linux?

¿Qué es el comando Watch de Linux + ejemplos?

¿Qué es el Shell en Linux?

¿Cuál es la diferencia entre Linux y Unix?

Los 10 mejores libros de Linux para leer en 2019

¿Qué es BusyBox en Linux? ¿Cómo usarlo?

¿Qué es el comando matar en Linux?