私は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
エラーレポートでパスがどのように循環するかはよくわかりません。誰かが私がここで間違っていることを明確にできますか?
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
その後、rpmbuild
developersディレクトリに次のディレクトリ構造が作成されます。
$ 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
の代わりに、パッケージの最終的な宛先を指定します。
単純なRPM(ファイルのリストのみ)を構築するために、単純なスクリプトを使用しています。 RPMを作成するプロセスは簡単です。
1)パッケージの名前と一致するディレクトリを作成し、その中に「spec」としてスペックファイルを作成します。プラットフォーム、バージョン、グループ、ライセンス、変更ログなど、スペックファイル内の必要なすべての項目を変更する必要があります。仕様にファイルを指定する必要はありません。ファイルのリストは自動的に入力されます。
2)必要なすべてのファイルを含むサブツリーを作成し、必要なすべてのシンボリックリンクを作成します。
スクリプトを実行します。ここから、スクリプトとデモパッケージをインストールして、RPMビルドをテストできます。 http://asmith.replaytrader.com/asmith/tmp/build_rpm-0.0.1-0.noarch.rpm