Нейл Мэтью - Основы программирования в Linux
Кроме того, могут существовать и другие каталоги, начинающиеся с lib, хотя это и не распространено. Как правило, вы также будете встречать каталог /lost+found (для восстановления файловой системы с помощью программы fsck) и каталог /proc, представляющий собой псевдофайловую систему, обеспечивающую отображение работающей системы. Текущая версия стандарта FHS усиленно поддерживает файловую систему /proc, но ее присутствие не обязательно. Подробности, касающиеся системы /proc, в основном выходят за рамки тем, обсуждаемых в этой книге, хотя мы и привели ее краткий обзор в главе 3.
Далее познакомимся вкратце с назначением каждого из стандартных подкаталогов корневого каталога /.
□ /bin — содержит двоичные файлы, которые могут использовать как пользователь root, так и обычные пользователи и которые важны для функционирования в однопользовательском режиме, когда некоторые другие структуры каталогов могут не монтироваться. Например, обычно здесь можно найти команды ядра cat и ls, как и команду sh.
□ /boot — применяется для файлов, требуемых во время загрузки системы Linux. Часто этот каталог очень мал, менее 10 Мбайт, и часто это отдельный раздел. Это очень удобно в системах на базе PC, в которых есть ограничения BIOS для активного раздела, который должен находиться в первых 2 или 4 Гбайт диска. Имея этот каталог в виде отдельного раздела, вы будете обладать большей гибкостью при размещении остальных разделов диска.
□ /dev — содержит специальные файлы устройств, отображаемые на аппаратные устройства. Например, /dev/had будет отображаться на первый диск IDE.
□ /etc — содержит файлы конфигурации. По традиции здесь можно найти и некоторые двоичные файлы, но это уже не соответствует действительности для большинства современных систем Linux. Самый известный файл в каталоге /etc — это, вероятно, файл passwd, содержащий информацию о пользователях. Другие полезные файлы — fstab с перечнем вариантов монтирования; hosts со списком отображений IP-адресов в имена компьютеров, и каталог httpd, содержащий конфигурацию для сервера Apache.
□ /home — каталог для файлов пользователей. Обычно у каждого пользователя в этом каталоге есть один каталог с именем, совпадающим с регистрационным именем пользователя, и он будет регистрационным каталогом по умолчанию. Например, после регистрации пользователь rick почти наверняка обнаружит себя в каталоге /home/rick.
□ /lib — содержит важные совместно используемые библиотеки и модули ядра, особенно те, которые потребуются во время загрузки системы в однопользовательском режиме.
□ /media — задуман как каталог верхнего уровня для хранения каталогов-точек монтирования для съемных носителей. Цель — иметь возможность удалять ненужные каталоги верхнего уровня, такие как /cdrom и /floppy.
□ /mnt — просто удобное место для монтирования на время дополнительных файловых систем. По сложившейся традиции некоторые дистрибутивы добавляли в каталог /mnt подкаталоги для разных устройств, таких как /cdrom и /floppy, но в настоящее время предпочтительнее размещать их в каталоге /media, вернув /mnt его первоначальное назначение — единое место размещения верхнего уровня для временного монтирования (single top-level temporary mount location).
□ /opt — каталог для поставщиков программного обеспечения, используемый для вставки программных приложений, добавляемых к базовому дистрибутиву. Дистрибутивы не должны пользоваться им для хранения программного обеспечения, которое поставляется как часть стандартного дистрибутива, его следует оставлять для использования сторонними поставщиками. Обычно поставщики будут создавать подкаталоги со своими именами и в них последующие каталоги, такие как /bin и /lib, для файлов, относящихся к их приложению.
ПримечаниеПо принятому соглашению многие пакеты Open Source Linux используют каталог /usr/local для инсталляции.
□ /root — это каталог для файлов, используемых пользователем root. Он не входит в ветвь каталога /home в дереве каталогов, поскольку может не монтироваться в однопользовательском режиме.
□ /sbin — применяется для команд, обычно используемых только системным администратором и требующихся во время загрузки системы в однопользовательском режиме. Здесь обитают команды fsck, halt и swapon.
□ /srv — предназначен для размещения данных местного назначения в режиме "только для чтения", но в настоящее время он широко не используется.
□ /tmp — применяется для временных файлов. Обычно, но не всегда, очищается при загрузке системы.
□ /usr — довольно сложная вспомогательная файловая система, как правило, содержащая все команды системного типа и библиотеки, не требуемые при загрузке системы или в однопользовательском режиме. В каталоге много подкаталогов, таких как /bin, /lib, /X11R6 и /local.
ПримечаниеКогда только появились системы UNIX и Linux, каталог /usr также имел подкаталоги для регистраций, буферизации электронной почты и т.п. Теперь все эти подкаталоги удалены из каталога usr и помещены в каталог var. Преимущество такого подхода в том, что теперь /usr может быть монтируемой файловой системой, ее могут совместно использовать другие системы в сети, и он стал менее чувствителен к повреждениям системы, которые останавливают ее неуправляемым образом, например из-за отказа электропитания.
□ /var — содержит часто меняющиеся данные, такие как файлы буферов печати, файлы регистраций приложений и каталоги буферизации электронной почты.
Что еще почитать о стандартах?
Конечно, существует гораздо больше вещей, которые нужно знать, если вы хотите написать и применять полностью переносимое приложение Linux.
Вы хотите локализовать ваше приложение, так чтобы оно работало на разных языках и с разными региональными установками? Даже если вы ограничены английским языком, остается выбор валюты, разделителей в числах, форматов дат и множество других требующих внимания параметров. Как вы догадываетесь, есть специалисты, работающие над такими стандартами; увидеть их работу можно на Web-сайте http://www.openi18n.org/.
С другой стороны, нужно учитывать, какие параметры, версии библиотек и т.д. установлены в применяемой системе. К счастью, эта проблема становится менее острой во многом благодаря работе по стандартизации, о которой мы рассказали в этой главе, хотя и все еще может оказаться серьезной проблемой. Есть пара средств в проекте GNU, которые оказывают существенную помощь в решении данной проблемы: autoconf и automake. Хотя вы, возможно, не применяли их явно, почти наверняка вы видели пользу от их применения, когда устанавливали программное обеспечение из исходного программного кода и набирали ./configure; make.
Польза от применения этих средств выходит за рамки обсуждаемых в данной книге тем, но вы можете найти дополнительную информацию о них на Web-страницах проекта GNU http://www.gnu.org/software/autoconf/ и http://www.gnu.org/software/automake.
Резюме
В этой заключительной главе мы кратко рассмотрели некоторые из множества стандартов, помогающих сделать более легким программирование на платформе Linux и обеспечивающих соответствие разных дистрибутивов Linux некоторым базовым стандартам. Соответствие стандартам облегчает жизнь всем нам, программистам и пользователям, и мы настоятельно рекомендуем вам применять стандарты и поощрять их использование другими людьми.
Примечания
1
Здесь и далее для удобства читателей комментарии переведены на русский язык. Возможность ввода знаков кириллицы зависит от выбранного дистрибутива Linux и текстового редактора. — Пер.