rpm - 如何在 %post rpm 中执行 php 文件

rpm - 如何在 %post rpm 中执行 php 文件

我正在为 php web 应用程序创建 rpm 安装程序。其中一个要求是运行 php 脚本,这是一个将更新源、数据库并执行修复脚本的入口脚本。

为了满足此要求,我创建了一个 tar 文件,其中包含 php 脚本和更新所需的其他文件,并将其存储在源目录中。我只需要在 %post 上调用 php 脚本。

%post
cd $RPM_BUILD_ROOT
gunzip %{name}-%{version}.tar
tar -xvf %{name}-%{version}.tar
php install.php

我首先将目录更改为 build,因为我认为那是 tar 文件的位置。然后解压缩文件并执行 php 脚本。但我收到以下错误:

gunzip: can't stat: webapp-1.0.tar (webapp-1.0.tar.gz): No such file or directory
tar: Error opening archive: Failed to open 'webapp-1.0.tar'
Could not open input file: install.php

我应该如何执行 php 脚本?这可能吗?

另外,我应该使用哪个 rpm 文件来安装最终发行版,是目录 rpms/i386 中的那个还是 srpms 中的那个?我仍在开发 rpm。

任何帮助都将受到赞赏。

[编辑] 我尝试使用%setup -c -n %{name}%post 而不是 tar 命令。然后我收到此消息Could not open input file: install.php

答案1

如果这是 .spec 文件,请使用 %{buildroot} 而不是 $RPM_BUILD_ROOT。请参阅此处的“宏”章节:https://fedoraproject.org/wiki/How_to_create_an_RPM_package

还请尝试echo %{buildroot} > /tmp/dbg.txt 检查 /tmp/dbg.txt 内容以查看它尝试 cd 到哪里。

我建议尝试使用平均流量它能够构建所有类型的软件包。只需将安装前安装后脚本作为参数与其余部分一起提供即可。无需 rpm 规范文件或 deb 规则文件。

相关内容