CentOSにRPMをインストールすると、次のエラーメッセージが表示されます。
/var/tmp/rpm-tmp.44492: line 578: [: too many arguments
私が経験している問題は、/var/tmp/rpm-tmp.xxxxx
RPMのインストール後にこのファイルが常に削除されることです。問題のある行番号を確認したいと思います。 rpmの問題を簡単にデバッグできるようにインストールするときにこのファイルを保存する最善の方法は何ですか?これまで私は%pre
これをrpm仕様ファイルのセクションに入れてこの問題を処理しました。
cp -vf /var/tmp/rpm-tmp* /tmp/%module_name-rpm-tmp-copy
/var/tmp/rpm-tmp*
にコピーすることで/tmp
578行を見ることができ、コードの構文エラーを簡単に修正できました。rpm-tmp
インストール中にRPMが使用するファイルを参照する方法はありますか?包括的な(コピーされたファイル)宣言の代わりにenv
正しいコンテンツをコピーするために仕様ファイルでこれらのいくつかを使用できますか?rpm-tmp
cp
/var/tmp/rpm-tmp*
答え1
今日、SLES 11SP4(RPMバージョン4.4.2.3)でもこの問題が発生しました。タグ--noclean
書き換え%clean
提案ソリューションもスクリプトの削除を妨げませんでした/var/tmp/rpm-tmp.*
。
exit -1
デバッグ中の手順の最後にきれいな追加項目を追加することで、この問題を解決できました。 rpmbuilder は次のように終了します。
error: Bad exit status from /var/tmp/rpm-tmp.00000 (%install)
そして、ファイルをまだデバッグする必要があります。
答え2
2つのオプションがありますrpmbuild
。
1.--ノクリン
rpmbuild
このスイッチを使用して、パッケージをインストールするときにこれらのファイルを削除しないように指示できます。--rebuild
$ rpmbuild --rebuild --noclean ....
メモ:私がアクセスできるほとんどのバージョンはこの機能を提供します。
$ rpmbuild --help |& grep clean
--clean remove build tree when done
--noclean do not execute %clean stage of the build
Fedora 20
$ rpmbuild --version
RPM version 4.11.2
セントOS 5.x
$ rpmbuild --version
RPM version 4.4.2.3
2. rpmbuild は --noclean をサポートしません。
rpmbuild --rebuild
独自のファイルを使用してパッケージをビルドする場合.spec
。このオプションはサポートされていません。%clean
この.spec
ファイルのステージに独自のルーチンを追加できます。
%Clean
%if "%{noclean}" == ""
rm -rf $RPM_BUILD_ROOT
%endif