BSD frente a Linux 3

Esto es sólo una traducción, yo no soy el autor.

Artículo original en:
http://www.over-yonder.net/~fullermd/rants/bsd4linux/03

El sistema base

El concepto de “sistema base” es algo que creo que causa la mayoría de los problemas a la gente acostumbrada a la metodología Linux. Lo cual es muy comprensible, porque el concepto no existe en el mundo Linux.

Linux, desde el comienzo era sólo un kernel. Sin entrar en el eterno debate de qué es un “sistema operativo”, se puede afirmar que el núcleo (kernel) por sí mismo no es muy útil. Se necesitan todas las utilidades del espacio de usuario para que funcione. Linux siempre ha sido un conglomerado, un núcleo por aquí, un ls por allí y ps, vim, perl, gzip, tar, y un montón de otros.

Linux nunca ha tenido ningún tipo de separación entre lo que es el “sistema base” y las “utilidades”. Todo el sistema se considera “utilidades”. MySQL no es diferente de ls o de KDE, de whois, de GnuCash o de … Cada bit del sistema es sólo uno u otro paquete de complemento.

En contraste, BSD siempre ha tenido un modelo de desarrollo centralizado. Siempre ha habido una entidad que está “a cargo” del sistema. BSD no usa GNU ls o GNU libc, usa ls de BSD y libc de BSD, que son derivados directos de ls y libc que estaban en las versiones BSD distribuidas por CSRG. Nunca han sido desarrollados o enpaquetados ​​por separado. No puede ir y descargar el libc de BSD en ningún lugar, porque en el mundo BSD, libc por sí misma no tiene sentido. ls por sí mismo no tiene sentido. El kernel por sí mismo no tiene sentido. El sistema en su conjunto es una pieza, no un montón de piezas pequeñas.

X no forma parte del sistema base de FreeBSD. Es un complemento (addon). Debido a eso, aplicaciones que utilizan X como xterm, KDE, Gnome, Mozilla, Gaim, xmms y parecidos, obviamente no pueden ser parte del sistema base tampoco. Son paquetes complementos y son tratados de manera diferente. La principal diferencia es dónde o por quién son desarrollados.

NetBSD y OpenBSD sí que tienen una implementación de X en su sistema base, debido a la forma en que están integrados con su driver de consola. Ambos utilizan versiones muy modificadas, muy personalizadas, así que se hace difícil mantenerlos como un paquete separado.

El sistema base entero se desarrolla en conjunto. Claramente hay partes del sistema base, como sendmail y BIND y tcpdump y ssh y tal, que se encuentran en paquetes individuales que se desarrollan por otros. Incluso hay algunos paquetes de GNU como groff, gcc, gzip y tal, que serán inmediatamente reconocibles por cualquier usuario de Linux. Pero son tratados de forma especial, sus versiones se incorporan en el árbol BSD y moldeados para adaptarse al resto del sistema. De hecho, muchos de ellos solían ser sólamente BSD. BIND y Sendmail fueron desarrollados originalmente en Berkeley como parte de BSD, y sólo más tarde se fueron disponibles por separado. Mi sistema FreeBSD tiene la versión gcc 3.2.2 en este momento, pero técnicamente no es gcc 3.2.2. Es un compilador de FreeBSD basado en el gcc 3.2.2. La versión de tcpdump que tengo aquí no es técnicamente 3.7.2, es un tcpdump de FreeBSD basado en tcpdump 3.7.2.

En la mayoría de los casos, por supuesto, la versión FreeBSD es prácticamente identica a la versión del proveedor. Por lo general hay algunos cambios en la configuración de la compilación (Makefiles, etc) para que se puedan construir sin problemas con respecto al resto del sistema, y ​​de vez en cuando hay algunos parches que son necesarios para que se compilen y ejecuten bien. Algunos cambios son más extensos, y algunos son gigantescos. Pero todos son mantenidos juntos y se obliga a que funcionen muy bien juntos. Se garantiza que las piezas de un sistema base de BSD encajan unas con otras por defecto.

La razón principal de que un paquete que es mantenido externamente se iincorpore en el sistema base, es que es de alguna manera, lo suficientemente necesario para el funcionamiento del sistema que es más fácil tenerlo allí por defecto. FreeBSD utiliza actualmente el servidor y cliente ssh de OpenSSH, que están integrados en el sistema base, ya que en los tiempos que corren, un método de seguro de acceso remoto es lo suficientemente necesario para cualquier sistema. gcc y binutils son parte del sistema base, porque … Bueno, son necesarios para construir el sistema base. X, Gnome, PostgreSQL, Apache y parecidos, no son parte del sistema base, y probablemente nunca lo sean, porque no son necesarios para obtener un sistema funcional, no se utilizan en muchos sistemas, no es necesario ese tipo de integración tan estrecha… son muchas las razones.

Es importante destacar que este concepto de “sistema base”, ya que es, según creo, una de las diferencias más visibles en las metodologías de desarrollo entre BSD y Linux. Un distribuidor de Linux puede juntar las piezas y intentar que se ajusten. Incluso puede haber alguna personalización en alguno de los paquetes. Sin embargo, es bastante diferente del tipo de integración intensa realizada por BSD. Sobre todo debido a que muchos de los componentes del sistema base no proceden de otros desarrolladores en primer lugary y a que han pasado toda su vida como una parte del sistema.

Algunas distribuciones de Linux (Debian y Gentoo, por lo que tengo entendido) son mucho más similares a esta división base/ports que otros. Mantienen una especie de línea divisoria entre lo que es necesario para el funcionamiento del sistema  y todos los demás paquetes que es posible que quieras instalar en el sistema. Lo que distingue esto del sistema base de BSD es que la mayoría de los paquetes siguen siendo desarrollados en otras partes, y sólo son incorporados en la distribución Linux. No hay un “Gentoo tftp”, por ejemplo. Es un paquete que procede de otro lugar. Muchos de los paquetes de BSD proceden de otro lugar, pero la mayor parte del “sistema base” no viene de fuera, siempre han sido de BSD.

La sistema base es a veces etiquetado como “minimalista” o “pobre y mediocre”, o cosas por el estilo, sugiriendo que se mantiene de esa forma porque quieren que sea lo más pequeño posible. Pero ese realmente no es el caso. Claro que se quieren todas esas cosas, pero es como es debido a que la intención siempre ha sido que sea lo que su nombre indica, la base de un sistema. Nunca en mi vida he implementado un sistema BSD con sólo lo que está en el sistema base, y probablemente nunca lo haré. Y no conozco a nadie que lo haya hecho. La base sólo tiene que proporcionar las herramientas para que el sistema funcione y permitir actualizar e instalar otros paquetes. Luego instalas lo que necesitas.

Me han comentado que lo que he dicho es más cierto para FreeBSD que para NetBSD o OpenBSD, los cuales tienen criterios mucho más amplios para determinar lo que se debe incluir en el sistema base. Como siempre, deberías mirar los manuales de los sistemas individuales para saber exáctamente dónde va qué.

Ver también:
BSD frente a Linux 1
BSD frente a Linux 2

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s