2016-11-14 12 views
1

私はRPMを作成して、tarを解凍し、パーミッションを変更し、プロセスに応じて何かをエコーするようにしようとしています。問題のファイルは.specです。.specファイルが空の.rpmを作成しています

Summary: Linux agent V.1 
Name: Agent 
Version: 1.0 
Release: 1 
License: GPL 
Source: Agent.tar.gz 
Vendor: test 
Packager: test 


%description 
Test Linux agent 

%prep 
if ps aux | grep "[u]cx"; then 
    pkill -f ucx 
else 
    echo "Current agent is not running." 
fi 
%setup -n Agent 
%install 
cp -r /root/rpmbuild/BUILD/Agent /local/0/opt 
cd /local/0/opt/Agent 
chown -R root.root * 
cd bin/ 
chown root.root test1 test2 
chmod 775 test1 test2 
chmod +s test1 test2 
if ps aux | grep "[u]cy"; then 
    echo "managerup" 
else 
    echo "manager down" 
fi 
%files 
%clean 
rm -rf /root/rpmbuild/BUILD/Agent 

構築する場合、.specファイルがきれいに構築し、回転数を作成します。コマンドも実行され、関連ファイルは/local/0/optになります。問題のビルドコマンドはrpmbuild -ba agent.specです。私は冗長モードでそれをやろうとしましたが、実際に私にエラーを与えているわけでもありません。

ただし、生成された.rpmファイルは空であり、実際には何もしません。私はこれが.specファイルの問題だと思う。しかし、出力は私にすべてのエラーを与えていないので、私は問題が何であるか分かりません。

私は問題が%files部分であると考えていhttp://www.rpm.org/max-rpm/s1-rpm-build-creating-spec-file.html

を追っています。 local/0/optにタールを配備するだけですが、インストールディレクトリを宣言する場所と、パッケージ内のどこに宣言するのかが混乱しています。

答えて

3

あなたはそれが最後にパッケージ化する必要があるファイルを検索する場所のRPMのビルド・プロセスを指示し、あなたの%filesセクション

/local/0/optを追加する必要があります。

また、RPMのビルド・プロセスをパッケージ化するファイルをそこに内部になりますので、%install

%install 
mkdir -p %{buildroot}/local/0 
cp -r /root/rpmbuild/BUILD/Agent %{buildroot}/local/0/opt 
cd %{buildroot}/local/0/opt/Agent 

中にあなたのrpm buildrootに対するあなたのファイルをインストールして操作する必要があります。

あなたは%files%cleanを入れて%build%installアクションを移動するなど、いくつかをそのspecファイルをクリーンアップすることがあります。

+0

こんにちは。 投稿する前に実際に試しました。ここで私に与えたエラーです。 'RPMビルドエラー: ディレクトリが見つかりません:/ root/rpmbuild/BUILDROOT/AutomicAgent-1.0-1.x86_64/local/0/opt' – Pudding

+0

@Pudding更新された回答。今すぐ働かなければならない。 –

+0

ご協力ありがとうございます。残念ながら私はまだ '+ cp -r/root/rpmbuild/BUILD/Agent /root/rpmbuild/BUILDROOT/Agent-1.0-1.x86_64/local/0/opt cp:ディレクトリを作成できません 'というエラーが出ます。 rpmbuild/BUILDROOT/Agent-1.0-1.x86_64/local/0/opt ':このようなファイルやディレクトリはありません。私はspecrofファイルの先頭にbuildrootを設定しようとします。単に/ root/rpmbuild/BUILD/{name}がデフォルトのbuildrootであることを確認してください。 – Pudding

関連する問題