Linux 版 (精华区)

发信人: clx (楚留香), 信区: Unix
标  题: RPM HOWTO (RPM at Idle)(08)
发信站: 紫 丁 香 (Sat Jun 27 17:10:46 1998), 转信

RPM HOWTO (RPM at Idle) : Multi-architectural RPM Building
Previous: Building RPMs
Next: Copyright Notice 


7. Multi-architectural RPM Building

RPM 目前可用於 build 各式作业平台之程式套件, 如 Intel i38
6、 安装 Linux 之 Digital Alpha、 与 Sparc 机器, 而且有人
测试报告, 说明它也可以在 SGI 与 HP 工作站上使用。 RPM 有许
多特色, 使得它能够轻松地支援在各式作业平台上 build 程式套
件, 第一个特色便是在 /etc/rpmrc 档案里的 ``optflags'' 设定项
目, 当我们在 build 软体套件时, 它可用於指定平台架构的相关
设定值。 另一个特色是 spec 档案里的 ``arch'' macro 项目,
根据所要进行 build 的平台架构, 您可以指定它们执行不同的工
作。 另一个特色是在档案 header 处的 ``Exclude'' 设定项目。

7.1. Sample spec File

下列以 ``fileutils'' 程式套件为例, 其 spec 档案的部份内
容, 可用来在 Alpha 与 Intel 平台架构上, 进行 build 的工
作。 

     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*

     .
     .
     .

7.2. Optflags

在此一□例中, 您可以发现 ``optflags'' 设定项目, 是如何由 
/etc/rpmrc 档案中发挥作用。 首先决定您所进行 build 动作的机
器, 是哪一种平台架构, 请将其正确之设定值, 指定到 
RPM_OPT_FLAGS。 您必须针对程式套件之 Makefile 档案, 进行
patch 的动作, 将一些通用的变数设定值, 加以改变以适用於您
的环境 ( 如 -m486 与 -O2 )。 您可以 install 这份 source 套
件, 接著解开 source 并检查其 Makefile 档案, 以进一步找出
更好的设定方式, 然後观察 Makefile 的 patch 内容, 以了解我
们必须做哪些改变。

7.3. Macros

%ifarch 此一 macro 设定项目是非常重要的, 在许多场合, 您须要
只针对某一特定平台架构, 进行一两个 patch 工作, 这种情况
下, RPM 能够让您仅针对某一平台架构, 采用必要的 patch。

在上述□例中, fileutils 有个提供给 64 bit 机器使用的 patch
, 很明显地, 这项 patch 仅需要由 Alpha 机器所采用, 因此,
我们针对 64 bit 的 patch 部份, 增加一个 %ifarch 的 macro 设
定项目, 其□例如下:

     %ifarch axp
     %patch1 -p1
     %endif

这样能保证, 除了 Alpha 机器之外, 其他平台架构的机器并不会
采用此 patch。

7.4. Excluding Architectures from Packages

您可以在一个目录内, 同时管理各式作业平台的 RPM 原始档案,
这项功能使得我们在制作程式套件的时候, 不必限定於某些作业平
台上。 因此您可以这样下指令: 

     rpm --rebuild /usr/src/SRPMS/*.rpm

使得正确的程式套件能够被 build。 如果您尚未移植某个应用程式
至某一特定的作业平台, 可以加上这样的一行内容: 

     ExcludeArch: axp

到 source 程式套件当中, spec 档案的 header 处, 然後在原本
进行 build 的作业平台上, 再做一次 rebuild 动作。 此时, 您
就有了一份在 Intel 机器上 build 完成的 source 程式套件, 同
时它也很容易便能移□至 Alpha 机器上。

7.5. Finishing Up

使用 RPM 来制作「多作业平台」的程式套件, 通常会比各别在该
平台制作来得容易, 而且随著您制作越多的程式套件, 其效应会
更加明显, 因为, 我们可以参考其他类似的原始程式套件内容,
得以处理制作时遇到的问题。


RPM HOWTO (RPM at Idle) : Multi-architectural RPM Building
Previous: Building RPMs
Next: Copyright Notice 

--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.244.16]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.127毫秒