Software sollte man generell nicht als root kompilieren, das gilt auch für RPM-Quellpakete.

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

  1. Datei ~/.rpmmacros anlegen. Diese sollte in etwa so aussehen:

    %_topdir   <homedir>/RPM
  2. 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
  3. 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/tmp

Das ~/.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.

RPM/BuildAlsUser (zuletzt geändert am 2007-12-23 22:47:44 durch localhost)