web-dev-qa-db-ja.com

Java appのRPMを作成しようとしたときにエラーが発生しました

私はRPMパッケージングに不慣れで、かなり長い間立ち往生していて、問題の根本的な原因を見つけることができません。スペックファイルのBuildRootの概念を完全に理解しているかどうかはよくわかりません。

私のRPMパッケージングは​​私のホームディレクトリで行われます:/home/virtual/rpmbuild

/home/virtual/rpmbuild/tmp/BDHistProcessorにあるJavaアプリケーションを次の構造でパッケージ化しようとしています:

BDHistProcessor
 lib
 bin
 conf
 deploy

これが私が作成したスペックファイルです:

%define _tmppath  /home/virtual/rpmbuild/tmp

Name:           BDHistProcessor
Version:        1.0.0
Release:        1%{?dist}
Summary:        component which feed data into DB

Group:        Applications/System   
License:      GPL  
URL:          https://www.tem.com/  
BuildRoot: %{tmppath}/%{name}

%description
Component which feed data into DB

%prep

%build

%install
rm -rf $RPM_BUILD_ROOT
cp -r  /home/virtual/rpmbuild/tmp/BDHistProcessor $RPM_BUILD_ROOT 

%files
%defattr(-,root,root)
%{buildroot}/BDHistProcessor/lib
%{buildroot}/BDHistProcessor/bin
%{buildroot}/BDHistProcessor/conf
%{buildroot}/BDHistProcessor/deploy
%{buildroot}/BDHistProcessor/README.txt

%doc
%changelog

rpmbuild -v -bb -clean SPECS/myRPM.specを実行すると、出力が返されます。

[virtual@virtual rpmbuild]$ rpmbuild -v -bb --clean SPECS/myRPM.spec
Executing(%prep): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.t2AMGe
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ exit 0
Executing(%build): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.1unXP8
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ exit 0
Executing(%install): /bin/sh -e /home/virtual/rpmbuild/tmp/rpm-tmp.SoaH02
+ umask 022
+ cd /home/virtual/rpmbuild/BUILD
+ rm -rf /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64
+ cp -r /home/virtual/rpmbuild/tmp/BDHistProcessor /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64
+ /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip
+ /usr/lib/rpm/brp-strip-static-archive
+ /usr/lib/rpm/brp-strip-comment-note
Processing files: BDHistProcessor-1.0.0-1.el6.x86_64
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/bin
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/conf
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/deploy
error: File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/README.txt


RPM build errors:
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/bin
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/conf
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/deploy
    File not found: /home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/README.txt

エラーレポートでパスがどのように循環するかはよくわかりません。誰かが私がここで間違っていることを明確にできますか?

2
jaksky

背景-rpmbuildセットアップ

rpmbuildディレクトリをどのように作成しましたか? rpmdev-setuptreeなどのツールを使用しましたか?私は常に、このパッケージrpmdevtoolsを使用して初心者に始めることをお勧めします。

まず、ユーザーsamlのように、bulid領域がありません。

$ ls -la | grep -E "rpmbuild|\.rpm"
$

次に、パッケージrpmdevtoolsをインストールします。

$ Sudo yum install rpmdevtools

インストールすると、rpmbuildディレクトリの作成に使用できる別のアプリケーションが作成されます。

$ rpmdev-setuptree

それは何も言わないでしょう、それはあなたのためにただ静かに次のことをしました:

$ ls -la | grep -E "rpmbuild|\.rpm"
drwxrwxr-x.   7 saml saml     4096 Dec 16 12:22 rpmbuild
-rw-rw-r--.   1 saml saml      620 Dec 16 12:22 .rpmmacros

その後、rpmbuilddevelopersディレクトリに次のディレクトリ構造が作成されます。

$ ls -l ~/rpmbuild
total 20
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 BUILD
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 RPMS
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SOURCES
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SPECS
drwxrwxr-x. 2 saml saml 4096 Dec 16 12:22 SRPMS

あなたの問題

問題は、%filesファイルの.specマクロセクションにあるようです。エラーメッセージの出力を見る:

エラー:ファイルが見つかりません:/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/home/virtual/rpmbuild/BUILDROOT/BDHistProcessor-1.0.0-1.el6.x86_64/BDHistProcessor/lib

BUILDROOTパスが2回繰り返されることに注意してください。 $buildrootマクロセクションに変数%filesを含める必要はありません。すでにこのディレクトリを自動的にターゲットにしています。

代わりにこれを試してください:

%files
%defattr(-,root,root)
/usr/bin/BDHistProcessor/lib
/usr/bin/BDHistProcessor/bin
/usr/bin/BDHistProcessor/conf
/usr/bin/BDHistProcessor/deploy
/usr/bin/BDHistProcessor/README.txt

/usr/binの代わりに、パッケージの最終的な宛先を指定します。

1
slm

単純なRPM(ファイルのリストのみ)を構築するために、単純なスクリプトを使用しています。 RPMを作成するプロセスは簡単です。

1)パッケージの名前と一致するディレクトリを作成し、その中に「spec」としてスペックファイルを作成します。プラットフォーム、バージョン、グループ、ライセンス、変更ログなど、スペックファイル内の必要なすべての項目を変更する必要があります。仕様にファイルを指定する必要はありません。ファイルのリストは自動的に入力されます。

2)必要なすべてのファイルを含むサブツリーを作成し、必要なすべてのシンボリックリンクを作成します。

スクリプトを実行します。ここから、スクリプトとデモパッケージをインストールして、RPMビルドをテストできます。 http://asmith.replaytrader.com/asmith/tmp/build_rpm-0.0.1-0.noarch.rpm

0