Стандарт побудови файлової системи Квітень, 12, 2000
Вперед Що де є Назад

4. Структура /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

Коли всі системи більше не потребують жодного з вказаних символічних зв'язків, зв'язки можуть бути видалені, за бажанням.

4.1 /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.

4.2 /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 відповідно. Вони можуть бути символічними посиланнями на фізичне розташування інтерпретаторів оболонок.

4.3 /usr/include: Каталог для стандартних включаємих файлів

Тут повинні знаходитися всі файли заголовків системи загального використання для мов програмування C та C++.

/usr/include - Файли заголовків
|-X11 символічний зв'язок до /usr/X11R6/include/X11
|-bsd	Файли заголовків для сумісності з BSD (коли треба)
|-g++	Файли заголовків GNU C++

4.4 /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).

4.5 /usr/local: Місцева структура

Структура /usr/local введена для використання наглядачем за системою щоб встановлювати програми місцево. Це треба щоб зберегти встановлені програми від перезапису коли поновлюється системна частина. Вона може бути використана для програм та даних, що узагальнюються групою машин але не розміщуються в /usr.

/usr/local -- Місцева структура
|-bin		Місцеві двійкові
|-games		Місцеві двійкові для ігор
|-include	Місцеві файли заголовків для C
|-lib		Місцеві бібліотеки
|-sbin		Місцеві системні двійкові
|-share		Місцева структура для архітектурно незалежних речей
|-src		Місцеві файли вихідних кодів

Цей каталог має бути пустим після початкового встановлення СПФС узгодженої системи. Немає виключень з цього правила окрім каталогів перелічених вище.

Місцево встановлені програми повинні знаходитися в межах /usr/local а не /usr за виключенням випадків коли встановлення виконується для заміщення або поновлення програм в /usr.

Зауважимо, що програми розташовані в / або /usr можуть бути перезаписані під час поновлення системи (хоча ми рекомендуємо щоб комплекти не перезаписували данні в /etc за цих обставин). З цих міркувань, місцеві програми не повинні розміщуватися за межами /usr/local без поважних причин.

4.6 /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.

4.7 /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, коли розповсюджувач бажає розташувати тут якісь данні для ігор.

4.7.1 /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 "словник", повинні розміщуватися тут, коли вони є.

Початок обгрунтування

Сенс розміщення тут тільки переліків слів в тому, що тільки вони є загальними файлами для всіх програм перевірки правопису.

Закінчено обгрунтування

4.7.2 /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.)

Далі наводимо опис кожної секції:

4.7.3. /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 }

4.8 /usr/src: Вихідні тексти

Всі вихідні тексти програм, що не встановлюються місцево, повинні бути в цьому підкаталозі.


Перекладено А. М. Добровольським © 2001 р.
Вперед Що де є Назад

Made with 1st Page 2000 - Professional tools for real minds.