Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.




Стандарт на структуру каталогов файловой системы. (Filesystem Hierarchy Standard). 2 часть

4 Иерархия /usr

4.1 Назначение

Каталог /usr - это второй по важности раздел файловой системы. /usr содержит разделяемые данные, предназначенные только для чтения. Это означает, что /usr может быть доступен с различных FHS-совместимых хостов и права записи в него не должно быть. Любая информация, которая является специфичной для конкретного хоста или может изменяться со временем, должна записываться в другое место.

Большие программные пакеты не должны использовать непосредственно подкаталоги каталога /usr в этой иерархии. (Large software packages must not use a direct subdirectory under the /usr hierarchy.)

4.2 Требования

Следующие каталоги или символические ссылки на каталоги должны присутствовать в /usr.

"/usr"
bin
include
lib
local
sbin
share
"Каталоговоая структура второго уровня"
Большая часть пользовательских команд
Файлы заголовков (header files), включаемые в программы на языке C
Библиотеки
Каталоговая структура Local (пустая непосредственно после инсталляции системы)
Системные утилиты, не являющиеся жизненно-важными (Non-vital system binaries)
Архитектурно-независимые данные

Дерево 4.2.1

4.3 Рекомендации

"/usr"
X11R6
games
lib
src
"Каталоговая структура второго уровня"
X Window System, version 11 release 6 (optional)
Игры и обучающие программы (optional)
Библиотеки для альтернативных форматов (optional)
Исходные коды (optional)

Дерево 4.3.1

Исключение сделано для системы X Window в силу сложившихся традиций и широко распространенной практики.

Могут создаваться следующие символические ссылки на каталоги.

    /usr/spool -> /var/spool
    /usr/tmp -> /var/tmp
    /usr/spool/locks -> /var/lock

Эта возможность обусловлена необходимостью сохранить совместимость со старыми системами до тех пор, пока все реализации не начнут использовать каталоги, размещенные непосредственно в /var.

Если система уже не требует наличия указанных ссылок, они могут быть удалены, если есть такое желание.

4.4 /usr/X11R6 : X Window System, Version 11 Release 6 (optional)

4.4.1 Назначение

Эта каталоговая структура зарезервирована для системы X Window System, version 11 release 6, и относящихся к ней файлов.

Для некоторого упрощения и сохранения совместимости XFree86 с системой X Window для других типов операционных систем должны быть созданы следующие символические ссылки, если только каталог /usr/X11R6 существует:

    /usr/bin/X11 -> /usr/X11R6/bin
    /usr/lib/X11 -> /usr/X11R6/lib/X11
    /usr/include/X11 -> /usr/X11R6/include/X11

В общем случае программное обеспечение не должно использовать перечисленные символические ссылки при инсталляции или в целях управления. Они предназначены только для пользователей. Трудности связаны с версиями выпусков системы X Window -- в переходный период невозможно узнать, какая версия X11 используется.

4.4.2 Рекомендации

Специфичные для каждого хоста данные в каталоге /usr/X11R6/lib/X11 должны использоваться только в демонстрационных целях. Приложения, которым необходима информация о текущей конфигурации хоста, должны искать ее в каталоге /etc/X11, куда могут быть сделаны ссылки из каталога /usr/X11R6/lib.[примечание 17]

[17] Примерами таких конфигурационных файлов могут служить Xconfig, XF86Config или system.twmrc.

4.5 /usr/bin : Большая часть команд пользователя (Most user commands)

4.5.1 Назначение

Это основное место для размещения исполняемых файлов системы.

4.5.2 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны быть присутствовать в /usr/bin, если только соответствующие пакеты установлены в системе:

"/usr/bin"
mh
"Исполняемые файлы, которые не нужны в одно-пользовательском режиме"
Команды для системы обработки почты MH (MH mail handling system) (optional)

Дерево 4.5.2.1

/usr/bin/X11 должен быть символической ссылкой на /usr/X11R6/bin если последний существует.

Следующие файлы или символические ссылки на файлы должны быть размещены в /usr/bin, если только соответствующие пакеты установлены в системе:

perl Язык Perl (The Practical Extraction and Report Language) (optional)
python Интерпретирующий язык Python (optional)
tclsh Оболочка интерпретатора Tcl (optional)
wish Оболочка Tcl/Tk (optional)
expect Программа для организации интерактивного диалога (optional)

Таблица 4.5.2.1

НАЧАЛО ПОЯСНЕНИЙ

