私のプロジェクトには、ディレクトリに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
が、この場合、およびアクセス許可についてはどうあるべきかについてはよく分かりません。
この回答をいただきありがとうございます。後で試してみます。残りの質問tho: '%files'のすべてのファイルを一覧表示することは、(ベンダーのために)非常識な長いリストになります。すべてのファイルを再帰的にリストする方法はありますか? – nehalist
はい、 '%install'でいくつかのファイルをコピーしたディレクトリを参照するだけで十分です。 – marbu
'$ RPM_BUILD_ROOT'で私のdestパスをプレフィックスすると、' $ RPM_BUILD_ROOT/var/www ... 'のようなものが存在しないので、" directory not existent "というエラーが発生します。なぜRPM_BUILD_ROOTを使用しなければならないのですか? – nehalist