SRC RPMs installieren mit apt und/oder rpm

Aus Linupedia.org
Version vom 19. August 2006, 09:46 Uhr von Rolle (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Dieses Howto ist nach besten Wissen und Gewissen geschrieben, trotzdem übernehme ich keinerlei Haftung auf Richtigkeit oder Vollkommenheit.

1. Voraussetzungen

Wenn man das Howto mit apt machen will, benötigt man logischerweise ein funktionierendes apt und man muss wissen wie man die sources.list bearbeitet. Ansonsten sind alle nötigen Tools im Paket rpm, was auf jedem Suse-System installiert ist.

2. Vorbemerkung

Wir arbeiten hier fast ausschließlich als normaler Benutzer, da so das System vor Beschädigungen besser geschützt ist.

3. Erstellen der notwendigen Verzeichnisse

Das machen wir so:

mkdir -p ~/packages/SOURCES ~/packages/SRPMS ~/packages/BUILD ~/packages/SPECS ~/packages/RPMS/i386 ~/packages/RPMS/athlon ~/packages/
RPMS/i486 ~/packages/RPMS/i586 ~/packages/RPMS/i686 ~/packages/RPMS/noarch

mkdir -p erstellt, wenn nötig, die fehlenden Unterverzeichnisse, somit muss man nicht jedes Verzeichnis einzeln erstellen. Die Tilde "~" am Anfang ist ein Ersatz für den Pfad zum Verzeichnis des Benutzers, der den Befehl aufruft. Bei mir ist "~" gleichbedeutend mit "/home/daniel".

4. Setzen der RPM-Macros

RPM-Macros sind vergleichbar mit Variablen. Benutzerspezifische Macros werden in der ~/.rpmmacros gesetzt. Man setzt sie so:

%macroname         wert

Aufrufen kann man Macro's mit %{macroname}.

In meiner ~/.rpmmacros steht im Moment:

# SuSE Release 
%suserel        0.suse092-daniel 

# Buildroot 
%_topdir        ~/packages

Das Macro suserel wird bei den .src.rpm der suser-* Repositories benutzt. Dieser Text erscheint dann auch, je nach .src.rpm, im endgültigen Namen. z.B. synaptic-0.55.3-0.suse092-daniel.i586.rpm . Dieses Macro ist kein Standardmacro (weder von rpm direkt noch von Suse) und Macro's haben nur eine Wirkung, wenn sie im SPEC-File des .src.rpm benutzt werden. Deshalb kann es sein, dass es bei einigen .src.rpm's keinerlei Wirkung hat.

_topdir ist nötig, da wir die Pakete in einem anderen Verzeichnis als standardmäßig (/usr/src/packages), wo meist nur root Zugriff hat, erstellen.

5. Abhängigkeiten auflösen

5.1 mit RPM

Wenn man kein apt verwendet muss das .src.rpm lokal auf dem Computer vorliegen. Deshalb ist es bei diesem Schritt Voraussetzung, dass das .src.rpm schon heruntergeladen wurde.

Mit

rpm -qRp name-des-Pakets.src.rpm

Erhält man die Pakete, die man zum Kompilieren des .src.rpm's benötigt.

5.2 mit apt

Zuerst muss man das Repository mit dem gewünschten Paket in der sources.list eingetragen haben oder auch nicht, wenn man das Paket schon heruntegeladen hat. (Mit "apt-cache policy paket" bekommt man die möglichen Repositories in denen das gewünschte .src.rpm liegen kann.)

Die Abhängigkeiten löst man auf mit (muss man als root machen):

sudo apt-get build-dep paketname

oder wenn das Paket schon auf dem Computer vorliegt

sudo apt-get build-dep /pfad/zum/paket/paketname.src.rpm

Damit werden alle benötigten Pakete heruntergeladen.

6. Kompilieren des .scr.rpm's und Erstellen des Binary-RPM's

6.1 mit RPM

Zum Bauen des .src.rpm's genügt ein:

rpmbuild --rebuild /pfad/zum/paket/paketname.src.rpm 

Mit --with=<option> bzw. --without=<option> kann man wie beim ./configure bei .tar.gz's Optionen aktivieren/deaktivieren.

6.2 mit apt

apt-get --compile source paketname

bzw.

apt-get --compile source /pfad/zum/paket/paketname.src.rpm

6.3 Fehler durch nicht aufgelöste Abhängigkeiten

Es kann sein, dass bei einigen .src.rpm's die Abhängigkeiten nicht vollständig sind, deshalb entweder bei diesem Schritt darauf achten, welche Pakete als fehlend gemeldet werden oder besser noch auf der Homepage des Projekts nach den nötigen Pakete erkundigen, da im .src.rpm normalerweise die Originalsourcen !!!

7. Installieren des fertigen RPM's

Den Namen mit dem kompletten Pfad des Pakets erhält man ca. 15 Zeilen vor dem Ende der Ausgabe in der Zeile, dei mit Wrote: beginnt. Z.B.

Wrote: /home/daniel/packages/RPMS/i586/synaptic-0.55.3-suse092.daniel.i586.rpm

7.1 mit rpm

sudo rpm -Uvh packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm

7.2 mit apt

sudo apt-get install packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm

8. Schlussbemerkung

Man kann, wenn man will auch rpm und apt mischen. Z.B. kann man die Abhängigkeiten mit apt lösen und das Paket dann mit rpmbuild bauen, da man mit apt keine Optionen, die den Kompiliervorgang betreffen, übergeben/ändern kann.

Fertig


daniel2000