Поскольку интерпретаторы скриптов оболочки (вызываемые командой вида #! в первой строке скрипта) не могут полностью полагаться на эту строку, имеет смысл стандартизовать их расположение. Размещение интерпретаторов оболочек Борна и C-shell уже зафиксировано в каталоге /bin, но интерпретаторы языков Perl, Python и Tcl часто размещаются в самых разных местах. В каталоге /usr/bin можно оставить только символические ссылки на действительное местоположение интерпретаторов.

4.6 /usr/include : Каталог для стандартных подключаемых файлов.

4.6.1 Назначение

Это место, где должны быть размещены все системные подключаемые файлы общего пользования для языка программирования C.

4.6.2 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны быть в /usr/include, если соответствующие подсистемы установлены:

"/usr/include"
bsd
"Подключаемые файлы"
BSD-совместимые подключаемые файлы (optional)

Дерево 4.6.2.1

Символическая ссылка /usr/include/X11 должны указывать на /usr/X11R6/include/X11, если только последний существует.

4.7 /usr/lib : Библиотеки для программирования и приложений

4.7.1 Назначение

Каталог /usr/lib содержит объектные файлы, библиотеки и внутренние исполняемые файлы, которые не могут вызываться непосредственно пользователями из командной строки или скриптов оболочки. [примечание 18]

Приложения могут использовать отдельные подкаталоги в /usr/lib. Если приложение использует подкаталог, все архитектурно-зависимые данные, используемые только этим приложением, должны размещаться внутри этого подкаталога. [примечание 19]

4.7.2 Рекомендации

По историческим причинам /usr/lib/sendmail должен быть символической ссылкой на /usr/sbin/sendmail, если последний существует. [примечание 20]

Если /lib/X11 существует, /usr/lib/X11 должен быть символической ссылкой на /lib/X11, либо на тот каталог, на который ссылается /lib/X11.[примечание 21]

[18] Различные архитектурно-зависимые статические файлы и подкаталоги, специфичные для отдельных приложений, должны размещаться в /usr/share.

[19] Например, подкаталог perl5 для модулей и библиотек Perl 5.

[20] Некоторые исполняемые команды, такие как makewhatis и sendmail тоже по традиции размещаются в /usr/lib. makewhatis - это внутренний исполняемый файл и должен размещаться в подкаталоге для бинарных файлов; пользователям предоставляется доступ только к catman. Исполняемые файлы последних версий sendmail теперь по умолчанию располагаются в /usr/sbin. Кроме того, системы, использующие sendmail-совместимые агенты передачи почты, должны делать /usr/sbin/sendmail символической ссылкой к соответствующему исполняемому файлу.

[21] Специфичные для каждого хоста данные для системы X Window не должны размещаться в /usr/lib/X11. Специфичные для хоста конфигурационные файлы, такие как Xconfig или XF86Config должны храниться в /etc/X11. Это требование относится и к таким конфигурационным данным, как system.twmrc, даже если это только символическая ссылка на более общий конфигурационный файл (вероятно в /usr/X11R6/lib/X11).

4.8 /usr/lib : Библиотеки для альтернативных форматов (optional)

4.8.1 Назначение

/usr/lib выполняет ту же роль, что и каталог /usr/lib, но по отношению к альтернативным форматам исполняемых файлов, за исключением того, что символические ссылки /usr/lib/sendmail и /usr/lib/X11 не требуются.[примечание 22]

[22] В случае, когда /usr/lib и /usr/lib есть фактически одно и то же (один из них есть просто символическая ссылка на другой) эти файлы и подкаталоги для отдельных приложений будут существовать.

4.9 /usr/local : Каталог для локального ПО (Local hierarchy)

4.9.1 Назначение

Каталоговая структура /usr/local используется системным администратором в тех случаях, когда он устанавливает программное обеспечение, которое будет использоваться локально в рамках данного хоста. Этот каталог не должен перезаписываться при обновлениях системного программного обеспечения. Он может использоваться для программ и данных, не попавших в каталог /usr, доступ к которым разрешен с других хостов.

Локально устанавливаемое программное обеспечение должно располагаться не в /usr, а в /usr/local если только его установка производится не в целях замены или обновления ПО в /usr. [примечание 23]

4.9.2 Требования

Следующие каталоги или символические ссылки на каталоги должны иметься в /usr/local

"/usr/local"
bin
games
include
lib
man
sbin
share
src
"Каталог для локального ПО"
Локальные исполняемые файлы
Локально установленные игровые приложения
Локальные заголовочные файлы для C
Локальные библиотеки
Локальные он-лайновые руководства
Локальные системные исполняемые файлы
Архитектурно-независимые каталоговая структура для локального ПО
Локально установленные исходные коды

Дерево 4.9.2.1

Никаких каталогов, кроме перечисленных выше, не должно быть в /usr/local после первой установки FHS-совместимой системы.

4.9.3 Рекомендации

Если каталоги /lib или /usr/lib существуют, аналогичные каталоги должны иметься и в /usr/local.

[23] Программное обеспечение, расположенное в / или /usr может быть перезаписано при обновлениях системы (хотя мы рекомендуем, чтобы дистрибутивы не перезаписывали данные в /etc в таких обстоятельствах). По этой причине локально устанавливаемое программное обеспечение не должно размещаться за пределами каталога /usr/local без достаточных на то оснований.

4.10 /usr/sbin : Не обязательные стандартные системные команды

4.10.1 Назначение

Этот каталог содержит любые не обязательные системные команды, используемые исключительно системным администратором. Программы для выполнения задач системного администрирования, которые необходимы для восстановления системы, монтирования /usr, или для других самых важных системных задач, должны размещаться в /sbin.[примечание 24]

[24] Локально устанавливаемые программы для системного администрирования должны размещаться в /usr/local/sbin.

4.11 /usr/share : Архитектурно-независимые данные

4.11.1 Назначение

Каталоговая структура /usr/share предназначена для всех файлов, которые предназначены только для чтения и не зависят от архитектуры. [примечание 25]

Эта каталоговая структура предназначена для того, чтобы хранить файлы, используемые всеми архитектурными платформами данной ОС. Так, например, компьютеры на платформах i386, Alpha и PPC могут поддерживать один общий каталог /usr/share, который монтируется на отдельных компьютерах. Заметим, однако, что /usr/share обычно не предназначен для того, чтобы быть разделяемым различными операционными системами или различными версиями одной и той же ОС (or by different releases of the same OS).

Любая программа или пакет, который содержит или требует данных, не подлежащих модификации, должны хранить эти данные в каталоге /usr/share (или /usr/local/share, если пакет установлен локально). Рекомендуется использовать для этих целей подкаталоги каталога /usr/share.

Данные игровых программ, сохраняемые в /usr/share/games, должны быть чисто статическими данными. Любые модифицируемые файлы, такие как файлы результатов игр (score files), протоколы игр и так далее, должны размещаться в каталоге /var/games.

4.11.2 Требования

Следующие каталоги или символические ссылки на каталоги должны присутствовать в /usr/share

"/usr/share"
man
misc
"Архитектурно-независимые данные"
Он-лайновые руководства
Различные архитектурно-независимые данные

Дерево 4.11.2.1

4.11.3 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны иметься в /usr/share, если соответствующие подсистемы установлены:

"/usr/share"
dict
doc
games
info
locale
nls
sgml
terminfo
tmac
zoneinfo
"Архитектурно-независимые данные"
Словари (optional)
Различная документация (optional)
Файлы статических данных для /usr/games (optional)
Основная директория для системы GNU Info (optional)
Локальная информация (optional)
Каталоги сообщений для поддержки языков (Native language support) (optional)
Данные для SGML и XML (optional)
Каталог базы данных для terminfo (optional)
Макросы для troff, не распространяемые с groff (optional)
Конфигурационные файлы и информация о временной зоне (optional)

Дерево 4.11.3.2

Рекомендуется размещать здесь создаваемые приложениями, архитектурно-независимые каталоги. К такого рода каталогам относятся groff, perl, ghostscript, texmf и kbd (Linux) или syscons (BSD). Они могут, однако, из соображений обратной совместимости, располагаться в /usr/lib, at the distributor's discretion. Подобным же образом в дополнение к каталогу /usr/share/games может создаваться каталог /usr/lib/games если разработчик желает разместить тут какие-то данные для своей игры.

4.11.4 /usr/share/dict : Словари (optional)

4.11.4.1 Назначение

Эта директория содержит списки слов (словари), используемые в системе; обычно в ней находится только файл words для английского языка, который используется утилитой look(1) и различными программами проверки правописания. Файл words может быть ориентирован либо на американский, либо на британский вариант языка (may use either American or British spelling).

НАЧАЛО ПОЯСНЕНИЙ

Причина того, что здесь размещается только один список слов, состоит в том, что это единственный файл, общий для всех программ проверки правописания.

КОНЕЦ ПОЯСНЕНИЙ


4.11.4.2 Рекомендации

Следующие файлы или символические ссылки на файлы должны быть в /usr/share/dict, если соответствующие подсистемы установлены:

words Список слов английского языка (optional)

Таблица 4.11.4.2.1

В системах, где необходим как американский, так и британский английский, можно сделать words ссылкой на /usr/share/dict/american-english или /usr/share/dict/british-english.

Списки слов для других языков могут быть добавлены, используя английское название соответствующего языка, например, /usr/share/dict/french, /usr/share/dict/danish, и так далее. В названиях должен, по возможности, использоваться набор символов ISO 8859, соответствующий данному языку; если возможно, надо использовать набор символов Latin1 (ISO 8859-1) (зачастую это невозможно).

Другие списки слов тоже могут включаться в этот каталог, если они присутствуют.

4.11.5 /usr/share/man : Страницы руководства man

4.11.5.1 Назначение

Настоящий раздел детализирует организацию страниц интерактивного руководства man в системе, включая описание каталогов /usr/share/man и /var/cache/man.

Исходной директорией () для интерактивного руководства man в системе является каталог /usr/share/man. Этот каталог содержит информацию о командах и других данных, размещаемых в файловых системах / и /usr.[примечание 26]

Страницы интерактивного руководства хранятся в каталогах //man

/. Разъяснения того, что имеется в виду под , ,
и даются ниже.

Страницы интерактивного руководства man разбиты на следующие секции:

  • man1: Пользовательские программы
    В этой секции содержатся описания общедоступных команд. Здесь расположена большая часть необходимой пользователям документации к программам.
  • man2: Системные вызовы
    Эта секция описывает все системные вызовы (запросы к ядру на выполнение каких-то операций).
  • man3: Библиотеки функций и подпрограмм
    В секции 3 описываются библиотеки программных процедур, которые не являются прямыми вызовами сервисов ядра. Эта секция, как и секция 2, представляет интерес только для программистов.
  • man4: Специальные файлы
    Секция 4 описывает специальные файлы устройств, функции соответствующих драйверов и средства сетевой поддержки, предоставляемые системой. Обычно в эту секцию включается описание файлов устройств, находящихся в каталоге /dev, и интерфейса ядра для средств поддержки сетевых протоколов.
  • man5: Форматы файлов
    Форматы многих файлов данных документированы в секции 5. Речь идет о различных подключаемых файлах, файлах вывода программ, системных файлах и так далее.
  • man6: Игры
    В эту секцию включена документация к играм, демо и другим тривиальным программам. Разные люди могут иметь разные мнения о том, насколько важно то, что размещено здесь.
  • man7: Разное
    Страницы руководства, которые трудно отнести к какому-то иному разделу, размещаются в секции 7. Здесь вы найдете, к примеру, описание troff и других средств для обработки текста.
  • man8: Системное администрирование
    Программы, используемые системным администратором для выполнения системных операций и поддержки работоспособности системы документированы в этой секции. Некоторые из этих программ бывают полезны иногда и обычным пользователям.

4.11.5.2 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны быть в /usr/share//, если только она не пуста.[примечание 28]

"/"
man1
man2
man3
man4
man5
man6
man7
man8
"Иерархия страниц интерактивного руководства"
Пользовательские программы (optional)
Системные вызовы (optional)
Библиотечные вызовы (optional)
Специальные файлы (optional)
Форматы файлов (optional)
Игры (optional)
Разное (optional)
Системное администрирование (optional)

Дерево 4.11.5.2.3

Компонент

задает секцию руководства.

Некоторые дополнения должны быть сделаны в структуре каталога /usr/share/man для поддержки страниц руководства, написанных на разных (или нескольких) языках. При внесении этих изменений необходимо иметь в виду место расположения и ссылки на эти страницы. Кроме того, приходится учитывать такие особенности языка как различия, обусловленные географическими факторами и различными кодировками.

Способ именования специфичных для языка подкаталогов /usr/share/man основан на Приложении E стандарта POSIX 1003.1, которое задает формат строки, идентифицирующей локаль, -- это общепринятый метод определения особенностей, определяемых культурой той или иной страны. Строка имеет следующий формат:

[_][.][,]

Поле должно браться из стандарта ISO 639 (коды для представления названий языков). Оно должно состоять из двух символов и записываться только в нижнем регистре.

Поле представляет собой, если это возможно, двух-буквенный код из ISO 3166 (спецификация представления названий стран). (a specification of representations of countries). (Большинство людей знакомы с двухбуквенными кодами, используемыми для обозначения стран в почтовых адресах. [примечание 29]). Это поле должно состоять из двух символов, записываемых только в верхнем регистре (заглавными буквами),

Поле представляет собой стандартное описание кодировки (the character set). Если поле представлено только цифрами, эти цифры представляют номер международного стандарта, описывающего набор символов (the number represents the number of the international standard describing the character set). Рекомендуется, если это возможно, чтобы это было числовое представление (в особенности стандартов ISO), не включающее дополнительных символов пунктуации, и чтобы любые символы были в нижнем регистре.

После поля может располагаться параметр , который отделяется запятой. Этот параметр может использоваться для выделения каких-то культурных различий; например, dictionary order versus a more systems-oriented collating order. Настоящий стандарт рекомендует не использовать поле , если только это не является необходимым.

Системы, которые используют только один язык и набор символов для всех страниц интерактивного руководства, могут опустить подстроку и хранить все страницы руководства в . Например, системы, в которых страницы руководства имеются только на английском языке, причем в кодировке ASCII, могут хранить все страницы документации (каталоги man

) прямо в /usr/share/man. (Фактически это традиционное их местоположение.)

Страны, для которых есть общепринятый стандарт кодового набора символов, могут опустить поле , но мы настоятельно рекомендуем включить его, особенно для стран с несколькими конкурирующими стандартами.

Различные примеры:

Язык Территория Набор символов (Character Set) Каталог
Английский -- ASCII /usr/share/man/en
Английский Великобритания ASCII /usr/share/man/en_GB
Английский Соединенные Штаты ASCII /usr/share/man/en_US
Французский Канада ISO 8859-1 /usr/share/man/fr_CA
Французский Франция ISO 8859-1 /usr/share/man/fr_FR
Немецкий Германия ISO 646 /usr/share/man/de_DE.646
Немецкий Германия ISO 6937 /usr/share/man/de_DE.6937
Немецкий Германия ISO 8859-1 /usr/share/man/de_DE.88591
Немецкий Швейцария ISO 646 /usr/share/man/de_CH.646
Японский Япония JIS /usr/share/man/ja_JP.jis
Японский Япония SJIS /usr/share/man/ja_JP.sjis
Японский Япония UJIS (or EUC-J) /usr/share/man/ja_JP.ujis

Таблица 4.11.5.2.2

Аналогичным образом некоторые изменения должны быть сделаны для страниц руководства, которые зависят от архитектуры, таких как описания драйверов устройств или низкоуровневых команд системного администрирования. Таковые должны быть размещены в подкаталогах в соответствующем каталоге man

; например, man-страница для команды ctrlaltdel(8) для архитектуры i386 может быть расположена в /usr/share/man//man8/i386/ctrlaltdel.8.

Страницы руководства для команд и данных, размещаемых в /usr/local, хранятся в /usr/local/man. Страницы руководства для X11R6 хранятся в /usr/X11R6/man. Иерархия страниц руководства в этих каталогах должна иметь ту же самую структуру, что и /usr/share/man.

Секции руководства, отформатированные для вывода командой cat (cat

), тоже могут располагаться в подкаталогах каталога /, но это не обязательно и они не могут заменять страницы руководства в формате nroff.

Нумерация секций от "1" до "8" определена традициями. В общем случае имена файлов для страниц руководства, расположенных в определенной секции, оканчиваются расширением вида .

.

Кроме того, некоторые большие массивы страниц руководства, относящихся к определенным приложениям, могут иметь дополнительный суффикс, добавляемый к имени файла со страницей руководства. Например, для системы обработки почты MH файлы руководства должны иметь дополнительный суффикс mh в имени файла. Все страницы руководства для системы X Window System должны иметь дополнение x к имени файла.

Обычай размещения страниц интерактивного руководства для различных языков в соответствующих подкаталогах каталога /usr/share/man распространяется также на другие структуры каталогов с руководствами, такие как /usr/local/man и /usr/X11R6/man. (Эта часть стандарта применяется также к каталоговой структуре /var/cache/man, рассматриваемой ниже.)

4.11.6 /usr/share/misc : Различные архитектурно-независимые данные

Этот каталог содержит различные архитектурно-независимые файлы, для которых не требуется отдельный подкаталог в /usr/share.

4.11.6.1 Рекомендации

Следующие файлы или символические ссылки на файлы должны иметься в /usr/share/misc, если соответствующие подсистемы установлены.

ascii таблица набора символов ASCII (ASCII character set table) (optional)
magic Список магических чисел (list of magic numbers) для команды file, используемый по умолчанию (optional)
termcap База данных с параметрами терминалов (optional)
termcap.db База данных с параметрами терминалов (optional)

Таблица 4.11.6.1.3

Другие (специфические для отдельных приложений) файлы тоже могут размещаться здесь [примечание 30], но разработчики могут при желании разместить их также в /usr/lib.

4.11.7 /usr/share/sgml : данные для SGML и XML (optional)

4.11.7.1 Назначение

/usr/share/sgml содержит архитектурно-независимые файлы, используемые SGML или XML приложениями, такие как обычные каталоги (ordinary catalogs) (не централизованные, смотри /etc/sgml), DTDs, entities, или таблицы стилей.

4.11.7.2 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны быть в /usr/share/sgml, если соответствующие подсистемы установлены:

"/usr/share/sgml"
docbook
tei
html
mathml
"данные для SGML и XML"
docbook DTD (optional)
tei DTD (optional)
html DTD (optional)
mathml DTD (optional)

Дерево 4.11.7.2.4

Другие файлы, которые не относятся к данному DTD, могут располагаться в их собственных подкаталогах.

[25] Многие их этих данных когда-то размещались в /usr (man, doc) или /usr/lib (dict, terminfo, zoneinfo).

[26] Очевидно, что файлы интерактивного руководства не нужны в корневой файловой системе /, потому что они не требуются во время загрузки системы и не являются необходимыми в чрезвычайных обстоятельствах. [примечание 27]

[27] Действительно.

[28] Например, если /usr/local/man не содержит файлов руководства в секции 4 (Устройства), то /usr/local/man/man4 может не создаваться.

[29] Главным исключением из этого правила является Великобритания (the United Kingdom), которая в ISO 3166 обозначается как `GB', а в большинстве почтовых адресов как `UK'.

[30] Вот некоторые из таких файлов:

  • { airport, birthtoken, eqnchar, getopt, gprof.callg, gprof.flat, inter.phone, ipfw.samp.filters, ipfw.samp.scripts, keycap.pcvt, mail.help, mail.tildehelp, man.template, map3270, mdoc.template, more.help, na.phone, nslookup.help, operator, scsi_modes, sendmail.hf, style, units.lib, vgrindefs, vgrindefs.db, zipcodes }

4.12 /usr/src : Исходные коды (optional)

4.12.1 Назначение

Любые не локальные (Any non-local) исходные коды должны размещаться в этом каталоге.

5 Каталоговая структура /var

5.1 Назначение

Каталог /var содержит файлы с изменяющимися данными. В их число входят каталоги и файлы спулинга, данные об администрировании и логировании, временные файлы.

Некоторые части каталоговой структуры /var не являются разделяемыми между разными системами. К ним относятся /var/log, /var/lock и /var/run. Другие части могут быть разделяемыми, например, /var/mail, /var/cache/man, /var/cache/fonts и /var/spool/news.

Каталоговая структура /var определяется здесь с той целью, чтобы сделать возможным монтирование каталога /usr в режиме только для чтения. Все, что записывается на диск в процессе выполнения системных операций (в противоположность процессам инсталляции и поддержки программного обеспечения), должно размещаться в каталоге /var.

Если /var не может быть размещен в отдельном разделе диска, зачастую предпочтительнее переместить каталог /var из корневого раздела в раздел с каталогом /usr. (Иногда это делается с целью уменьшения размера корневого раздела или когда в корневом разделе остается слишком мало места). Однако, /var нельзя делать ссылкой на /usr потому что это затрудняет разделение /usr и /var и может привести к конфликту имен. Лучше уж сделать /var ссылкой на /usr/var.

Приложения в общем случае не должны добавлять каталоги непосредственно в /var. Такие каталоги могут создаваться только в силу каких-то общесистемных соображений и после консультаций через лист рассылки FHS.

5.2 Требования

Следующие каталоги или символические ссылки на каталоги должны обязательно присутствовать в /var.

"/var"
cache
lib
local
lock
log
opt
run
spool
tmp
"Переменные данные"
Данные из кэшей приложений
Переменная информация о состоянии приложений
Переменные данные для /usr/local
Файлы блокирования устройств и программ
Каталоги и файлы протоколов
Переменные данные для /opt
Данные, относящиеся к запущенным процессам
Данные очередей, создаваемых приложениями
Временные файлы, сохраняемые между перезапусками системы

Дерево 5.2.1

Несколько каталогов "зарезервированы" в том смысле, что они не должны использоваться произвольным образом каким-либо из новых приложений, поскольку это противоречит исторической или локальной практике их использования. Это следующие каталоги:

    /var/backups
    /var/cron
    /var/msgs
    /var/preserve

5.3 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны иметься в /var, если соответствующие системы установлены: 
"/var"
account
crash
games
mail
yp
"Переменные данные"
Протоколы работы процессов (optional)
Дампы памяти при крахе системы (optional)
Временные данные игровых приложений (optional)
User mailbox files (optional)
Файлы базы данных Network Information Service (NIS) (optional)

Tree 5.3.1

5.4 /var/account : Протоколы работы процессов (Process accounting logs) (optional)

5.4.1 Назначение

В этом каталоге хранится текущее состояние протоколов работы процессов и обобщенные данные об использовании процессов (такие, как используемые в некоторых UNIX-подобных операционных системах программами lastcomm и sa).

5.5 /var/cache : Данные кэша приложений

5.5.1 Назначение

Каталог /var/cache предназначен для кэширования данных приложениями. Необходимость такого кэширования возникает при выполнении медленных процессов ввода-вывода или для хранения промежуточных результатов вычислений. Приложения должны иметь возможность регенерировать кэш и извлечь данные из кэша. В отличие от /var/spool, кэшированные файлы могут быть удалены без потери данных. Данные должны сохраняться между сеансами работы приложения и при перезагрузках системы.

Файлы, расположенные в /var/cache, могут удаляться либо самим приложением, либо администратором. Приложение должно всегда иметь возможность продолжить работу после удаления этих файлов вручную (например, при нехватке дискового пространства). Никаких других требований на формат данных в каталоге кэша не накладывается.

НАЧАЛО ПОЯСНЕНИЙ

Существование отдельной директории для кэшируемых данных позволяет системным администраторам устанавливать для этого каталога правила использования и резервного копирования, отличающиеся от правил, устанавливаемых для других каталогов в /var.

КОНЕЦ ПОЯСНЕНИЙ

5.5.2 Рекомендации

"/var/cache"
fonts
man
www

"Каталоги кэширования"
Локально сгенерированные шрифты (optional)
Локально отформатированные страницы руководства (optional)
Кэш данных для WWW proxy (optional)
Кэшируемые данные пакета (optional)

Дерево 5.5.2.1

5.5.3 /var/cache/fonts : Локально сгенерированные шрифты (optional)

5.5.3.1 Назначение

Каталог /var/cache/fonts должен использоваться для хранения динамически создаваемых шрифтов. В частности, все шрифты, автоматически генерируемые программой mktexpk, должны размещаться в соответствующим образом названных подкаталогах каталога /var/cache/fonts. [примечание 31]

5.5.3.2 Рекомендации

Другие динамически создаваемые шрифты могут тоже размещаться в этом дереве, в соответствующим образом названных подкаталогах каталога /var/cache/fonts.

5.5.4 /var/cache/man : Локально отформатированные страницы руководства (optional)

5.5.4.1 Назначение

Этот каталог предусмотрен для сайтов, в которых файловая система /usr монтируется только на чтение, но в которых допускается создание страниц руководства, отформатированных локально. Сайты, в которых /usr монтируется с правом записи (например, когда у системы всего в один пользователь) могут не создавать каталога /var/cache/man, а использовать вместо него каталоги cat

непосредственно в /usr/share/man. Мы рекомендуем, чтобы большинство сайтов использовали вместо этого один из следующих подходов:

  • Хранить предварительно отформатированные версии всех страниц руководства параллельно с не отформатированными версиями.
  • Не допускать кэширования отформатированных страниц на диск, требуя, чтобы форматирование выполнялось при каждом обращении к конкретной странице руководства.
  • Разрешить хранение отформатированных man-страниц в каталоге /var/cache/man.

Структура каталога /var/cache/man должна соответствовать наличию нескольких отдельных деревьев каталогов для страниц руководства и возможности наличия много-языковой поддержки.

В предположении, что не форматированные страницы руководства расположены в каталогах /man//man

, форматированные страницы должны располагаться в каталоге /var/cache/man///cat
, где получается из путем удаления подстроки usr из начала и подстроки share в конце имени каталога. [примечание 32] (Обратите внимание на то, что компонент может отсутствовать.)

Страницы руководства, записанные в /var/cache/man, могут быть перенесены в исходные каталоги структуры man или удалены; подобным же образом отформатированные страницы руководства в каталоге man могут быть удалены, если они не использовались в течение какого-то периода времени.

Если заранее отформатированные страницы руководства поставляются с системой на носителе, допускающем только чтение (например, на CD-ROM), они должны устанавливаться в исходную каталоговую структуру man (то есть в /usr/share/man/cat

). Каталог /var/cache/man зарезервирован как перезаписываемый кэш для отформатированных страниц руководства.

НАЧАЛО ПОЯСНЕНИЙ

Версия 1.2 настоящего стандарта определяла каталог /var/catman для этой структуры. Теперь ее местоположение перенесено в /var/cache для более адекватного отражения динамической природы форматированных страниц руководства. Название каталога было заменено на man, что более соответствует динамической структуре форматированных страниц руководства. Имя каталога было заменено на man, для того, чтобы дать возможность включить в каталоговую структуру каталоги для новых форматов, отличных от "cat", таких, например, как PostScript, HTML или DVI.

КОНЕЦ ПОЯСНЕНИЙ


[31] Настоящий стандарт пока не предусматривает поглощение или замену the TeX Directory Structure (документ, который задает размещение файлов формата TeX и структуру соответствующих каталогов), так что этот документ полезно прочитать. Он размещается по адресу ftp://ctan.tug.org/tex/.

[32] Например, отформатированный вариант страницы /usr/share/man/man1/ls.1 размещается как /var/cache/man/cat1/ls.1, а /usr/X11R6/man//man3/XtClass.3x - как /var/cache/man/X11R6//cat3/XtClass.3x.

5.6 /var/crash : Дампы памяти при крахе системы (optional)

5.6.1 Назначение

Этот каталог предназначен для записи в него содержимого оперативной памяти (дампа памяти) в случае краха системы. На момент выпуска данной версии настоящего стандарта дампы памяти не поддерживаются в системе Linux.

5.7 /var/games : Временные данные игровых приложений (optional)

5.7.1 Назначение

Здесь должны размещаться любые переменные данные, относящиеся к игровым приложениям, размещенным в /usr. Каталог /var/games должен содержать переменные данные, ранее находившиеся в /usr; статические данные, такие как тексты помощи, описания уровней игры и так далее, должны размещаться в других местах, например, в /usr/share/games.

НАЧАЛО ПОЯСНЕНИЙ

Каталог /var/games образует отдельную иерархию, которая теперь не объединена с каталогом /var/lib, как это было в версии 1.2 настоящего стандарта. Такое отделение позволяет применять к этому каталогу отдельные стратегии резервного копирования, задания прав доступа и ограничений на использование дискового пространства, а также разрешать совместное использование этих файлов несколькими хостами и уменьшает беспорядок в /var/lib. Кроме того, /var/games традиционно используется в BSD.

КОНЕЦ ПОЯСНЕНИЙ

5.8 /var/lib : Переменные данные о состоянии системы

5.8.1 Назначение

Эта каталоговая структура содержит информацию о состоянии отдельных приложений или всей системы. Информация о состоянии - это данные, которые программы изменяют в процессе своей работы, относящиеся к одному конкретному хосту. У пользователей нет нужды менять эти файлы для настройки действий пакета.

Информация о состоянии в общем случае используется для сохранения состояния приложения (или группы взаимосвязанных приложений) между двумя запусками или передачи такой информации между двумя одновременно запущенными копиями одного и того же приложения. Информация о состоянии, в общем случае, должна сохраняться после перезагрузки системы, не должна совпадать с протоколируемым выводом программы и данными из очередей (spooled data).

Приложение (или группа взаимосвязанных приложений) должно использовать отдельный подкаталог в /var/lib для своих данных. [примечание 33] Имеется одна обязательная директория, /var/lib/misc, которая предназначена для файлов состояния, которые не требуют отдельного подкаталога; остальные подкаталоги должны присутствовать если соответствующее приложение включено в дистрибутив.

/var/lib/ - местоположение, которое должно использоваться для каждого пакета из дистрибутива. Разные дистрибутивы могут, естественно, разные имена.

5.8.2 Требования

Следующие каталоги или символические ссылки на каталоги должны иметься в /var/lib:

"/var/lib"
misc
"Изменяемая информация о состоянии"
Различные данные о состоянии

Дерево 5.8.2.1

5.8.3 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны иметься в /var/lib, если соответствующие подсистемы установлены:

"/var/lib"



hwclock
xdm
"Переменные данные о состоянии системы"
Резервные копии редактируемых файлов и данные о состоянии редактора (optional)
Файлы поддержки системы управления пакетами (optional)
Данные о состоянии пакетов и подсистем (optional)
Каталог с данными о состоянии hwclock (optional)
Изменяемые данные для менеджера дисплея (optional)

Дерево 5.8.3.2

5.8.4 /var/lib/ : Резервные копии файлов и информация о состоянии редактора (optional)

5.8.4.1 Назначение

Эти каталоги содержат сохраненные файлы, генерируемые при любом неожиданном прекращении работы редактора (такого как elvis, jove, nvi).

Другие редакторы могут не требовать каталога для сохранения файлов на случай краха программы, но могут требовать четко определенного места для хранения другой информации в то время, когда редактор запущен. Такая информация может храниться в подкаталогах каталога /var/lib (например, GNU Emacs размещает файлы блокирования в /var/lib/emacs/lock).

Другие редакторы могут требовать хранения дополнительной информации о состоянии кроме резервных копий файлов и файлов блокирования - такая информация тоже должна размещаться в /var/lib/.

НАЧАЛО ПОЯСНЕНИЙ


Предыдущие версии Linux, также как все поставщики коммерческих версий, используют /var/preserve для vi или его клонов. Однако, каждый редактор использует свой собственный формат для резервных файлов, создаваемых на случай краха программы, так что для каждого редактора нужна отдельная директория.

Специфичные для каждого редактора файлы блокирования обычно сильно отличаются от файлов блокирования устройств или ресурсов, которые хранятся в /var/lock и поэтому хранятся в /var/lib.

КОНЕЦ ПОЯСНЕНИЙ


5.8.5 /var/lib/hwclock : Каталог состояния для hwclock (optional)

5.8.5.1 Назначение

Этот каталог содержит файл /var/lib/hwclock/adjtime.

НАЧАЛО ПОЯСНЕНИЙ


В FHS 2.1 этот файл был /etc/adjtime, но, поскольку hwclock обновляет его, это, очевидно, некорректно.

КОНЕЦ ПОЯСНЕНИЙ


5.8.6 /var/lib/misc : Различные изменяемые данные

5.8.6.1 Назначение

Этот каталог содержит переменные данные, не попавшие в подкаталоги /var/lib. Должны быть предприняты меры по использованию относительно уникальных имен в этом каталоге для того, чтобы избежать конфликта имен. [примечание 34]

[33] Важное различие между настоящей версией этого стандарта и предыдущими состоит в том, что от приложений не требуется использовать подкаталоги каталога /var/lib.

[34] Эта каталоговая структура должна содержать файлы, которые в текущих версиях BSD хранятся в /var/db. В их число входят locate.database и mountdtab, а также базу(ы) символов ядра.

5.9 /var/lock : Файлы блокирования

5.9.1 Назначение

Файлы блокирования должны храниться в каталоговой структуре /var/lock.

Файлы блокирования устройств и других ресурсов, используемые многими приложениями, такие как файлы блокирования последовательных портов, которые ранее находились либо в /usr/spool/locks, либо в /usr/spool/uucp, теперь должны размещаться в /var/lock. Названия этих файлов должны формироваться в соответствии с соглашением, согласно которому используется префикс "LCK..", за которым следует базовое имя устройства. Например, для блокирования /dev/ttyS0 должен создаваться файл "LCK..ttyS0". [примечание 35]

Внутренняя структура таких файлов блокирования должна соответствовать формату, определенному в HDB UUCP. Формат HDB предусматривает сохранение идентификатора процесса (PID) в виде десяти-байтового десятичного числа, за которым следует символ конца строки. Например, если процесс 1230 создает файл блокирования, в этом файле будет записано 11 символов: пробел, пробел, пробел, пробел, пробел, пробел, один, два, три, ноль и конец строки.

[35] Затем все, кто хочет использовать /dev/ttyS0 может прочитать файл блокирования и действовать соответственно (все файлы блокирования в /var/lock должны быть доступны по чтению всем).

5.10 /var/log : Каталоги и файлы протоколов

5.10.1 Назначение

Эта директория содержит разнообразные файлы протоколов. Большая часть протоколов должна записываться в этот каталог или соответствующий подкаталог.

5.10.2 Рекомендации

Следующие файлы или символические ссылки на файлы должны быть в /var/log, если соответствующая подсистема установлена:

lastlog запись о последнем входе в систему каждого пользователя
messages системные сообщения от syslogd
wtmp записи о всех входах и выходах пользователей в систему

Table 5.10.2.1

5.11 /var/mail : Почтовые ящики пользователей (optional)

5.11.1 Назначение

Область спулинга для почты должна размещаться в /var/mail, а имена файлов с сообщениями должны иметь вид . [примечание 36]

Файлы почтовых ящиков в этих каталогах должны хранится в формате стандартных почтовых ящиков UNIX (UNIX mailbox format).

НАЧАЛО ПОЯСНЕНИЙ


Прежнее логическое местоположение этого каталога (/var/spool/mail ) было изменено для того, чтобы привести FHS в соответствие почти со всеми реализациями UNIX. Это изменение важно с точки зрения обеспечения взаимодействия разных систем, поскольку единая область /var/mail часто используется многими хостами, на которых запущены различные реализации UNIX (despite NFS locking issues).

Важно заметить, что нет требования физически переместить область спулинга в указанный каталог. Однако программы и заголовочные файлы должны быть изменены так, чтобы они использовали /var/mail.

КОНЕЦ ПОЯСНЕНИЙ


[36] Заметьте, что /var/mail может быть символической ссылкой на другой каталог.

5.12 /var/opt : Переменные данные для /opt

5.12.1 Назначение

Переменные данные для пакетов, установленных в /opt, должны размещаться в /var/opt/, где - это название структуры каталогов в /opt, в которой хранятся статические данные дополнительного пакета ПО, исключая те случаи, когда размещение явно указано в каком-либо файле из /etc. На внутреннюю структуру каталога /var/opt/ никаких ограничений не накладывается.

НАЧАЛО ПОЯСНЕНИЙ


Смотри пояснения к /opt.

КОНЕЦ ПОЯСНЕНИЙ

5.13 /var/run : Переменные данные времени выполнения (Run-time variable data)

5.13.1 Назначение

Этот каталог содержит данные, описывающие состояние системы с того момента, как она была загружена (This directory contains system information data describing the system since it was booted). Файлы в этом каталоге должны очищаться (удаляться или урезаться соответствующим образом) в начале процесса загрузки системы. Программы могут иметь подкаталоги в каталоге /var/run; это приветствуется для программ, которые используют более одного файла времени выполнения. [примечание 37]

5.13.2 Требования

Внутренний формат для файлов, в которых хранятся идентификаторы процессов (PID), остаются неизменными. Файл должен состоять из идентификатора процесса в коде ASCII, записанном в десятичной нотации, за которым следует символ конца строки. Например, если crond запущен как процесс с номером 25, /var/run/crond.pid будет содержать три символа: два, пять и символ новой строки.

Программы, которые читают PID-файлы, должны быть достаточно гибкими в отношении того, что они воспринимают: то есть они должны игнорировать лишние пробелы, предшествующие ноли, отсутствие завершающего символа новой строки или дополнительные строки в PID-файле. Программы, которые создают PID-файлы, должны использовать простые спецификации, изложенные в предыдущем параграфе.

Файл utmp, в котором хранится информация о том, кто в данный момент использует систему, расположен в этом каталоге.

Программы, которые поддерживают transient UNIX-domain sockets, должны размещать их в этом каталоге.

[37] Непривелигированные пользователи должны быть лишены права записи в каталог /var/run; с точки зрения безопасности предоставление любому пользователю права записи в этот каталог представляет большую угрозу. Файлы с идентификаторами процессов (PID), которые раньше располагались в /etc, должны быть размещены в /var/run. Соглашение об именах этих файлов следующее: .pid. Например, PID-файл для демона crond называется /var/run/crond.pid.

5.14 /var/spool : Очереди данных для приложений

5.14.1 Назначение

Каталог /var/spool содержит данные, которые ожидают какой-то последующей обработки. Данные в /var/spool представляют работы, которые должны быть выполнены в будущем (программой, пользователем или администратором); обычно после обработки эти данные удаляются. [примечание 38]

5.14.2 Рекомендации

Следующие каталоги или символические ссылки на каталоги должны присутствовать в /var/spool, если соответствующие подсистемы установлены:

"/var/spool"
lpd
mqueue
news
rwho
uucp
"Каталоги очередей (спулинга)"
Каталог спулинга для принтера (optional)
Очередь исходящей почты (optional)
Каталог спулинга новостей (optional)
Файлы программы Rwhod (optional)
Каталог спулинга для UUCP (optional)

Дерево 5.14.2.1

5.14.3 /var/spool/lpd : Очередь печати для демона LPD (optional)

5.14.3.1 Назначение

Файл блокировки для lpd, lpd.lock, должен размещаться в /var/spool/lpd. Предполагается, что файл блокировки для каждого принтера размещается в каталоге спулинга для этого конкретного принтера и называется lock.

5.14.3.2 Рекомендации

"/var/spool/lpd"

"Каталог спулинга для принтера"
Очереди печати для конкретного принтера (optional)

Дерево 5.14.3.2.2

5.14.4 /var/spool/rwho : Файлы для rwhod (optional)

5.14.4.1 Назначение

Этот каталог содержит информацию, необходимую команде rwhod для ответов на запросы других машин в локальной сети.

НАЧАЛО ПОЯСНЕНИЙ


Некоторые выпуски BSD используют каталог /var/rwho для хранения этих данных; хотя в других системах такие данные исторически располагались в /var/spool, но в силу того, что они вполне соответствуют понятию данных, находящихся в очереди, новое местоположение их кажется более правильным.

КОНЕЦ ПОЯСНЕНИЙ


[38] Файлы блокировки для UUCP должны размещаться в каталоге /var/lock. Смотри выше секцию о /var/lock.

5.15 /var/tmp : Временные файлы, сохраняемые между перезапусками системы

5.15.1 Назначение

Каталог /var/tmp сделан доступным для программ, которым требуется временные файлы или каталоги, которые должны сохраняться между перезагрузками системы. Следовательно, данные, хранящиеся в /var/tmp, являются более постоянными, чем данные в /tmp.

Файлы и каталоги, размещенные в /var/tmp, не должны удаляться, когда система (пере)загружается. Хотя данные, сохраняемые в /var/tmp, обычно удаляются специфичным для каждого сайта образом, рекомендуется удалять их чаще, чем данные в /tmp.

5.16 /var/yp : Файлы базы данных сетевой информационной системы NIS (optional)

5.16.1 Назначение

Переменные данные для сетевой информационной системы (Network Information Service - NIS), ранее известной как Sun Yellow Pages (YP), должны размещаться в этом каталоге.

НАЧАЛО ПОЯСНЕНИЙ


Каталог /var/yp является стандартным каталогом для данных NIS (YP) и постоянно используются в документации на NIS и в соответствующих системах. [примечание 39]

КОНЕЦ ПОЯСНЕНИЙ


[39] Не путайте NIS с Sun NIS+, которая использует другой каталог, /var/nis.


Обсудить данную тему на нашем форуме "Все о Linux"