%installのデフォルトの動作は何ですか?

%installのデフォルトの動作は何ですか?

-bbフラグ(%prep%build%install%checkパッケージ)を使用してRPMを構築しようとしています。 %installステップの出力は次のとおりです。

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動作をオーバーライドしていません。私の仕様ファイルは次のとおりです。

<stuff>
%prep
%build
%install
%files
<more stuff>

ドキュメントにデフォルトの%install動作が定義されていますかrpm-builder?それが何をするのか、どうすればわかりますか?

答え1

RPM仕様ファイルの手順では、%install生成されたrpmをインストールするときにシステムに解凍されるファイルシステム階層を作成する必要があります。階層全体は、このセクションのコマンドによって%{buildroot}(AKA)ディレクトリに作成されます。その内容は、シェルで解釈されるスクリプトにそのまま(RPMマクロ拡張時)挿入されます。つまり、次の行です。$RPM_BUILD_ROOT%install

Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.2kgeNY

%install ステップを空白のままにしておくと、スクリプトの内容はパッケージ・プログラムがインストール・プロセス中に使用される可能性が最も高いさまざまな項目 ($RPM_BUILD_ROOT重要な項目の 1 つ) を初期化するので、スクリプトの内容は削除されます。

初期化が実行する操作はディストリビューションによって異なります。 rpmパッケージ()の内容を確認してください。rpm -ql rpm同様のファイル/usr/lib/rpm/macros(システムの他の場所にある可能性があります)は、%installこのステップに入れた項目の(RPM)マクロを含めるのに最適な候補です。仕様を拡張してください。ファイル。

つまり、ほとんどの場合(特に自動化ツールを使用するソフトウェア)、%installこのステップの主な部分は次のとおりです。

make install DESTDIR=%{buildroot}

マクロは%make_installこれを行う必要があります。一部のディストリビューションには、同様のRPMマクロ「ショートカット」もあります。%makeinstallオープン水勢で、これは通常のアップストリーム機能と比較していくつかの追加機能を提供できます。

関連情報