SpecTips/doc
Материал из ALT Linux Wiki
(Различия между версиями)
Строка 8: | Строка 8: | ||
%doc <относительный-путь в каталоге, полученном в %prep> | %doc <относительный-путь в каталоге, полученном в %prep> | ||
- | Это является особенностью (или ошибкой) реализации RPM: когда выполняется <tt>%doc</tt> второго вида, то каталог <tt>%_docdir</tt> сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей. При повторном указании %doc второго вида каталог <tt>%_docdir</tt> не удаляется. | + | Это является особенностью (или ошибкой) реализации RPM: когда выполняется <tt>%doc</tt> второго вида, то каталог <tt>%_docdir</tt> сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей. При повторном указании %doc второго вида каталог <tt>%_docdir</tt> не удаляется (и это наводит на мысль, что на самом деле <tt>%_docdir</tt> удаляется не при указании <tt>%_doc</tt> второго вида, а в конце обработки <tt>%_doc</tt> первого вида). |
В этом примере в %doc попадут только Changes и AUTHORS, без README: | В этом примере в %doc попадут только Changes и AUTHORS, без README: |
Версия 11:50, 19 октября 2008
Использование %doc
В спек-файле нельзя одновременно использовать конструкции
%doc <абсолютный-путь-в-%_docdir в %buildroot>
и
%doc <относительный-путь в каталоге, полученном в %prep>
Это является особенностью (или ошибкой) реализации RPM: когда выполняется %doc второго вида, то каталог %_docdir сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей. При повторном указании %doc второго вида каталог %_docdir не удаляется (и это наводит на мысль, что на самом деле %_docdir удаляется не при указании %_doc второго вида, а в конце обработки %_doc первого вида).
В этом примере в %doc попадут только Changes и AUTHORS, без README:
%build touch Changes %install install -pD -m644 /dev/null %buildroot%_docdir/%name-%version/README %files %doc %_docdir/%name-%version %doc Changes %doc AUTHORS
Сборка пакета при этом остановится с ошибкой:
Wrote: /usr/src/RPM/SRPMS/name-2.1.3-alt1.src.rpm error: create archive failed on file /usr/src/tmp/name-buildroot/usr/share/doc/name-2.1.3/README: cpio: open failed - Bad file descriptor