martes, 22 de enero de 2013

Entendiendo la división /bin /sbin /usr/bin /usr/sbin

Esto es un poco de historia y si algo nos enseña la historia es a no dejar nada por sentado. Yo también he dado extensas explicaciones sobre ámbitos, variables de entorno ($PATH particularmente) y normas y al final los argumentos son los correctos, pero lo gracioso de todo esto es que (como no es infrecuente) los padres de la criatura tenía intenciones bastante mas humildes que todos los argumentos posteriores. Les dejo la referencia de la norma, la historia es otra cosa. El original del articulo es de OSnews (y tenía casi un año apilado entre mis cosas) pueden encontrarlo aquí. Pueden ver el perfil del autor aquí y es bastante ácido respecto a algunas cosas, pero no tan ácido como otros ... no se puede quedar bien con todo el mundo. Despacio, pero caminamos ... feliz martes y provecho! 

Por fin algo realmente interesante de que hablar. Si usted ha usado UNIX o cualquiera de sus derivados, probablemente se haya preguntado por qué existen los sistemas de archivo /bin, /sbin, /usr /bin, /usr /sbin. Usted puede incluso razonar de alguna manera la existencia de todos y cada uno de estos directorios. La cosa es, sin embargo - todos estos razonamientos sucedieron después de que se crearon estos directorios. Como resultado, el razonamiento real es muy muy sencillo.
Nunca he ocultado el hecho de que yo detesto absolutamente la estructura de directorios UNIX. Los nombres no son descriptivos y, a menudo son arbitrarios por completo, se requeriría un libro para entenderlos correctamente, y todo el mundo parece tener sus propias ideas acerca de que va a donde. Y caramba, es obvio -, incluso entre las distribuciones de Linux que no hay constancia en que va a donde.

Es una pesadilla total y absoluta que incluso contaminó a mi amado BeOS.

Las soluciones hasta el momento tienden a ser sólo capas sobre capas sobre capas para ocultar el desorden de la estructura de directorios. Mac OS X es especialmente notorio en este sentido - abra un terminal y compruebe la lista de directorios en "/" - es un lío aún mayor de en los UNIX normales. Inicie la ventana de el buscador, y estará viendo una estructura de directorios completamente diferente.

Esto es como comprar un coche hermoso, sólo para darse cuenta que el motor está hecho de pastel y brócoli podrido.

Cuando me quejé de la estructura de directorios UNIX en el pasado, yo (y los que estuvieron de acuerdo conmigo) fueron golpeados siempre con explicaciones sobre por qué tiene sentido, ¿por qué es mejor distribuir cosas a través de /bin, /sbin, /usr/bin, /usr/bin, y así sucesivamente. Lo curioso fue siempre que estas explicaciones no fueron particularmente consistentes entre sí.

La semana pasada, me encontré con un enlace en HackerNews que ofrece una idea interesante sobre cómo llegaron a existir /bin, /sbin, /usr/bin y /usr/sbin. Muchos de ustedes se sorprenderán al saber que no, que no hay un plan divino detrás de toda esta separación.

En 30 de noviembre de 2010, David Collier, se preguntó en la lista de correo BusyBox porque "el comando kill está /bin y killall en /usr/bin". Él "[no] consigue entender lo que podría ser la lógica de todo esto". Rob Landley respondió, y le ofreció una interesante visión de todo esto.

El problema fue que cuando Ken Thompson y Dennis Ritchie actualizaron desde una PDP-7 (en la que se creó UNIX en 1969) a una PDP-11 en 1971, se encontraron no con 1,5 MB de disco duro, sino con dos discos. Sorprendentemente, ahora tenían una cantidad insana de megabytes (3 Mb). El primer disco contenía el sistema operativo, mientras que el segundo contenía todas cosas del usuario. Este segundo disco, con todas las cosas del usuario, se montaba en /usr (/home fue inventado más tarde).
En algún momento, el sistema operativo se hizo demasiado grande para el primer disco, y tuvo que extenderse al segundo disco. Como resultado de ello, Thompson y Ritchie replicaron la estructura de directorios del sistema (/bin, /sbin, /lib, /tmp, etc) en este segundo disco debajo de  /usr. Cuando consiguieron un tercer disco, se movieron todas las cosas de usuario de /usr al tercer disco, montado bajo /home.

Esto les obligó a llegar a una serie de normas, como por ejemplo que un comando como "mount" no se podía instalar en /usr/bin, dado que "moount" era necesario para montar el segundo disco (/usr) en primer lugar.

"La división /bin vs /usr/bin (y todas las demás) es un resultado de esto, un detalle de la implementación de 1970 que se fue arrastrando durante décadas por los burócratas que nunca cuestionaron porque hacían las cosas", explica Landley, " dejó de tener algún sentido antes de que Linux fuera inventado, por múltiples razones. "

A continuación, continúa detallando las razones. En primer lugar, Linux ya tiene un sistema temporal que se encarga del problema 'este archivo es necesario antes de este otro'. En segundo lugar, las bibliotecas compartidas resuelven los problemas causados ​​por la vinculación estática (que era la norma en UNIX en la época en que fue creado). Tercero, los discos duros llegaron a la marca de los 100 MB en el año 1990, de modo que los discos tan pequeños ya no fueron mas un problema.

"Burocracias de estándares como la Fundación Linux (que consumió al Free Standards Group con sus discos de tamaños siempre crecientes años atrás) felizmente documentaron y añadieron este tipo de complejidades sin tratar de entender, en primer lugar, por qué estaban allí", añade "Ken y Dennis filtraron su sistema operativo en el equivalente de /home debido a que el paquete de discos RK05 en el PDP-11 era demasiado pequeño" pasaba silbando sobre sus cabezas. "

En cierto modo, esto se siente como una reivindicación. Todos esos tontos razonamientos que ha hecho las personas - están todos hechos después de los hechos, por razones que no han tenido ningún sentido por lo menos en 30 años - y demonios, que nunca tuvieron sentido en absoluto en el mundo Linux.

Argumentar que la estructura de directorios UNIX es un horrible desastre que contamina un sistema que de otra manera resultaría elegante, es como tratar de convencer a una baldosa de virarse al revés. La gente está tan acostumbrada a sus instintivas respuestas acerca de cómo todo esto se supone que tiene sentido, que a menudo niegan siquiera pensar en rediseñarlo para los tiempos modernos. Dado que el geek es un ser orgulloso y obstinado, hay poca o ninguna posibilidad de que esto vaya a cambiar en mi tiempo de vida.

"Estoy bastante seguro de que la instalación de busybox sólo pone los binarios donde quiera que las otras versiones de estos binarios han ido a parar. No hay mas ninguna razón real para ninguno de ellos. Personalmente, yo creo enlaces simbólicos (symlink) de /bin /sbin y /lib a sus equivalentes en /usr en los sistemas que ocupo", concluye Landley, que actualmente trabaja en Linux empotrado "los chicos empotrados tratan de entender y simplificar ... "