3.6.3. %setup 宏选项


使用以下 %setup 宏选项来控制源存档的解包。

注意

您可以组合 %setup 宏选项。

Expand
表 3.4. %setup 宏选项
宏选项描述

-q

使用 -q 选项限制 %setup 宏的详细程度。将这个选项作为第一个选项传递给 %setup 宏。

-n

使用 -n 选项指定扩展源代码存档中的目录名称。

例如,当扩展源代码存档中的目录与预期名称不同时,您可以使用这个选项(%{ <name> }-%{ &lt;version> }),这可能会导致 '%setup 宏的错误例如,如果软件包名称是 cello,但源代码存档名称为 hello-1.0.tgz,且包含 hello/ 目录,则 spec 文件必须具有以下内容:

Name: cello Source0: https://example.com/%{name}/release/hello-%{version}.tar.gz ... %prep %setup -n hello

-c

使用 the -c 选项创建一个目录,然后在解包任何源前更改到此目录,例如:

/usr/bin/mkdir -p cello-1.0 cd 'cello-1.0'

归档扩展后不会更改该目录。

-D

使用 -D 选项禁用删除源代码目录。例如,如果多次使用 %setup 宏,您可以使用这个选项。使用 -D 选项时,不会使用以下行:

rm -rf 'cello-1.0'

-T

使用 -T 选项跳过 %setup 宏的默认操作,其中包括解包第一个源存档。这个选项从脚本中删除以下行:

/usr/bin/gzip -dc '/builddir/build/SOURCES/cello-1.0.tar.gz' | /usr/bin/tar -xvvof -

-b

在进入工作目录前,使用 -b (before)选项扩展特定的源。

例如,在单独的 cello-1.0-examples.tar.gz 存档中提供示例,它扩展至 cello-1.0/examples。在这种情况下,在进入工作目录前,使用 -b 1 扩展 Source1

Source0: https://example.com/%{name}/release/%{name}-%{version}.tar.gz Source1: %{name}-%{version}-examples.tar.gz ... %prep %setup -b 1

-a

在进入工作目录后,使用 -a (之后)扩展特定源。参数是 spec 文件 preamble 部分中的源号。

例如,cello-1.0.tar.gz 存档包含一个空的 examples 目录。示例在单独的 examples.tar.gz 存档中提供,它们被扩展到具有相同名称的目录中。在这种情况下,使用 1 在 进入工作目录后扩展 Source1

Source0: https://example.com/%{name}/release/%{name}-%{version}.tar.gz Source1: examples.tar.gz ... %prep %setup -a 1
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部