linux - rpmbuild 规范文件 %install 部分错误

标签 linux rpmbuild rpm-spec

我有一个类似于以下内容的规范文件:

BuildRoot: /tmp/build_%{name}-%{version}-%{release}

%prep
...
...

%install
# Directories
install -m 755 -d %{buildroot}/usr/app/mypackage/config
install -m 755 -d %{buildroot}/usr/app/mypackage/src
....

# Bash script
install -m 755 script/script1.sh %{buildroot}/usr/app/mypackage/config/script1.sh
install -m 755 script/script2.sh %{buildroot}/usr/app/mypackage/config/script2.sh
install -m 755 script/myapp-log %{buildroot}/etc/logrotate.d/myapp-log

当我运行 rpmbuild 时出现错误:

install: cannot create regular file `/tmp/build_my_app-1.0-2/etc/logrotate.d/myapp-log'

我可以通过手动创建 /etc/ 然后在 /tmp/build_my_app-1.0- 中创建 /etc/logrotate.d 目录来解决这个问题2/目录。

当我重新运行 rpmbuild 时它会工作。

我想这是因为我没有在我的安装部分创建这个目录,但因为它与我的应用程序没有直接关系,所以我不想把它放在里面。

我的猜测是我可以使用一些聪明的标签来解决这个问题,这样构建就可以在没有任何人工干预的情况下工作。

我的问题: 有人可以建议我实现这一目标的方法(假设它可能),或者我是否需要围绕 rpmbuild 编写一个脚本来首先设置它。

最佳答案

您缺少在 %install 部分创建安装目录的步骤。请记住,由于您可以在“不同的”根中构建,因此您不能指望某些目录(如 ${buildroot}/etc)存在。

尝试添加

 mkdir -p ${buildroot}/etc/logrotate.d

就在将文件复制到 ${buildroot}/etc/logrotate.d 的安装命令之前。

关于linux - rpmbuild 规范文件 %install 部分错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403236/

相关文章:

linux - 链接器中的 ATTiny 和 Linux AVR-GCC 中断复位向量

Linux : Watchdog always busy

rpmbuilder 只创建源 rpm 而不是二进制 rpm

linux - 从 .so 文件中删除路径,以便 RPM check-buildroot 成功

rpm - 如何让 rpmbuild 下载特定 .spec 的所有源代码?

linux - python脚本通过传递参数来检查磁盘空间

linux - linux下如何合并两个文件

linux - 需要一些帮助来为 nodejs 应用程序创建 rpm 包

卸载期间 RPM "skip"s 拥有的文件

rpm-spec - RPM 构建正确设置在 openSUSE 上提供,但在 Fedora 上不提供