2017-10-18 16 views
1

私のプロジェクトには、ディレクトリにspecファイルがあります(SPECSディレクトリにありません)。パッケージからrpmパッケージを作成するときにmake rpmを指定してください。PHPソースからmakeを使用してrpmパッケージを作成

プロジェクト自体は、Symfonyのアプリケーションです。パッケージをインストールするときにそこで3つの事は起こるはず:

  • は、その宛先(好ましくは適切なapache2のディレクトリ)
  • にアプリケーションをコピー/etc/appname/
  • にコンフィギュレーションファイルをコピーし/var/log/appname
  • にログファイル用のディレクトリを作成します

アプリはmake distで作成できます。make distは、アプリをビルドし、その後にdist.tar.gzというファイルを作成します。

は、私の知る限りrpmbuildを理解してきたように、私のspecファイルの%installセクションを実装するのに十分でなければなりません。しかし、私の問題は、このセクション内で私は~/rpmbuildディレクトリの中にあります。そこには、私の圧縮アプリケーションも私のソースコードも存在しません。私はspecファイルがどこで呼び出されたのかわからないので(そしてプロジェクトの残りの部分は)、別のディレクトリへの単純にcdは機能しません。私が欲しいもの

は次のようなものです:

Name: appname 
# rest of the header (group, summary, ...) 

Source: dist.tar.gz 

Requires: php >= 7.0, apache2 

%description 
important words 

%install 
cp * /var/www/appname # copy the application to its destination 
cp docs/config/example /etc/appname/ # copy config to its destination 
mkdir -p /var/log/appname # create log directory 

また、私は私の%filesが、この場合、およびアクセス許可についてはどうあるべきかについてはよく分かりません。

答えて

1

は、(このような理解は、あなたがFedoraのパッケージ化していない場合でも有効です)あなたはrpmbuildのの各フェーズの適切な説明を見ることができるCreating RPM Packages with Fedoraを参照してください。

つまり、答えはセクションで、%setpu -qマクロ(tarballはSource: dist.tar.gzで参照されています)経由でソースtarballを抽出します。 %buildセクションをスキップできるようです。 %installセクションでは、あなたはそれが適切な場所は(あなたはあなたの例で使用代わりに絶対パスの宛先パスに$RPM_BUILD_ROOT接頭辞を使用する必要がありますにすべてのファイルを、あなたが最初に必要としているすべてのディレクトリを作成し、(インストール)をコピーする必要があります)。最後に、少なくとも%filesでは、rpmパッケージの一部になる%installセクションにインストールしたすべてのファイルを一覧表示する必要があります。

+0

この回答をいただきありがとうございます。後で試してみます。残りの質問tho: '%files'のすべてのファイルを一覧表示することは、(ベンダーのために)非常識な長いリストになります。すべてのファイルを再帰的にリストする方法はありますか? – nehalist

+0

はい、 '%install'でいくつかのファイルをコピーしたディレクトリを参照するだけで十分です。 – marbu

+0

'$ RPM_BUILD_ROOT'で私のdestパスをプレフィックスすると、' $ RPM_BUILD_ROOT/var/www ... 'のようなものが存在しないので、" directory not existent "というエラーが発生します。なぜRPM_BUILD_ROOTを使用しなければならないのですか? – nehalist

関連する問題