据我所知,rpm规范文件中Source:头的目的是指定一个用作包有效负载的文件(通常是tar存档)。此源文件通常是事先生成的,可能是make,然后执行rpmbuild。
我想知道是否有可能从图片中删除并只使用rpmbuild。源文件是否可以作为rpmbuild进程本身的一部分创建,可能是在spec文件的%build或%install步骤中?
如果是这样,那么什么用作Source:标题?我不能把它留空,因为rpmbuild抱怨。有没有办法告诉rpm有效负载文件是从spec文件中生成的,而不是从外部提供的?
我不想单独创建源文件,因为这意味着要在两个地方跟踪包名称和版本号:在rpm spec文件中,以及在makefile或其他脚本中创建有效负载的任何内容文件。看起来我应该可以在spec文件中做所有事情。
答案 0 :(得分:0)
你想打电话
%setup -q -c -T
见[1]。例如:
Name: test
Version: 1
Release: 1%{?dist}
Summary: Test
License: ...
%description
Test
%prep
%setup -q -c -T
%build
echo "int main() { return 0; } " > test.cpp
gcc -o test test.cpp
%install
install -Dpm 0755 test %{buildroot}%{_bindir}/test
%files
%{_bindir}/test
%changelog
...
答案 1 :(得分:0)
我最近遇到了类似的问题。我最终写了一个脚本,读取spec文件并完成所有工作。我们不再需要管理Makefile和规范文件以及我们的一些开发人员管理它的其他方式。
该脚本公开发布在github上: https://github.com/alexnelsone/jenkins-rpm-build/blob/master/README.md
它从spec文件中解析出信息,然后为你完成所有工作。