1

これはRPMを構築する最初の試みなので、初心者のような質問はご容赦ください。:)

rpmをビルドしてyumOKでデプロイすることはできますが、ファイルをターゲットサーバーの正しいディレクトリにデプロイすることができません。ターゲットサーバーの/tmpディレクトリにデータファイルを置きたいだけです。

%install
mkdir -p tmp
cp %_builddir/myfile.dat %_builddir/tmp/myfile.dat

%files
%_builddir/tmp/myfile.dat

ターゲットサーバーにrpmをyumインストールすると、myfile.dat%_builddir/tmp/myfile.datがホームディレクトリの下に配置されます。/tmpに入れたい

%filesセクションの%_builddirを削除しようとしましたが、rpmがビルドされませんでした。

%files
/tmp/myfile.dat

私は何が欠けていますか?

編集 - - - -

これが現在機能するコードです。

BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

%install
mkdir -p $RPM_BUILD_ROOT/tmp
cp $RPM_BUILD_DIR/myfile.dat $RPM_BUILD_ROOT/tmp/myfile.dat

%files
/tmp/myfile.dat
4

1 に答える 1

2

互いに混同しているように見える 3 つの別個のツリーが関係しています。

  • で表されるビルド ディレクトリ$RPM_BUILD_DIR( ではなく、これを使用するのがおそらくベスト プラクティスです%_builddir)
  • で表されるビルドルート$RPM_BUILD_ROOT
  • rpm がインストールされるシステム上の最終的なターゲット ファイルシステム

%install最初から2番目にファイルをコピーする必要がありますが、あなたのものはそうではありません-これはあなたの最初の間違いであり、間違ったディレクトリにmkdir作成するという事実と相まってtmp-ビルドルートにある必要があります。

%files2 番目のどのファイルを rpm にパッケージ化する必要があるかを指定し、最終的に rpm のインストール時にターゲット システムにインストールされます。ただし、重要なことは、 にリストされているファイルはビルド ルートに対して相対的に%filesリストされている必要があるため、2 回目の試行が適切な方法です。それでもエラーが発生する場合は、注意深く読むことをお勧めします。また、rpm 構築に関する適切なガイドを読むことを強くお勧めします。たとえば、http: //www.rpm.org/max-rpm/s1-rpm-inside-scripts.html%files

于 2012-09-03T23:59:01.543 に答える