□ /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 некоторым базовым стандартам. Соответствие стандартам облегчает жизнь всем нам, программистам и пользователям, и мы настоятельно рекомендуем вам применять стандарты и поощрять их использование другими людьми.