Сборка пакетов/Соглашение по стилю RPM-пакетов/Структура файловой системы

Перейти к: навигация, поиск
4. Структура файловой системы

Назад

Далее



4. Структура файловой системы


SUSE Linux полностью совместим с LSB (Linux Standard Base) и следует стандарту FHS (Filesystem Hierarchy Standard) версии 2.3, опубликованному в http://www.pathname.com/fhs/. Данная секция просто определяет некторые правила более строго и выделяет некторую важную информацию. За более подробной информацией обращайтесь к стандарту.

/opt зарезервировано для установки пакетов дополнительного ПО. Многие пакеты распространяющиеся с SUSE Linux в прошлом использовали эту директорию, но сейчас практически все они перемещены в (под)каталоги /usr. А в ближайшем будущем в /usr будут перемещены GNOME и KDE. Новым пакетам запрещается установка в директорию /opt

/srv зарезервировано для данных специфичных сервисов, таких как ftp или www. Допустимо хранения изменяемых данных. Однако, конфигурационные файлы все же должны находится в деректории /etc, а непостоянные данные, такие как например число подключенных к ftp в данный момент пользователей, должны быть в /var. SUSE Linux, следуя правилам FHS, создает следующие директории по умолчанию:

  • /srv/ftp — Для данных доступных по протоколу FTP.
  • /srv/www — Для веб-сервисов. Здесь находятся директории для CGI-скриптов и HTML-документация (см. ниже). Пакеты могут создавать поддиректории вида /srv/www/{name} для своих данных (где {name} - обычно имя пакета).
  • /srv/www/cgi-bin — Для CGI-скриптов. Любой пакет может добавить сюда свой скрипт, или создать поддиректорию (/srv/www/cgi-bin/{имя_пакета}) если их несколько.
  • /srv/www/htdocs — Для статичной HTML-документации.


Директории /etc/X11 и /usr/X11R6 зарезервированы для подсистемы X Window и связанных файлов, например шрифтов. Все остальные приложения должны использовать директории /etc и /usr.


Двух-архитектурные системы


В двух-архитектурных системах директории /usr/lib64 и /usr/X11R6/lib64 используются в вместе с /usr/lib и /usr/X11R6/lib. Чтобы параллельно запускать 32 и 64 битные приложения, зачастую сразу два варианта одних и тех же библиотек должны сосуществовать в таких системах. 64-х битные библиотеки устанавливаются в директорию lib64, а 32-х битные - в директорию lib. Это делают макросы %_lib and %_libdir.

Special packages are created for the biarch systems that include only the 32-bit libraries. Any other files are not needed because these libraries can use architecture independent files from the 64-bit packages. They are even able to execute 64-bit helper binaries. Therefore, these are shared as well and are installed into lib on all architectures instead (and not %_lib). See the part about --libexecdir in the following section.


4.2. GNU Default Paths



GNU configuration tools use default paths that do not follow FHS. If they are used in the package, they must be redefined using the following configure options:


  • --infodir defines the directory where the info pages will be stored. The default path {prefix}/info is not allowed by FHS. {prefix}/share/info is used instead. Example: --infodir=%_infodir
  • --libdir defines the directory for libraries. It must be used on biarch systems (see above). The macros %_libdir and %_lib define the right path also on such systems. Example: --libdir=%_libdir
  • --libexecdir defines the directory for binary helpers that are called from other binaries or libraries but not by users. The default path {exec_prefix}/libexec is not allowed by FHS. The recommended path is {prefix}/lib/{name} where {prefix} is package prefix and {name} is the package name. lib is used for all architectures (and not %_lib). See [[SUSE_Package_Conventions/Filesystem_Structure#spc_fs_biarch_systems Section�4.1, “Biarch Systems”] for more details. Example: --libexecdir=%_prefix/lib/%name

Some packages already create a subdirectory below libexecdir. In this case, it is enough to use --libexecdir=%_prefix/lib. There are special dedicated directories for various types of binaries. They can be used if a package installs only one such binary. For example, GNOME applets can be installed to /opt/gnome/lib/gnome-applets.

  • --localstatedir defines the directory where the variable data will be stored. The default path {prefix}/var is not allowed by FHS. /var or its subdirectory is used instead. The particular subdirectory depends on the type of data and on the prefix where the application is installed. Applications generally must not create subdirectories below the top level of /var. They can use, for example, /var/lib instead. See FHS for more details. Example: --localstatedir=%_localstatedir or –localstatedir=%_localstatedir/lib
  • --mandir defines the directory where the man pages will be stored. The default path {prefix}/man is not allowed by FHS. {prefix}/share/man is used instead. Example: --mandir=%_mandir
  • --prefix defines the prefix where the package will be installed. The default path /usr/local is used by local system administrators. The packages distributed within SUSE Linux must not install any files below this directory. The prefix /usr is usually used instead. Example: --prefix=%_prefix
  • --sharestatedir defines the directory where the variable architecture-independent data will be stored. The default path {prefix}/com is not allowed by FHS. /var or its subdirectory is used instead. There are the same rules as for --localstatedir (see above). This is because FHS does not differentiate between architecture dependent and independent data below /var. Example: --sharestatedir=%_localstatedir or --sharestatedir=%_localstatedir/lib
  • --sysconfigdir defines the directory where the configuration will be stored. The default path {prefix}/etc is not allowed by FHS. /etc is used instead. Example: --sysconfdir=%_sysconfdir


Other paths are usually set correctly already by --prefix.



Назад

Далее

3. Макросы RPM

В начало

5. Sysconfig