RPM은 인텔 i386, 디지탈 알파 리눅스, 스팍용 패키지를 만드는데 사용할
수 있다. RPM은 SGI와 HP 웍스테이션에서도 잘 동작한다고
보고되었다.여기에는 패키지를 모든 플랫폼에서 쉽게 빌드할 수 있는 몇
가지 특징이 있다. 첫 번째 것으로는 etc
rpmrc/의 ``optflags''
지시자가 있다. 여기에서는 소프트웨어를 빌드할 때 아키텍처에 종속된
플래그를 세팅 할 수 있다. 명세 파일 안에 있는 다른 기능으로 ``arch''
매크로가 있다. 그것은 여러분이 만드는 아키텍처에 의존되는 서로 다른
것들을 다루는데 사용할 수 있다. 또다른 기능으로 헤더의 ``Exclude'' 가
있다.
여기에 나오는 것은 ``fileutils'' 패키지의 명세 파일의 일부분이다. 알파와 인텔에서 모두 빌드할 수 있도록 셋업하였다.
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*
.
.
.
이 예제에는, 어떻게 etc
rpmrc/에서 ``optflags'' 지시자가 쓰이는지
볼 수 있다. 빌드하고자 하는 아키텍처가 어떤것인지에 따라 다르지만,
RPM_OPT_FLAGS에 적당한 값이 주어진다. 여러분이 사용하고자 하는 (-m486
and -O2와 같은) 지시자 안의 이 변수를 사용하기 위해서는 패키지의
Makefile을 패치하여야 한다. 여러분은 소스 패키지를 설치함으로 그리고
소스를 풀고 Makefile을 검토 하는데 무엇을 할 필요가 있는지 더 잘 알수
있다. 그다음 Makefil의 패치를 보고 어떠한 변화가 이루어졌는지 본다.
%ifarch
매크로는 여기 있는 것들 중 가장 중요하다. 보통 여러분이
둘 이상 아키텍처에 한하는 특정한 패치를 만들 필요가 있는 경우,
여러분은 RPM에서 한 아키텍처에만 패치를 적용할 수 있다.
다음의 예제에서, fileutils는 64비트 머신에 대한 패치를 가지고
있다. 분명히, 여기서는 알파에 대해서만 패치가 적용되어야 한다. 따라서
우리는 64비트 매크로와 같이 %ifarch
매크로를 추가한다.
%ifarch axp
%patch1 -p1
%endif
여기서는 알파 외의 아키텍처에서 패치가 적용되지 않을 것이라고 확인한다.
여러분이 모든 플랫폼의 소스 RPM들을 하나의 디렉토리에서 관리할 수 있다. 우리는 특정한 아키텍처에서 만들어지는``exclude'' 패키지의 기능을 수행하였다. 따라서 여기에는 여러분이 다음과 같이 할 수 있다
rpm --rebuild /usr/src/SRPMS/*.rpm
그리고 바르게 만들어진 패키지가 만들어진다. 여러분이 한 응용프로그램을 특정한 플랫폼에서 이식한 적이 없다면, 여러분이 할 일은 소스 패키지의 명세 파일의 헤더에 다음과 같을 줄을 추가하여 주는 것이다.
ExcludeArch: axp
그리고 패키지를 여러분이 빌드하고자 하는 플랫폼에서 다시 빌드한다. 여러분은 인텔에서 빌드할 수 있는 소스 패키지를 가지고 있고 알파에서는 이 과정을 간단히 건너뛸 수 있다.
여러 아키텍처 사용할 패키지를 만들기 위해서 RPM을 사용하는 것은 보통 두 플랫폼에서 패키지를 각각 구하는 것보다 쉽다. 더 어려운 패키지를 빌드하는 경우에는 훨씬 쉽다, 항상 그렇지만, 가장 도움이 될 만한 것은 RPM을 빌드할 때 비슷한 소스 패키지를 살펴보는 것이다.