No importa qué organización se elija, hará que algunas cosas sean más fáciles y otras más difíciles.
Organización de los archivos por tipo, la forma en Unix (a bin
, man
, lib/python
, ...), hace que sea más fácil de usar archivos. Si desea ejecutar un comando, sabe dónde encontrarlo, sin importar qué paquete lo proporcione. Si desea buscar en la documentación, todo está en un solo lugar. Si algún programa proporciona un módulo de resaltado de sintaxis de Vim, una función de finalización de zsh o enlaces de Python, el archivo relevante estará en un lugar donde vim / zsh / python pueda encontrarlo.
Unix también organiza archivos por patrones de uso. Los archivos de configuración entran /etc
, los archivos que no cambian en la operación normal entran /usr
y los archivos que cambian entran automáticamente /var
. Los datos del usuario quedan debajo /home
. Esto es muy útil para la administración de la configuración (administre lo que hay /etc
más la lista de paquetes instalados). También es útil para definir estrategias de copia de seguridad: lo que hay /etc
y /home
es de importancia crítica, mientras que lo que hay dentro /usr
se puede descargar fácilmente nuevamente.
El costo principal de la manera de Unix es que la instalación de una pieza de software se distribuye en muchos directorios. Sin embargo, los sistemas Unix modernos tienen administradores de paquetes de todos modos; administrar archivos en muchos directorios no es, con mucho, lo más complejo que hacen (rastrear dependencias es muy útil y más difícil).
Contrasta eso con Windows. Windows comenzó sin administración de paquetes, y cada aplicación creó su propio directorio en alguna parte. Todos los archivos normalmente estarían dentro de ese directorio: programas, datos estáticos, datos de usuario, ... Excepto a veces para las bibliotecas, qué programas caerían en un directorio de sistema común sin tener en cuenta los conflictos ("infierno de DLL"). Con el tiempo, Windows se convirtió en multiusuario, requiriendo la separación de los directorios de usuarios de los directorios del sistema. Windows también creó un lugar central para los archivos de configuración (Unix /etc
) y algunos datos del sistema (Unix's/var
), el registro. Esto es más un artefacto histórico en gran parte debido a la falta de administración de paquetes y la historia temprana como un sistema de usuario único. El enfoque de Windows tiene muchas limitaciones: no permite que los paquetes de software interactúen fácilmente. Por ejemplo, la mayoría del software instalado no termina en la ruta de búsqueda de comandos predeterminada, por lo que interactúa mal con cualquier forma de scripting. Los instaladores generalmente proporcionan un ícono de menú como un caso especial: se coloca en un directorio del sistema separado (¡a la Unix!).
Una limitación del enfoque de Unix es que no permite fácilmente la coexistencia de múltiples versiones de un paquete, lo cual es especialmente problemático mientras se actualiza el paquete. Una forma de obtener lo mejor de ambos mundos sería desempaquetar cada paquete en su propio directorio (una /opt
estructura) y crear bosques de enlaces simbólicos desde los directorios del paquete a una /usr
estructura. Esto es lo que hace el software como stow .
En resumen, el enfoque de Unix hace que sea más fácil usar archivos, administrar archivos y permitir que los paquetes interactúen; requiere un software de administración de paquetes, pero eso es deseable de todos modos. El enfoque de Windows facilita la administración manual de paquetes, pero tiene que desviarse hacia el modelo Unix para obtener una funcionalidad útil.