SpecTips/FileDirs: различия между версиями
(Import from freesource.info) |
м (более точная категория) |
||
Строка 1: | Строка 1: | ||
[[Category: | [[Category:RPM spec]] | ||
{{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/SpecTips/FileDirs}} | {{MovedFromFreesourceInfo|AltLinux/Sisyphus/devel/SpecTips/FileDirs}} | ||
Текущая версия от 03:06, 15 января 2009
Нюансы секции files
В секции %files должны быть указаны только те файлы и каталоги, которые принадлежат собираемому пакету. Tо есть, если написать
%files %_bindir %_menudir %_datadir
то каталоги /usr/bin, /usr/lib/menu и /usr/share будут показаны как принадлежащие вашему пакету, что очевидно неверно. в то же время если указывать только файлы, родительский каталог будет создан автоматически, но не будет принадлежать ни одному пакету, что тоже неправильно.
Нужно прописывать
, по смыслу принадлежащие вашей программе, и
их. Все остальные файлы описывать как файлы (а не содержащие их каталоги):
не %_bindir, а %_bindir/* не %_iconsdir, а %_iconsdir/*/*/*/* не %_datadir/applnk, а %_datadir/applnk/Utilities/*
но не
%_datadir/%name/file1 %_datadir/%name/file2 %_datadir/%name/dir1/file1 %_datadir/%name/dir2/file1
а весь
%_datadir/%name
Если надо исключить файл или каталог из пакета (например, чтобы разместить его в другом подпакете или просто за ненадобностью), это можно сделать либо файловыми масками, либо -- что обычно более надёжно, удобно и понятно -- при помощи %exclude:
%files %_bindir/* %exclude %_bindir/*-debug %files debug #... %_bindir/*-debug
Если необходимо включить каталог в файл, но не включать все содержащиеся в нем файлы (это может понадобиться если из одного spec-файла получается несколько rpm-пакетом, соотвественно, в spec-файле существует несколько секций %files), то для этого существует макрос %dir:
%files %dir %_datadir/%name %_datadir/%name/file1 %files subpackage %_datadir/%name/file2