为什么rpmbuild(1)忽略RPM"spec"文件中"Source:"标记命名的压缩tar(1)文件?

Ste*_*son 6 rpm rpmbuild

该文件ldm.spec包含该行

Source:         /web/ftp/pub/ldm/%{name}-%{version}.tar.gz
Run Code Online (Sandbox Code Playgroud)

在第一部分.%{name}和%{version}已正确设置.给定的文件确实存在.

命令rpmbuild --nobuild ldm.spec错误 - 退出并显示消息

error: File /home/steve/rpmbuild/SOURCES/ldm-6.9.8.tar.gz: No such file or directory
Run Code Online (Sandbox Code Playgroud)

要让它发挥作用必须做些什么?

附加信息:

$ uname -a
Linux gilda.unidata.ucar.edu 2.6.27.41-170.2.117.fc10.x86_64 #1 SMP Thu Dec 10 10:36:29 EST 2009 x86_64 x86_64 x86_64 GNU/Linux
$ rpmbuild --version
RPM version 4.6.1
Run Code Online (Sandbox Code Playgroud)

Cor*_*son 6

默认情况下,rpmbuild要求源文件的basename()存在于%_topdir/SOURCES目录中,而不管它在何处声明.在spec文件中,您经常会看到一个URL(wget.spec):

Source: ftp://ftp.gnu.org/gnu/wget/wget-%{version}.tar.bz2
Run Code Online (Sandbox Code Playgroud)

它不会在构建时获取它,即使它在您自己的文件系统上."没有这样的文件或目录"错误来自%setup宏在默认位置查找文件,而没有看到它.

解决方案是将文件复制(或制作符号链接)到rpmbuild/SOURCES目录.

如果您出于某种原因不希望将该文件复制到用户的SOURCES目录中,则可以使用%setup mecro的-T选项,它会告诉它"不执行默认存档解包":

%setup -T
Run Code Online (Sandbox Code Playgroud)

如果您选择这条路线,您必须自己在%prep部分解压缩档案.