Intereting Posts
Как найти файл ISO на DVD-диске с терминала? Как я могу подражать большой платформе endian на x86? Вложенный кошмар котировок: отправка электронной почты с удаленного хоста Нет трафика через установленный туннель IKEv2 StrongSWAN Arch Linux: поиск зависимостей сборки, чтобы они могли быть превращены в зависимости от AUR Очистка папок, за исключением файлов определенного типа Каков второй столбец ls -l? Запустите команды в терминале, затем позвольте мне ввести больше команд Как можно создать «инсталлятор» в Linux? JACK / Pulseaudio: выход аудио из источника JACK в наушники (как маршрутизировать различный звук на разные звуковые карты) удалить с начала файла до n-го вхождения шаблона EDID – помогает определить правильные значения DPI и частоты обновления Sendmail перестал работать Есть ли какая-либо система Windows X, которая является HTML, CSS, Javascript? Например, веб-браузер? Как скомпилировать linux-версию ядра 3.16.1 для запуска в Slackware 14.1?

Каково поведение по умолчанию для% install?

Я пытаюсь создать 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 .