Я пытаюсь создать RPM, используя флаг -bb
(% prep% build% install% check package). Это результат этапа установки%:
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.2kgeNY + umask 022 + cd /<redacted>/BUILD + '[' /<redacted>/BUILDROOT/<redacted>.i386 '!=' / ']' + rm -rf /<redacted>/BUILDROOT/<redacted>.i386 ++ dirname /<redacted>/BUILDROOT/<redacted>.i386 + mkdir -p /<redacted>/BUILDROOT + mkdir /<redacted>/BUILDROOT/<redacted>.i386 + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/lib/rpm/redhat/brp-java-repack-jars
Вот содержимое этого файла tmp:
RPM_SOURCE_DIR="/<redacted>/SOURCES" RPM_BUILD_DIR="/<redacted>/BUILD" RPM_OPT_FLAGS="-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=x86-64 -mtune=generic -mfpmath=sse -fasynchronous-unwind-tables" RPM_LD_FLAGS="-Wl,-z,relro " RPM_ARCH="i386" RPM_OS="linux" export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_LD_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR="/usr/share/doc" export RPM_DOC_DIR RPM_PACKAGE_NAME="<redacted>" RPM_PACKAGE_VERSION="<redacted>" RPM_PACKAGE_RELEASE="<redacted>" export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE LANG=C export LANG unset CDPATH DISPLAY ||: RPM_BUILD_ROOT="/<redacted>/BUILDROOT/<redacted>.i386" export RPM_BUILD_ROOT PKG_CONFIG_PATH="%{_PKG_CONFIG_PATH}:/usr/lib/pkgconfig:/usr/share/pkgconfig" export PKG_CONFIG_PATH set -x umask 022 cd "/<redacted>/BUILD" [ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "${RPM_BUILD_ROOT}" mkdir -p `dirname "$RPM_BUILD_ROOT"` mkdir "$RPM_BUILD_ROOT" /usr/lib/rpm/check-buildroot /usr/lib/rpm/redhat/brp-compress /usr/lib/rpm/redhat/brp-strip /usr/bin/strip /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 /usr/lib/rpm/redhat/brp-python-hardlink /usr/lib/rpm/redhat/brp-java-repack-jars
Я не перезаписывал поведение% install в моем файле spec. Мой файл спецификации выглядит следующим образом:
<stuff> %prep %build %install %files <more stuff>
Является ли поведение по умолчанию% install, определенное в документации по rpm-builder
где угодно? Как узнать, что он собирается выполнить?
На этапе %install
в файле спецификации RPM предполагается создать иерархию файловой системы, которая распаковывается в систему при установке результирующего числа оборотов в минуту. Вся эта иерархия должна быть создана в %{buildroot}
(AKA $RPM_BUILD_ROOT
) командами, найденными в разделе %install
. Его содержимое вставляется дословно (при расширении макросов RPM) в скрипт, интерпретируемый оболочкой – это строка:
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.2kgeNY
Теперь, если вы оставите фазу% install пустой, содержимое сценария не будет – потому что оно инициализирует различные вещи, которые, скорее всего, захочет использовать во время установки $RPM_BUILD_ROOT
( $RPM_BUILD_ROOT
является одним из важных).
То, что именно делает инициализация, зависит от дистрибутива – проверьте содержимое пакета rpm ( rpm -ql rpm
), файлы, такие как /usr/lib/rpm/macros
(может быть в другом месте вашей системы), являются хорошими кандидатами для хранения (RPM ), которые расширяются вокруг того, что вы положили на этапе %install
вашего файла спецификации.
Тем не менее, чаще всего (особенно с программным обеспечением, использующим autotools) основная часть фазы %install
должна быть
make install DESTDIR=%{buildroot}
Макрос %make_install
должен делать именно это. В некоторых дистрибутивах также есть аналогичный макрос макросов RPM, например, %makeinstall
в openSUSE , который может предложить некоторые дополнительные функции по сравнению с общим восходящим %makeinstall
.