Сборка пакетов/Соглашение по стилю 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 |