Независимо от того, какая организация выбрана, некоторые вещи будут легче, а некоторые сложнее.
Организация файлов по типам, пути Unix (Into bin
, man
, lib/python
, ...), делает его легче использовать файлы. Если вы хотите запустить команду, вы знаете, где ее найти, независимо от того, какой пакет ее предоставляет. Если вы хотите искать документацию, все это в одном месте. Если какая-то программа предоставляет модуль подсветки синтаксиса Vim, функцию завершения zsh или привязки Python, соответствующий файл будет находиться там, где vim / zsh / python сможет его найти.
Unix также организует файлы по шаблонам использования. Вводятся файлы конфигурации, файлы /etc
, которые не меняются при нормальной работе /usr
, и файлы, которые изменяются автоматически /var
. Пользовательские данные идут под /home
. Это очень полезно для управления конфигурацией (управляйте тем, что входит в /etc
плюс список установленных пакетов). Также полезно определить стратегии резервного копирования: что входит /etc
и /home
что критически важно, тогда как то, что входит, /usr
может быть легко загружено снова.
Основная стоимость способа Unix заключается в том, что установка части программного обеспечения распространяется по многим каталогам. Однако современные Unix-системы в любом случае имеют менеджеры пакетов; Управление файлами во многих каталогах - далеко не самая сложная вещь, которую они делают (отслеживание зависимостей очень полезно и сложнее).
Сравните это с Windows. Windows начиналась без управления пакетами, и каждое приложение где-то создавало свой собственный каталог. Все файлы обычно находятся внутри этого каталога: программы, статические данные, пользовательские данные… За исключением иногда библиотек, программы которых попадают в общий системный каталог без учета конфликтов («ад DLL»). Со временем Windows стала многопользовательской, что потребовало отделения пользовательских каталогов от системных каталогов. Windows также создала центральное место для файлов конфигурации (Unix /etc
) и некоторых системных данных (Unix's)./var
), реестр. Это скорее исторический артефакт, во многом из-за отсутствия управления пакетами и ранней истории однопользовательской системы. Подход Windows имеет много ограничений: он не позволяет программным пакетам взаимодействовать легко. Например, большинство установленных программ не попадают на путь поиска команд по умолчанию, поэтому они плохо взаимодействуют с любой формой сценариев. Установщики, как правило, предоставляют значок меню в качестве особого случая, который помещается в отдельный системный каталог (как Unix!).
Ограничение подхода Unix состоит в том, что он не позволяет легко сосуществовать нескольким версиям пакета, что особенно проблематично во время обновления пакета. Чтобы получить лучшее из обоих миров, можно распаковать каждый пакет в его собственный каталог ( /opt
структуру) и создать леса символических ссылок из каталогов пакетов в /usr
структуру. Это то, что делает программное обеспечение, как Stow .
Таким образом, подход Unix упрощает использование файлов, управление файлами и позволяет пакетам взаимодействовать; это требует программного обеспечения для управления пакетами, но это все равно желательно. Подход Windows облегчает управление пакетами вручную, но для получения полезной функциональности необходимо повернуть в сторону модели Unix.