Software sollte man generell nicht als root kompilieren, das gilt auch für RPM-Quellpakete.
Inhaltsverzeichnis
Vorarbeiten
In manchen Distributionen (z.B. SuSE) haben im systemweiten Compilierungs-Verzeichnis von RPM /usr/src/packages auch die normalen User Schreibberechtigung. In so einem Fall ist keine der hier genannten Vorarbeiten notwendig und man kann direkt beginnen, mit den ganz unten genannten Anweisungen binary RPM-Pakete zu bauen.
Andernfalls sind ein paar Vorarbeiten notwendig, um als normaler User RPMs bauen zu können. Diese werden im Folgenden beschrieben.
Per Hand
Datei ~/.rpmmacros anlegen. Diese sollte in etwa so aussehen:
%_topdir <homedir>/RPM
Ab jetzt benutzt RPM zum Zusammenbauen der RPMs das Verzeichnis <homedir>/RPM (kann natürlich auch ein anderes Verzeichnis sein, man braucht natürlich Schreibrechte). In diesem Verzeichnis erwarter RPM folgende Unterverzeichnisse:
RPM |-- BUILD |-- RPMS | |-- i386 | |-- i486 | |-- i586 | |-- i686 | `-- noarch |-- SOURCES |-- SPECS `-- SRPMS
Das wars, ab jetzt baut RPM das Zeug im %_topdir!
Per Script
Man kann auch diese kleine Skript benutzen, um eine Build-Umgebung zu erstellen.
myname="$(getent passwd $USER|awk -F: '{print $5}')"
myemail="$USER@$(hostname)"
cat << EOF > ~/.rpmmacros
%_topdir $HOME/RPM
%_tmppath $HOME/RPM/tmp
%packager $myname <$myemail>
EOF
cat << EOF > ~/.rpmrc
buildarchtranslate: i386: i586
buildarchtranslate: i486: i586
buildarchtranslate: i586: i586
buildarchtranslate: i686: i586
EOF
mkdir -p $HOME/RPM/SPECS
mkdir -p $HOME/RPM/RPMS/i386
mkdir -p $HOME/RPM/RPMS/i486
mkdir -p $HOME/RPM/RPMS/i586
mkdir -p $HOME/RPM/RPMS/i686
mkdir -p $HOME/RPM/RPMS/noarch
mkdir -p $HOME/RPM/BUILD
mkdir -p $HOME/RPM/SOURCES
mkdir -p $HOME/RPM/SRPMS
ln -s /var/tmp $HOME/RPM/tmpDas ~/.rpmrc sollte man evtl. noch anpassen, wenn man für eine andere Archiketur als i586 bauen will. Man kann es auch einfach weglassen, dann wird für die jeweils passendste Rechnerarchitektur gebaut.
Fertige Pakete bauen
Fertige .src.rpm Pakete kann man dann mit rpmbuild --rebuild paket.src.rpm in binäre (=installierbare) Form bringen - die fertigen Pakete liegen dann unter RPM/RPMS/<arch>.
Siehe auch RPM Package Building Introduction.
Achtung: Ab RPM in der Version 4 muss man zum Erstellen von Paketen den Befehl rpmbuild benutzen.
Bei Problemen kann es hilfreich sein, rpmbuild mit vorangestelltem "sh -x" aufzurufen, dadurch erfährt man etwas mehr über die Aktivitäten von rpmbuild.
