[docs] (fwd) Re: ÐÏÌÏÖÅÎÉÅ ÆÁÊÌÏ×

Michael Shigorin mike на osdn.org.ua
Чт Мар 3 20:05:18 MSK 2005


	Hi!
Нашёл у Витуса неплохое введение в FHS и около. :)

-- forwarded message --
Message-ID: <d069u3$ms$1 wagner.wagner.home>
From: vitus 45.free.net (Victor Wagner)
Newsgroups: fido7.ru.linux
Subject: Re: положение файлов
Date: Thu, 3 Mar 2005 06:13:56 +0000 (UTC)

George Shuklin <George.Shuklin f1377.n5030.z2.fidonet.org> wrote:
 GS> А, это ты All! Вот что я тебе сказать хотел...

 GS> Подскажите, где должны лежать файлы:

 GS> 1) конфигурации
 GS> 2) кэша
 GS> 3) Исполняемый файл
 GS> 4) файлы документации к программе

 GS> P.S. Утилита user-level для работы с видео/аудио, консольная.

fhs почитать тебе уже рекомендовали. К сожалению, в fhs написано не всё.
Он же рассчитан на авторов дистрибутивов, которые уже собаку съели в
программировании под *nix и призван выработать единую схему,
собирающую все лучшие из выработавшихся за 35 лет истории Unix традиций.

Поэтому по пунктам:

1. Файлы конфигурации
  В многопользовательских системах, к которым относятся все *nix, и
  теоретически (хотя об этом не думают большая часть авторов 3rd-party
  софта) относится семейство Window NT, принято иметь два файла
  конфигурации (вернее, два источника конфигурационой информации, в
  windows это обычно две ветки реестра) для user-level програм.
    а) site-wide, т.е. общая для всех пользователей
	б) per-user - т.е. индивидуальная для каждого пользователя.
  
  site-wide лежит в системной директории конфигурации, которая
  традиционно называется /etc и доступен для редактирования только
  администратору системы. Более менее работоспособная заготовка такого
  файла обычно создается при установке пакета. (см ниже про sysconfdir в
  autoconf)
  
  per-user лежит в домашней директории пользователя, и обычно называется 
  .<имя-софтины>rc.  Он создается либо пользователем вручную (например,
  путем копирования системного и изменения необходимых настроек) либо
  софтиной, если она достаточно интерактивная, чтобы уметь сохранять
  настройки.

2. Файлы кэша опять таки могут быть общими для системы, тогда им место в
/var/cache, либо индивидуальными для пользователя, тогда им место в 
${HOME}/.<имя софтины>/cache. (а индивидальный конфигурационный файл
тоже может переехать внутрь ${HOME}/.<имя-софтины>. Тогда ему уже не
нужна точка в начале - признак скрытого файла)

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

 Дело в том, что ${HOME} может быть смонтирован по сети, а кэшироваться
 на сетевой диск - медленно. Поэтому надо сделать возможность указать
 там что-нибудь вроде /var/tmp/<софтина>-cache-$username

3. Исполняемый файл бывает обычно в /bin, /usr/bin и /usr/local/bin.
Т.е. общая схема ${prefix}/bin. Эти каталоги у пользователя и так в PATH
есть. В /bin твоя софтина скорее всего никогда не попадет, там место
только тому, что необходимо при загрузке системы, до того как смогли
смонтировать /usr.  В /usr/bin она попадет только в том случае, если её
включат в соответствующий дистрибутив и соберут в пакет. Но не стоит
заранее зарекаться, что этого не случиться. В /usr/local/bin она должна
по умолчанию попадать при установке make install.

4. Файлы документации. Для начала, должны быть man-страницы. Они
располагаются в ${prefix}/share/man/<секция>. где секция это man1 для
программ, man5 для форматов файлов (в частности конфигов), man7 для
всего, что не вписывается в остальные категории. В man man описано и все
остальное. man <софтина> настолько естественное действие, что ни в коем
случае нельзя оставлять софтину без хотя бы краткой man страницы. Там
может быть только перечислены основые опции (чтобы опытный пользователь
данной софтины, не имевший с ней дела пару месяцев, вспомнил что к чему)
и дана ссылка на основную документацию в info, pdf или html. Но эта
страница должна быть.

Если есть документация в info, она ставится в ${prefix}/share/info и
прописывается в сообветствующий dir-файл.

Документация в нестандартных форматах (pdf, html, etc) складывается
в ${prefix}/share/doc/<софтина>.

И еще. Есть такая штука как autoconf. Её рекомендуется освоить и
использовать. В частности она позволяет тому, кто собирает софтину явно
задать prefix, и явно задать sysconfdir.

Рекомендуется почитать info autoconf и создать хотя бы минимальный
configure скрипт. Особенно, если программа работает не только под Linux.
Если у тебя есть уже написанный makefile, то совершенно необязательно
при этом связываться с automake. Хотя можно. Если программа требует
всяких не слишком стандартных библиотек, которые должны быть установлены
в системе независимо от неё (из дистрибутива или портов во FreeBSD) -
пригодится.
-- 
Прежде, чем стиснуть зубы, показывайте язык.
				--- С.Е. Лец
-- end of forwarded message --

-- 
Michael Shigorin
EMT.Com.UA


Подробная информация о списке рассылки docs