Стандарт побудови файлової системи | Квітень, 12, 2000 | |
Вперед | Що де є | Назад |
/usr
/usr
- друга найважливіша частина файлової системи. /usr
- загальні данні "тільки на читання". Це значить, що /usr
може бути узагальнено між різними машинами, що узгоджені з СПФС, і в ньому треба заборонити запис. Будьякі данні, індивідуальні для певної системи або змінювані в часі, повинні зберігатися в інших місцях.
Ніякі великі програмні пакети не повинні використовувати підкаталоги першого рівня в структурі /usr
. Виключення зроблено лише для X Window System , бо це склалося історично та є широко використаною практикою. Цей розділ стандарту визначає місця для більшості таких пакетів.
/usr
-- Вторинна структура
|-X11 X Window System, version 11 release 6
|-bin Більшість команд користувача
|-games Ігрові та навчальні програми
|-include Файли заголовків потрібні програмам на С
|-lib Бібліотеки
|-local Місцева структура (пуста після встановлення)
|-sbin Другорядні системні програми
|-share Данні, що не залежать від архітектури
|-src Вихідні тексти програм
Повинні існувати наступні символічні зв'язки. Це робиться для збереження сумісності з старішими системами доки всі не перейдуть на використання структури /var
.
/usr/spool -> /var/spool
/usr/tmp -> /var/tmp
/usr/spool/locks -> /var/lock
Коли всі системи більше не потребують жодного з вказаних символічних зв'язків, зв'язки можуть бути видалені, за бажанням.
/usr/X11R6
: X Window System, Version 11 Release 6Ця структура зарезервована для X Window System 11 версії 6 реалізіції та відповідповідних файлів.
Для спрощення життя та щоб зробити XFree86 більш сумісним з X Window System на інших системах треба мати наступні символічні посилання:
/usr/bin/X11 -> /usr/X11R6/bin
/usr/lib/X11 -> /usr/X11R6/lib/X11
/usr/include/X11 -> /usr/X11R6/include/X11
Загалом, програми не повинні встановлюватися або керуватися через ці символічні зв'язки. Вони вводяться для використання лише користувачами. Складнощі пов'язані з конкретною реалізацією версії X Window System - в перехідний період неможливо знати яка реалізація X11 використовується.
Файли конкретної системи в /usr/X11R6/lib/X11
треба розуміти як приклади. Програми, що потребують інформації про конкретну систему (з таких файлів як Xconfig, XF86config
або system.twmrc
) повинні звертатися до файлу налаштувань в /etc/X11
який може бути пов'язаним з файлом в /usr/X11R6/lib
.
/usr/bin
: Більшість команд користувачаЦе головний каталог для виконуваних команд в системі.
/usr/bin
- Команди, що не потрібні в режимі одного користувача |-mh
Команди для системи обробки пошти MH |-X11
Символічне посилання на/usr/X11R6/bin
Оскільки інтерпретатори сценаріїв оболонок (що викликаються в першому рядку сценарію через #!<path>
) не можуть покладатися на шлях, вигідно стандартизувати їх розташування. Інтерпретатори оболонок Bourne та C вже зафіксовані в /bin
, але Perl, Python та Tcl часто розміщуються в багатьох різних місцях.
/usr/bin/perl
, /usr/bin/python
та /usr/bin/tcl
повинні посилатися на інтерпретатори оболонок perl
, python
та tcl
відповідно. Вони можуть бути символічними посиланнями на фізичне розташування інтерпретаторів оболонок.
/usr/include
: Каталог для стандартних включаємих файлів Тут повинні знаходитися всі файли заголовків системи загального використання для мов програмування C та C++.
/usr/include
- Файли заголовків |-X11
символічний зв'язок до/usr/X11R6/include/X11
|-bsd
Файли заголовків для сумісності з BSD (коли треба) |-g++
Файли заголовків GNU C++
/usr/lib
: Бібліотеки для програмування та пакетів/usr/lib
вміщує об'єктні фали, бібліотеки та внутрішні двійкові, що не використовуються безпосередньо користувачами або сценаріями оболонок.
Програма може використовувати підкаталоги в межах /usr/lib
. Коли програма використовує підкаталог, всі архітектурно залежні данні, що їх використовує лише програма, повинні знаходитися в цьому підкаталозі. Наприклад, perl5
підкаталог для модулів та бібліотек Perl 5.
Інші архітектурно незалежні постійні файли та підкаталоги, що відносятся до певної програми, повинні знаходитися в /usr/share
.
Деякі виконувані команди, такі як makewhatis
та sendmail
, також традиційно розміщують в /usr/lib
. makewhatis
- внутрішній двійковий та повинен знаходитися в каталозі для двійкових; користувачі отримують доступ тільки catman
. Нові двійкові sendmail
зараз стандартно розміщують в /usr/sbin
; символічний зв'язок повинен залишатися з /usr/lib
. Додатково, системи, що використовують sendmail
сумісний агент пересилки пошти повинні забезпечувати /usr/sbin/sendmail
як символічний зв'язок з відповідним виконуваним файлом.
Коли встановлено X, треба мати символічний зв'язок до lib/X11
каталогу стандартного X комплекту.
Зауважимо: В /usr/lib/X11
не повинно зберігатися особистих данних системи для X Window System. Такі файли, як Xconfig
або XF86Config
повинні зберігатися в /etc/X11
. Тут повинні зберігатися файли налаштувань, такі як system.twmrc
, навіть коли це лише символічне посилання на більш загальні файли налаштувань (швидше за все в/usr/X11R6/lib/X11
).
/usr/local
: Місцева структураСтруктура /usr/local
введена для використання наглядачем за системою щоб встановлювати програми місцево. Це треба щоб зберегти встановлені програми від перезапису коли поновлюється системна частина. Вона може бути використана для програм та даних, що узагальнюються групою машин але не розміщуються в /usr
.
/usr/local
-- Місцева структура |-bin
Місцеві двійкові |-games
Місцеві двійкові для ігор |-include
Місцеві файли заголовків для C |-lib
Місцеві бібліотеки |-sbin
Місцеві системні двійкові |-share
Місцева структура для архітектурно незалежних речей |-src
Місцеві файли вихідних кодів
Цей каталог має бути пустим після початкового встановлення СПФС узгодженої системи. Немає виключень з цього правила окрім каталогів перелічених вище.
Місцево встановлені програми повинні знаходитися в межах /usr/local
а не /usr
за виключенням випадків коли встановлення виконується для заміщення або поновлення програм в /usr
.
Зауважимо, що програми розташовані в /
або /usr
можуть бути перезаписані під час поновлення системи (хоча ми рекомендуємо щоб комплекти не перезаписували данні в /etc
за цих обставин). З цих міркувань, місцеві програми не повинні розміщуватися за межами /usr/local
без поважних причин.
/usr/sbin
: Не критичні системні двійковіВ цьому каталозі зберігаються будьякі не критичні двійкові, що їх використовує тільки наглядач за системою. Натомість, програми керування системою, що потрібні для відновлення, лагодження системи, монтування /usr
або інші критичні функції повинні знаходитися в /sbin
.
Зазвичай, в /usr/sbin
знаходяться демони мережи та інші не критичні інструменти нагляду й двійкові для не критичних обслуговуючих програм.
Такі обслуговуючі програми використовуються коли виконується вхід в стан System V відомий як "рівень виконання 2 (run level 2)" (стан багатьох користувачів (multi-user mode)) та "рівень виконання 3 (run level 3)" (стан підтримки мережи (networked state)) або стан BSD відомий як "режим багатьох користувачів (multi-user mode)". В цій точці система робить служби доступними для користувачів (наприклад, підтримка друку) та інших машин (наприклад, надання МФС(NFS) доступу)
Місцево встановлені програми для нагляду за системою повинні знаходитися в /usr/local/sbin
.
/usr/share
: Архітектурно незалежні данні/usr/share
-- Архітектурно незалежні данні |-dict
Перелік слів |-doc
Різна документація |-games
Постійні данні для/usr/games
|-info
Головний каталог інформаційної системи GNU |-locale
Інформація пов'язана з locale |-man
Інтерактивна допомога |-nls
Внутрішня підтримка мов |-misc
Інші архітектурно незалежні данні |-terminfo
Каталоги для баз даннихterminfo
|-tmac
troff
макроси, що не розповсюджуються зgroff
|-zoneinfo
Налаштунки та відомості відносно часових поясів
Структура /usr/share
призначена для всіх файлів архітектурно незалежних данних, що доступні тільки на читання. Велика кількість цих данних раніше "жили" в /usr(man, doc)
або в /usr/lib(dict, terminfo, zoneinfo)
. Ця структура може бути використана спільно всіма архітектурними платформами для цих ОС; наприклад, машини з i386, Alpha та PPC архітектурами можуть звертатися до одного каталогу /usr/share
, що монтується централізовано. Зауважимо, що, між тим, не очікується, що /usr/share
буде узагальнюватися між різними ОС або різними версіями одної ОС.
Коли програма чи пакет потребують данних, що не будуть змінюватися, то такі данні повинні зберігатися в /usr/share
(або /usr/local/share
, коли встановлюється місцево). Рекомендовано щоб для цього використовувалися підкаталоги в межах /usr/share
.
Зауважимо, що зараз в Linux використовуються файли баз данних формату DBM. Оскільки це не архітектурно незалежно, вони доступні в /usr/share
і в майбутньому передбачається перехід на архітектурно незалежний формат DB 2.0.
Ігрові данні, що зберігаються в /usr/share/games
, повинні бути виключно постійними. Будьякі змінні файли на зразок файлів рахунку, протокол гри і таке інше повинні знаходитися в /var/games
.
Рекомендуємо зберігати тут власні архітектурно незалежні каталоги програм. Такі каталоги включають groff, perl, ghostscript, texmf,
та kbd
(Linux) або syscons
(BSD). Вони, проте, можуть бути в /usr/lib
для зворотної сумісності за бажанням розповсюджувача. Подібно, структура /usr/lib/games
може бути використана додатково до /usr/share/games
, коли розповсюджувач бажає розташувати тут якісь данні для ігор.
/usr/share/dict
: Списки слівФайли рекомендовані для /usr/share/dict
:
{ words }
Традиційно, цей каталог містив тільки англійскі words
файли, що їх використовує look(1)
та різнв програми превірки правопису. words
може використовувати або американський або британський правопис. Коли потрібні обидва, можливо зв'язування words
з /usr/share/dict/american-english
або /usr/share/dict/british-english
.
Списки слів для інших мов можуть додаватися з використанням англійської назви для потрібної мови, як то /usr/share/dict/russia
або /usr/share/dict/ukrainian
і т.ін. Це повинно бути зроблено з використанням, коли це можливо, набору символів ISO 8859, який відповідає потрібній мові; коли можливо, треба використовувати Latin 1 (ISO 8859-1) набір символів (частіше це не можливо).
Інші переліки слів, такі як web2
"словник", повинні розміщуватися тут, коли вони є.
Початок обгрунтування
Сенс розміщення тут тільки переліків слів в тому, що тільки вони є загальними файлами для всіх програм перевірки правопису.
Закінчено обгрунтування
/usr/share/man
: Сторінки допомогиВ цьому розділі пояснюється організація сторінок допомоги в системі, включаючи /usr/share/man
. Також дивись розділ про /var/cache/man
.
Сторінки допомоги зберігаються в <mandir>/<locale>/man<section>/<arch>
. Пояснення, що таке <mandir>, <locale>, <section> та <arch>
надано нижче.
<mandir>/<locale>
- Структура сторінок допомоги
|- man1
Програми користувача
|- man2
Системні викликти
|- man3
Бібліотечні виклики
|- man4
Спеціальні файли
|- man5
Формати файлів
|- man6
Ігри
|- man7
Додаткова інформація
|- man8
Супровід системи
Головною структурою <mandir>
в системі є /usr/share/man
. В /usr/share/man
знаходяться відомості про команди та данні в файлових системах /
та /usr
. Вочевидь, сторінок допомоги нема в /
бо вони не потрібні під час завантаження, не потрібні вони і у надзвичайних ситуаціях.
Компонент <section>
описує розділ документації.
Повинна існувати можливість підтримки в структурі /usr/share/man
сторінок допомоги, що написані різними або багатьма мовами. Така можливість має враховувати зберігання та звертання до цих сторінок. Показник відповідності має включати мову (з урахуванням географічно викликаних розбіжностей) та кодовий набір символів.
Іменування мовних підкаталогів в /usr/share/man
базується на Додатку Е до стандарту POSIX 1003.1, що описує рядок визначення locale - найбільш широко застосовуємий метод опису культурного середовища. Рядок locale
такий:
<language>[_<territory>][.<character-set>][,<version>]
Поле<language>
треба брати з ISO 639 (код для представлення назв мов). Воно має бути з двох символів та лише маленькими літерами.
Поле <territory>
має бути дволітерним кодом з ISO 3166 (стандарт на коди країни), коли це можливо. (Більшість людей добре знайома з такими кодами, що використовуються в адресах електронної пошти1). Воно повинно бути з двох символів та виключно прописними літерами.
Поле <character-set>
має співпадати з стандартним визначенням для кодового набору. Коли поле <character-set>
є виключно числовим, число являє собою число з міжнародного стандарту опису кодового набору. Рекомендується, щоб, коли можливо, це було числове представлення (бажано за стандартом ISO) без додаткових знаків пунктуації та лише без маленьких літер.
Параметр, що визначає версію (<version>
) профілю, може бути розташованим після поля <character-set>
та відокремлений комою. Це може бути використано для розмежування між різними культурними потребами, наприклад, словниковий порядок проти більш системно орієнтованого порядку об'єднання. Цей стандарт не рекомендує використання поля <version>
без нагальної потреби.
На системі де використовується лише одна мова та набір кодів для всіх сторінок допомоги, може не використовувати підрядок <locale>
та зберігати всі сторінки допомоги в <mandir>
. Наприклад, системи, що мають сторінки допомоги лише аглійською мовою у ASCII кодах, можуть зберігати сторінки допомоги (каталоги man<section>
) прямо в /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_СН.646 |
Украінська | Україна | KOI8-U |
/usr/share/man/uk_UA.koi8u |
Украінська | Україна | сp1251 |
/usr/share/man/uk_UA.cp1251 |
Російська | Україна | KOI8-R |
/usr/share/man/ru_UA.koi8r |
Так само треба мати можливість зберігати архітектурно залежні сторінки допомоги, такі як документація на драйвери пристроїв або команди догляду за системою низького рівня. Це має зберігатися в каталозі <arch>
у відповідному каталозі man<section>
; наприклад, сторінка допомоги для команди ctrlaltdel(8)
на і386 повинна знаходитися в:
/usr/share/man/<locale>/man8/i386/ctrlaltdel.8
Сторінки допомоги для команд та данних з /usr/local
зберігаються в /usr/local/man
. Сторінки допомоги для X11R6 зберігаються в /usr/X11R6/man
. Всі структури сторінок допомоги, що є в системі, повинні мати таку саму будову як /usr/share/man
. Пусті каталоги можуть бути відсутні в цій структурі. Наприклад, коли в /us/local/man
немає сторінок допомоги в секції 4 (пристрої), то можна не стрворювати /usr/local/man/man4
.
Секції форматованих сторінок допомоги (cat<section>
), що містять відформатовані записи сторінок допомоги, також знаходяться в межах підкаталогів <mandir>/<locale>
, але не є обов'язковими і можуть не розповсюджуватися замість вихідних сторінок допомоги в nroff
форматі.
Традиційно визначена нумерація секцій від "1" до "8". Як правило, назва файлу для сторінок допомоги, що розміщуються в певній секції, закінчується на .<section>
.
Крім того, деякі великі об'єми сторінок допомоги до певних програмних пакетів мають додатковий суфікс, що додається до назви файлу. Наприклад, сторінки допомоги до системи маніпулювання поштою МН можуть мати mh
додаток до кожного файлу його сторінок допомоги. Всі сторінки допомоги до системи X Window можуть мати х
додаток до назви файлу.
Практика розміщення сторінок допомоги різними мовами у відповідних підкаталогах /usr/share/man
може також бути застосована в інших структурах сторінок допомоги, таких як: /usr/local/man
та /usr/X11R6/man
. (Ця частина стандарту також діє далі в розділі про додаткову структуру /var/cache/man
.)
Далі наводимо опис кожної секції:
man1:
Програми користувачаman2:
Системні викликиman3:
Бібліотечні функціі та подпрограмиman4:
Спеціальні файли/dev
та інтерфейс ядра до підтримки протоколу мережи.
man5:
Формати файлівman6:
Ігриman7:
Все, що не війшло в інші розділи
man8:
Супровід системи
/usr/share/misc
: Інші архітектурно незалежні данніВ цьому каталозі зберігаються інші архітектурно незалежні файли, що не потребують окремих підкаталогів під /usr/share
. Для них потрібен каталог у /usr/share
.
Наступні файли, коли вони є в системі, повинні бути в /usr/share/misc
:
{ ascii, magic, termcap, termcap.df }
Інші (що відносятся до певних програм) файли можуть з'являтися тут, але розповсюджувач може розмістити їх у /usr/lib
, за бажанням. До таких файлів належать:
{ 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 }
/usr/src
: Вихідні текстиВсі вихідні тексти програм, що не встановлюються місцево, повинні бути в цьому підкаталозі.
Перекладено А. М. Добровольським © 2001 р.
Вперед | Що де є | Назад |