我的项目应该在其目录中有一个spec文件(因此它不在SPECS
目录中),它可以用于从make rpm
包中构建一个rpm包。使用PHP源代码创建一个rpm包
该项目本身是一个Symfony应用程序。安装软件包因此,当三件事情应该发生:
- 应用程序复制到其目的地(最好是适当的Apache2目录)
- 复制配置文件
/etc/appname/
- 在
/var/log/appname
创建日志文件的目录
该应用程序可以使用make dist
构建,该应用程序构建应用程序并在之后创建dist.tar.gz
文件。
据我了解rpmbuild
它应该足以实现我的spec文件的%install
部分。但我的问题是,在本节中,我在~/rpmbuild
目录内,我的压缩应用程序和我的源代码都没有存在。只是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
应该是在这种情况下,与有关权限什么。
非常感谢这个答案,我会稍后再试。剩下的一个问题是:在'%files'中列出所有文件将是一个疯狂的长列表(由于供应商)。有没有办法递归列出所有文件? – nehalist
是的,引用目录(您在'%install'中复制了一些文件的位置)就足够了。 – marbu
使用'$ RPM_BUILD_ROOT'前缀我的dest路径导致“目录不存在”错误,因为像'$ RPM_BUILD_ROOT/var/www ...'这样的东西不存在。为什么我必须使用RPM_BUILD_ROOT呢? – nehalist