使用PHP源代码创建rpm包

时间:2017-10-18 15:36:23

标签: php rpm

我的项目应该在其目录中有一个spec文件(因此它不在SPECS目录中),可以使用make rpm从包中构建rpm包。< / p>

项目本身是一个Symfony应用程序。因此,当安装包3时,事情应该发生:

  • 将应用程序复制到其目标(最好是正确的apache2目录)
  • 将配置文件复制到/etc/appname/
  • /var/log/appname
  • 中为日志文件创建目录

可以使用make dist构建应用,然后构建应用并在之后创建dist.tar.gz文件。

据我所知rpmbuild,应该足以实现我的spec文件的%install部分。但我的问题是,在本节中,我在~/rpmbuild目录中,我的压缩应用程序和源代码都不存在。简单地cd到另一个目录是不行的,因为我不知道spec文件的调用位置(以及项目的其余部分)。

我想要的是这样的:

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 个答案:

答案 0 :(得分:1)

请参阅Creating RPM Packages with Fedora,在那里您可以看到rpmbuild每个阶段的良好描述(即使您没有为Fedora打包,这种理解也很有用)。

也就是说,快速回答是:您需要一个%prep部分,您可以通过%setpu -q宏提取源tarball(Source: dist.tar.gz中引用了tarball)。您似乎可以跳过%build部分。在%install部分中,您需要先创建所需的所有目录,然后将所有文件复制(安装)到其正确的位置(您需要使用$RPM_BUILD_ROOT前缀目标路径而不是您在示例中使用的绝对路径)。最后但至少在%files中,您需要列出您希望成为rpm包一部分的%install部分中安装的所有文件。