TypicalPackagingErrors/TrailingSlash

Материал из ALT Linux Wiki
Перейти к: навигация, поиск


Каталог/[править]

Если Makefile проекта рассчитывает на то, что /usr/bin всенепременно уже существует -- в случае установки в пустой, хоть и r/w, buildroot он может глубоко разочароваться в этом. В итоге в пакете окажется, скажем, софтинка, установленная с именем /usr/bin (это файл такой, типа) вместо /usr/bin/softinka.

С чужими мэйкфайлами такое правится патчами, объезжается -- предварительным mkdir -p или install -D по вкусу, но ведь и мы можем так же ошибаться (например, закладываться на то, что make install создал каталоги).

Чтобы такие ошибки по возможности обнаружить до выявления при попытке установки результирующего пакета, имеет смысл завести привычку практически всегда использовать, имея в виду каталог, trailing slash -- "/" в конце имени:

%install
# ...
cp -a doc/doxygen/html %buildroot%pkgdocdir/
install -m644 `find -name '*.1'` %buildroot%_man1dir/

%files
# ...
%_datadir/alsa/firmware/
%dir %_libdir/alsa-lib/

Вообще говоря, привычка хороша и для своих скриптов, и для консоли ровно по той же причине, особенно при копировании множественных файлов по маске (когда последнее имя может быть воспринято как каталог с не совсем очевидной диагностикой). что-то не вспомню, при каких условиях cp на такое обижалось... но там stderr внятный ;)