RPM HOWTO | ||
---|---|---|
上一页 |
以下是 “fileutils” 软件包的 spec 文件的一部分。它被设置为在 Alpha 和 Intel 上构建。
Summary: GNU File Utilities Name: fileutils Version: 3.16 Release: 1 Copyright: GPL Group: Utilities/File Source0: prep.ai.mit.edu:/pub/gnu/fileutils-3.16.tar.gz Source1: DIR_COLORS Patch: fileutils-3.16-mktime.patch %description These are the GNU file management utilities. It includes programs to copy, move, list, etc, files. The ls program in this package now incorporates color ls! %prep %setup %ifarch alpha %patch -p1 autoconf %endif %build configure --prefix=/usr --exec-prefix=/ make CFLAGS="$RPM_OPT_FLAGS" LDFLAGS=-s %install rm -f /usr/info/fileutils* make install gzip -9nf /usr/info/fileutils* . . . |
%ifarch 宏对于所有这些都非常重要。大多数时候,您需要创建一个或两个特定于一个架构的补丁。在这种情况下,RPM 将允许您仅将该补丁应用于一个架构。
在上面的示例中,fileutils 有一个用于 64 位机器的补丁。显然,目前这应该只应用于 Alpha。因此,我们在 64 位补丁周围添加一个 %ifarch 宏,如下所示
%ifarch axp %patch1 -p1 %endif |
为了您可以在一个目录中维护所有平台的源 RPM,我们实现了“排除”在某些架构上构建软件包的功能。这使您仍然可以执行以下操作,例如
rpm --rebuild /usr/src/SRPMS/*.rpm |
并构建正确的软件包。如果您尚未将应用程序移植到某个平台,您只需添加一行类似
ExcludeArch: alpha |
到源软件包的 spec 文件的头部。然后在它构建的平台上重建软件包。然后,您将拥有一个在 Intel 上构建的源软件包,并且可以在 Alpha 上轻松跳过。