/usr/share/doc/HOWTO/de-html/DE-RPM-HOWTO-8.html is in doc-linux-de 2003.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux RPM HOWTO: RPM's für verschiedene Architekturen</TITLE>
<LINK HREF="DE-RPM-HOWTO-7.html" REL=previous>
<LINK HREF="DE-RPM-HOWTO.html#toc8" REL=contents>
</HEAD>
<BODY>
<IMG SRC="next.png" ALT="Weiter">
<A HREF="DE-RPM-HOWTO-7.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-RPM-HOWTO.html#toc8"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s8">8.</A> <A HREF="DE-RPM-HOWTO.html#toc8">RPM's für verschiedene Architekturen</A></H2>
<P>RPM unterstüzt jetzt das Erstellen von Paketen für Intel i386, Digital
Alpha mit Linux und Sparc. Berichte besagen, daß es auch auf SGI's und
HP's funktionieren soll. Eine Reihe von Eigenschaften vereinfachen das
Erstellen von Paketen auf allen Plattformen. Die erste ist die ``optflags''
Direktive in <CODE>/etc/rpmrc</CODE>. Sie kann dazu benutzt werden, Flags, die
beim Übersetzen von Paketen verwendet werden, auf architekturspezifische
Werte zu setzen. Ein anderes Beispiel sind die ``arch'' Makros in der
Spec-Datei. Sie können dazu benutzt werden, unterschiedliche Aktionen
auszulösen, je nachdem, auf welcher Architektur übersetzt wird. Eine andere
Möglichkeit ist die ``Exclude'' Direktive im Header.</P>
<H2><A NAME="ss8.1">8.1</A> <A HREF="DE-RPM-HOWTO.html#toc8.1">Beispiel für eine Spec-Datei</A>
</H2>
<P>Der folgende Ausschnitt ist Teil des ``fileutils''-Paketes. Es ist für
das Übersetzen auf der Intel- und Alphaplattform konfiguriert.
<BLOCKQUOTE><CODE>
<PRE>
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*
.
.
.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss8.2">8.2</A> <A HREF="DE-RPM-HOWTO.html#toc8.2">Optflags</A>
</H2>
<P>In diesem Beispiel wird gezeigt, wie man die ``optflags''-Direktive aus
<CODE>/etc/rpmrc</CODE> einsetzt. In Abhängigkeit von der jeweiligen Architektur
wird die Variable <CODE>RPM_OPT_FLAGS</CODE> auf den entsprechenden Wert gesetzt.
Das Makefile muß angepaßt werden, damit hier dann diese Variable anstelle
der üblichen Direktiven wie <CODE>-m486</CODE> oder <CODE>-O2</CODE> verwendet
wird. Man kann sich ein Gefühl dafür verschaffen, was gemacht werden muß,
indem man sich erwähntes Quellpaket installiert und das Makefile
ansieht. Dazu kann man sich dann im Vergleich den Patch anschauen, um zu
sehen, welche Änderungen notwendig sind.</P>
<H2><A NAME="ss8.3">8.3</A> <A HREF="DE-RPM-HOWTO.html#toc8.3">Makros</A>
</H2>
<P>Sehr wichtig ist das Makro <CODE>%ifarch</CODE>. Meistens muß man den einen oder
anderen Patch machen, der nur für eine bestimmte Architektur angewandt
werden soll. In diesem Fall sorgt der RPM mit Hilfe dieses Makros für die
korrekte Verwendung der Patches. Im obigen Beispiel hat das fileutils-Paket
einen Patch für 64-bit Architekturen. Dieser Patch soll natürlich im Moment
nur für Alpha-Rechner angewandt werden. Deshalb wird ein <CODE>%ifarch</CODE> Makro
um den 64-bit Patch herumgelegt:
<BLOCKQUOTE><CODE>
<PRE>
%ifarch axp
%patch1 -p1
%endif
</PRE>
</CODE></BLOCKQUOTE>
Das stellt sicher, daß der Patch ausschließlich für Alphas verwendet wird.</P>
<H2><A NAME="ss8.4">8.4</A> <A HREF="DE-RPM-HOWTO.html#toc8.4">Ausschließen von Architekturen in Paketen</A>
</H2>
<P> Damit man die Quell-rpm's für alle Plattformen weiterhin in einem
Verzeichnis aufbewahren kann, haben wir die Möglichkeit geschaffen, Pakete
von der Übersetzung auf bestimmten Architekturen auszuschließen. Das
ermöglicht weiterhin Dinge wie eine Übersetzung ganzer Gruppen von Paketen
mit einem Mal, z.B. mit einem
<BLOCKQUOTE><CODE>
<PRE>
rpm --rebuild /usr/src/SRPMS/*.rpm
</PRE>
</CODE></BLOCKQUOTE>
,wobei man trotzdem dann nur die passenden übersetzten Pakete erhält.
Falls ein Programm noch nicht auf eine bestimmte Plattform portiert wurde,
reicht ein Einfügen einer Zeile wie:
<BLOCKQUOTE><CODE>
<PRE>
ExcludeArch: axp
</PRE>
</CODE></BLOCKQUOTE>
in den Header der Spec-Datei des Quellpaketes. Danach erstellt man das rpm auf
der Architektur, auf der es läuft, und erhält so ein Paket, das
z.B. auf Intel übersetzt wird, aber auf Alphas einfach übergangen wird.</P>
<H2><A NAME="ss8.5">8.5</A> <A HREF="DE-RPM-HOWTO.html#toc8.5">Zusammenfassung</A>
</H2>
<P>Oft ist es einfacher, den RPM zum Erstellen von Paketen für mehrere
Architekturen einzusetzen als das Paket selber dazu zu bringen. Wie
üblich ist der beste Weg, wenn man mit seinem rpm nicht mehr weiter weiß,
einen Blick auf ähnliche andere rpm's zu werfen.</P>
<HR>
<IMG SRC="next.png" ALT="Weiter">
<A HREF="DE-RPM-HOWTO-7.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-RPM-HOWTO.html#toc8"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|