我一直试图使用rpmbuild构建一个rpm,但是我一直收到以下错误-
错误:宏展开中递归级别太多。它可能是由递归宏声明引起的。
环境详细信息- rpmbuild --版本RPM 4.11.3
.spec文件的一部分-
############# we define product here ###################
%define name abc
%define installdir /direc
############### product Info ###################
Summary: ABC management package
Name: %{name}
Version: %{version}
Release: %{release}
Source: %{name}-%{version}.tgz
Vendor: XYZ
License: Commercial
Group: System Environment/Libraries
Prefix: %{_prefix}
Buildroot: %{_tmpbuildroot}
################Dependencies ###########################
Requires : %{name} = %{version}, mod_php, php-pgsql.rpmmacros文件
%_topdir /home/jan/rpmbuild/
%_tmppath /home/jan/rpmbuild/tmp
%_tmpbuildroot /home/jan/rpmbuild/build
%_buildroot /home/jan/rpmbuild/BUILD
%version 100.0.111.20200213
%release R_jenkins-XXXXXX-61
%extra_require ameyocrm = 100.0.111.20200213用于构建rpm - sudo rpmbuild -bb -vv /home/jan/Work/BuildMachine/RPM/rpm_spec/rpm/SPECS/myspecfile.spec --target "\x86_64-redhat-linux\"的命令。
发布于 2020-02-13 14:45:12
%name、%version和%release宏都是内置的.你不应该试图覆盖它们。%name宏被定义为Name:标记的内容,%version和%release也是如此。
将其改写为如下内容:
Name: abc
Version: 100.0.111.20200213
Release: R_jenkins-XXXXXX-61
Source: %{name}-%{version}.tgz
...编辑:@Danila注意到:
Requires : %{name} = %{version}意味着您的包需要自己,这是没有意义的。
EDIT2
如果您希望能够定义版本号并从外部发布,则只需定义另一个宏:
%{!?_version: %define _version 100.0.111.20200213 }
%{!?_release: %define _release R_jenkins-XXXXXX-61 }
Name: abc
Version: %{_version}
Release: %{_release}这些宏_version和_release不是标准的,可以在规范文件之外定义。
发布于 2022-04-25 17:05:35
尝试将--define name <name> --define release <number>添加到rpmbuild命令中。
https://stackoverflow.com/questions/60209660
复制相似问题