다음 이전 차례

7. 다중 아키텍처에서 사용할 수 있는 RPM 만들기

RPM은 인텔 i386, 디지탈 알파 리눅스, 스팍용 패키지를 만드는데 사용할 수 있다. RPM은 SGI와 HP 웍스테이션에서도 잘 동작한다고 보고되었다.여기에는 패키지를 모든 플랫폼에서 쉽게 빌드할 수 있는 몇 가지 특징이 있다. 첫 번째 것으로는 etcrpmrc/의 ``optflags'' 지시자가 있다. 여기에서는 소프트웨어를 빌드할 때 아키텍처에 종속된 플래그를 세팅 할 수 있다. 명세 파일 안에 있는 다른 기능으로 ``arch'' 매크로가 있다. 그것은 여러분이 만드는 아키텍처에 의존되는 서로 다른 것들을 다루는데 사용할 수 있다. 또다른 기능으로 헤더의 ``Exclude'' 가 있다.

7.1 명세 파일 예제

여기에 나오는 것은 ``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*

.
.
.

7.2 Optflags

이 예제에는, 어떻게 etcrpmrc/에서 ``optflags'' 지시자가 쓰이는지 볼 수 있다. 빌드하고자 하는 아키텍처가 어떤것인지에 따라 다르지만, RPM_OPT_FLAGS에 적당한 값이 주어진다. 여러분이 사용하고자 하는 (-m486 and -O2와 같은) 지시자 안의 이 변수를 사용하기 위해서는 패키지의 Makefile을 패치하여야 한다. 여러분은 소스 패키지를 설치함으로 그리고 소스를 풀고 Makefile을 검토 하는데 무엇을 할 필요가 있는지 더 잘 알수 있다. 그다음 Makefil의 패치를 보고 어떠한 변화가 이루어졌는지 본다.

7.3 매크로

%ifarch 매크로는 여기 있는 것들 중 가장 중요하다. 보통 여러분이 둘 이상 아키텍처에 한하는 특정한 패치를 만들 필요가 있는 경우, 여러분은 RPM에서 한 아키텍처에만 패치를 적용할 수 있다.

다음의 예제에서, fileutils는 64비트 머신에 대한 패치를 가지고 있다. 분명히, 여기서는 알파에 대해서만 패치가 적용되어야 한다. 따라서 우리는 64비트 매크로와 같이 %ifarch 매크로를 추가한다.

%ifarch axp
%patch1 -p1
%endif

여기서는 알파 외의 아키텍처에서 패치가 적용되지 않을 것이라고 확인한다.

7.4 패키지에서 제외되는 아키텍처

여러분이 모든 플랫폼의 소스 RPM들을 하나의 디렉토리에서 관리할 수 있다. 우리는 특정한 아키텍처에서 만들어지는``exclude'' 패키지의 기능을 수행하였다. 따라서 여기에는 여러분이 다음과 같이 할 수 있다

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

그리고 바르게 만들어진 패키지가 만들어진다. 여러분이 한 응용프로그램을 특정한 플랫폼에서 이식한 적이 없다면, 여러분이 할 일은 소스 패키지의 명세 파일의 헤더에 다음과 같을 줄을 추가하여 주는 것이다.

ExcludeArch: axp

그리고 패키지를 여러분이 빌드하고자 하는 플랫폼에서 다시 빌드한다. 여러분은 인텔에서 빌드할 수 있는 소스 패키지를 가지고 있고 알파에서는 이 과정을 간단히 건너뛸 수 있다.

7.5 마무리

여러 아키텍처 사용할 패키지를 만들기 위해서 RPM을 사용하는 것은 보통 두 플랫폼에서 패키지를 각각 구하는 것보다 쉽다. 더 어려운 패키지를 빌드하는 경우에는 훨씬 쉽다, 항상 그렇지만, 가장 도움이 될 만한 것은 RPM을 빌드할 때 비슷한 소스 패키지를 살펴보는 것이다.


다음 이전 차례