
この問題に対する答えを見つけるためにインターネットを検索しましたが、情報は得られませんでした。私は独自のRPMを構築しており、特定のファイルを特定のディレクトリに解凍するために必要です。これらのディレクトリはユーザーに属するため、および()support
にマップする必要があります。しかし、rpmを構築するためにコマンドを実行すると、次のようになります。~/exporttool
~/bin
~/jlog
/home/support/directory
rpmbuild -v -bb SPEC/supportScripts.spec
わかりました:
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd8
File not found: /root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/exportToTransferSyntax.sh
私はここにいる協会仕様書。誰かが私が間違っているかどうか、仕様ファイルを正しくマッピングするように設定する方法を教えてください。/home/support/directoryOfWhereFilesShouldGo
答え1
この/home
ディレクトリにソフトウェアをインストールするためにRPMを使用しないでください。これはちょうど悪い考えです。 RPMはシステム管理ディレクトリ/bin
(など)でのみ使用できます/usr/bin
。
代わりに、ソフトウェアは次のディレクトリのいずれかにインストールする必要があります。
- シンボリックリンク
- たとえば、一度インストールすると、
/usr/bin
システムからこれらのツールにアクセスできます$PATH
。
Linux/Unixで何かをしようとするときに実行するのが難しいと感じるたびに一歩退く必要があります。これはあなたに何かを伝えるアーキテクチャ/システムです。あなたはおそらくやってはいけないことをやっているでしょう、そしてそれが使用されるように設計された方法に違反することをしているでしょう。
仕様書
この%install
マクロは現在の形式では理解できません。
%install
mkdir -p %buildroot/%name
tar -xvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar
mkdir /home/support/exporttool
mkdir /home/support/bin
mkdir /home/support/jlog
タルボールを解凍した後、なぜmkdir
このディレクトリをチェックするのですか?なぜそれらを作りたいですか?タルボールに含まれている場合は必要ありません。これらのディレクトリがタールボールに含まれていない場合、そのディレクトリは単に空であり、受け取ったエラーはそれを知らせます。
ファイルが見つかりません:/root/rpmbuild/BUILDROOT/supportScripts-0.1-1.x86_64/home/support/exporttool/cmd2
cmd2
ファイルがtarballまたは.dllにないため、含まれていません%install
。
tarball の在庫を確認することでこれを確認できます。
$ tar tvf /home/vagrant/rpm/SOURCE/supportScripts-1.tar | \
grep -E 'support/{exporttool,bin,jlog}'