我的项目应该在其目录中有一个spec文件(因此它不在SPECS
目录中),可以使用make rpm
从包中构建rpm包。< / p>
项目本身是一个Symfony应用程序。因此,当安装包3时,事情应该发生:
/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
在这种情况下应该是什么以及权限。
答案 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
部分中安装的所有文件。