2023-02-18 17:58:52
Пару мыслей о структуре директорий в современных GNU/Linux
У нас есть стандарт FHS (Filesystem Hierarchy Standard), который унифицирует расположение необходимых файлов в нужных директориях, используется во всяких разных UNIX-системах, в т.ч. и во многих дистрибутивах GNU/Linux. Ну и директории там тоже описаны.
Согласно этому стандарту, помимо всех остальных каталогов, у нас есть каталоги /bin, /sbin (для хранения двоичных бинарных файлов программ) и /lib для хранения файлов библиотек. В этих директориях, в общем, содержатся файлы, необходимые для работы системы. По крайней мере, обеспечивающие ей хотя бы загрузку. Есть каталог /usr, который также содержит /bin, /sbin и /lib, эти подкаталоги также содержат файлы программ и библиотек, но, как правило, тех программ, которые системными не являются. Эти программы, как правило, устанавливаются либо пользователем, либо сборщиком дистрибутива GNU/Linux.
Вообще в FHS прописано, что файлы в каталогах /{bin,sbin,lib} предназначены для всех ситуаций, в том числе и тех, когда система загружена в
однопользовательском режиме, а в /usr/{bin,sbin,lib} - для той ситуации, когда система загружена в обычном режиме.
Но современные дистрибутивы GNU/Linux почему-то убирают эти самые /{bin,sbin,lib}, заменяя их ссылками на соответствующие каталоги в /usr. В результате, в /usr/bin, /usr/sbin, /usr/lib у нас содержатся вообще все программы: и те, которые предназначены для многопользовательского режима, и те, которые предназначены и для того, и для однопользовательского режима системы.
Когда я собирал LFS (в которой также всё заменили на ссылки) я затёр /bin. Это произошло по чистой случайности, когда я тестировал написанный буквально на коленке пакетный менеджер (а точнее - просто прогу для установки и удаления ПО, не более). В результате пришлось пересобирать систему, ибо считай достаточно важную часть я просто удалил. В случае раздельной структуры каталогов (будем называть её так) мне было бы проще её восстановить.
Однако у такой "современной" структуры каталогов есть плюс - собирать ПО несколько проще. Ибо собранное из исходного кода ПО, даже если оно
системное, почему-то устанавливается в /usr/*, что не является правильным, поэтому приходится иногда перемещать кучу файлов в ту или иную директорию в /. В случае такой вот современной совмещённой структуры этих действий выполнять не требуется. Однако нужно использовать систему (и экспериментировать с ней) чуть осторожнее.
Второй причиной использования такой структуры является... systemd! По заявлению кого-то из разработчиков этот инит не совсем корректно в некоторых случаях работает в системах, где /{bin,lib,sbin} - отдельные каталоги, а не ссылки. Поэтому в скором времени от раздельной структуры каталогов в systemd планируют отказаться. Одно время при сборке он даже выводил сообщение об этом. Знаете, несмотря на все плюсы systemd, отношение его разработчиков к ошибкам и странностям поистине странное.
#МыслиВслух
105 viewsМихаил, 14:58