gpt4 book ai didi

rpm & rpmbuild - 在 %files 部分使用全局环境变量

转载 作者:行者123 更新时间:2023-12-04 08:46:54 29 4
gpt4 key购买 nike

我一直在为这个而苦苦挣扎。
所以我为我的项目写了一个 .specs 文件,一切都很好。 rpm 已经构建好了,安装很顺利……但是后来我遇到了一些麻烦,因为现在我必须使用自定义的全局环境变量来设置安装路径。

这将给出一个 %files 部分:

%files
%defattr(-,root,root)
$INSTALLPATH/Crystal/bin/Crystal.jar

Crystal 是我的项目名称,INSTALLPATH 是在 env 中定义的,这要归功于导出命令行。然后,运行时
buildrpm -ba Crystal.specs
我有以下错误:
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar

我试图在 .rpmmacros 文件中定义一个宏:
%_installpath $INSTALLPATH

在我的规范文件中,当我这样做时
回声%{_installpath}
我得到了我在 .rpmmacros 中设置的值。但是如果我在 %files 中使用它:
%files
%defattr(-,root,root)
%{_installpath}/Crystal/bin/Crystal.jar

我再次收到同样的错误!
error: File must begin with "/" : $INSTALLPATH/Crystal/bin/Crystal.jar

我还尝试使用规范文件定义一个变量,但结果同样令人难过。看起来只要我的变量/宏引用 $INSTALL,那么 %files 就不会接受它。但是我必须使用这个环境变量!

所以这就是我能想到的。有人有线索吗?任何帮助将不胜感激。

非常感谢!

最佳答案

%files部分不扩展 shell 变量。你不能那样做。

你有几个选项,我可以立即看到。你可以

  • 生成一个包含文件列表的文件(在 %install 或你拥有的东西期间),然后使用 %files -f files.lst
  • 展开 $INSTALLPATH在 rpm 宏定义时间:
    # For RPM >= 4.7.0
    %_installpath %{getenv:INSTALLPATH}
    # For RPM < 4.7.0
    %_installpath %{lua:print(os.getenv("INSTALLPATH"))}
  • 关于rpm & rpmbuild - 在 %files 部分使用全局环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895545/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com