如何在rpm规范文件中安装符号链接

问题描述

我已经阅读了与该问题相关的其他几个问题,但是找不到我的问题的直接答案。我必须安装指向/ etc的几个符号链接,以指向要在/ opt / myapp中安装的文件,因此我需要文件如下所示:

/ etc / sysconfig / myapp-> / opt / myapp / etc / sysconfig / myapp

现在我的规格文件如下:

%install
ln -sf %{buildroot}/etc/sysconfig/myapp /opt/myapp/etc/sysconfig/myapp

%files
%attr(0644,root,root) "/etc/sysconfig/myapp"
%dir %attr(0755,root) "/opt/myapp/etc/sysconfig"
%config(noreplace) %attr(0644,root) "/opt/myapp/etc/sysconfig/myapp"

当我运行rpmbuild时,我得到了:

ln: failed to create symbolic link '/opt/myapp/etc/sysconfig/myapp': No such file or directory

我知道此目录不存在。它会在%files部分安装,因此如何避免出现此错误?

解决方法

ln takes the target first,因此应为ln -sf /opt/myapp/etc/sysconfig/myapp %{buildroot}/etc/sysconfig/myapp

  • -s使其成为符号链接
  • -f,因为/opt/myapp/etc/sysconfig/myapp不需要在构建系统上存在

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...