SpecTips/doc

Материал из ALT Linux Wiki

(Различия между версиями)
Перейти к: навигация, поиск
м (init :[)
Строка 1: Строка 1:
{{викифицировать}}
{{викифицировать}}
-
<pre>
 
-
On Thu, Oct 16, 2008 at 04:02:00PM +0400, Vitaly Ostanin wrote:
 
-
> Обнаружил, что при наличии в спеке в %files
 
-
> такой строки
 
-
> %doc %_defaultdocdir/%name-%version
 
-
>
 
-
> пакет не собирается со странными
 
-
> сообщениями:
 
-
>
 
-
> Wrote: /usr/src/RPM/SRPMS/heartbeat-2.1.3-alt1.src.rpm
 
-
> error: create archive failed on file
 
-
> /usr/src/tmp/heartbeat-buildroot/usr/share/doc/heartbeat-2.1.3/AUTHORS:
 
-
> cpio: open failed - Bad file descriptor
 
-
>
 
-
> RPM build errors:
 
-
>    File listed twice: /etc/ha.d/resource.d/ldirectord
 
-
>    File listed twice: /usr/lib/ocf/resource.d/heartbeat/ldirectord
 
-
>    File listed twice: /usr/share/doc/heartbeat-2.1.3
 
-
>
 
-
> Если эту строку удалить, то пакет
 
-
> собирается нормально.
 
-
Нельзя одновременно использовать
+
В спек-файле нельзя использовать конструкции
-
%doc <абсолютный-путь-в-дефолтном-каталоге>
+
%doc <абсолютный-путь-в-%_docdir>
-
%doc <относительный-путь>
+
и
 +
%doc <относительный-путь>
 +
одновременно.
-
Это связано с тем, что, когда выполняется %doc второго вида,
+
Это является особенностью (или ошибкой) реализации RPM: когда выполняется <tt>%doc</tt> второго вида, то каталог <tt>%_docdir</tt> сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей.
-
то дефолтный каталог сначала удаляется, потом заново создаётся,
+
-
и в него копируются <относительные-пути>.
+
 +
Таким образом, при обработке
 +
<pre>
%build
%build
touch Changes
touch Changes
Строка 37: Строка 18:
%doc %_docdir/%name-%version
%doc %_docdir/%name-%version
%doc Changes
%doc Changes
 +
</pre>
-
Когда "%doc Changes" будет исполнен, то он "затрёт" README.
+
Когда <tt>%doc Changes</tt> будет исполнен, то он ''затрёт'' README.
-
 
+
-
Executing(%doc): /bin/sh -e /tmp/.private/at/rpm-tmp.96021
+
-
+ umask 022
+
-
+ /bin/mkdir -p /tmp/.private/at/BUILD
+
-
+ cd /tmp/.private/at/BUILD
+
-
+ DOCDIR=/tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ export DOCDIR
+
-
+ rm -rf /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ /bin/mkdir -p /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ cp -prL Changes /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ chmod -R go-w /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ chmod -R a+rX /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+
-
+ exit 0
+
-
</pre>
+

Версия 11:21, 19 октября 2008

42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.


В спек-файле нельзя использовать конструкции

%doc <абсолютный-путь-в-%_docdir>

и

%doc <относительный-путь>

одновременно.

Это является особенностью (или ошибкой) реализации RPM: когда выполняется %doc второго вида, то каталог %_docdir сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей.

Таким образом, при обработке

%build
touch Changes
%install
install -pD -m644 /dev/null %buildroot%_docdir/%name-%version/README
%files
%doc %_docdir/%name-%version
%doc Changes

Когда %doc Changes будет исполнен, то он затрёт README.

 
Личные инструменты