RPM仕様ファイルに解凍位置を指定します。

RPM仕様ファイルに解凍位置を指定します。

この問題に対する答えを見つけるためにインターネットを検索しましたが、情報は得られませんでした。私は独自の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

代わりに、ソフトウェアは次のディレクトリのいずれかにインストールする必要があります。

  1. シンボリックリンク
  2. たとえば、一度インストールすると、/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}'

おすすめ記事