[HOWTO] .SRC.RPM's installieren mit apt und/oder rpm

Alles rund um die Installation Eures Linuxsystems, sowie die Updatefunktionen des Systems und das Paketmanagement

Moderator: Moderatoren

Antworten
Benutzeravatar
TheTuxKeeper
Member
Member
Beiträge: 127
Registriert: 31. Jan 2005, 17:18
Kontaktdaten:

[HOWTO] .SRC.RPM's installieren mit apt und/oder rpm

Beitrag von TheTuxKeeper » 6. Sep 2005, 19:10

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:

Code: Alles auswählen

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:

Code: Alles auswählen

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

In meiner ~/.rpmmacros steht im Moment:

Code: Alles auswählen

# 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

Code: Alles auswählen

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):

Code: Alles auswählen

sudo apt-get build-dep paketname
oder wenn das Paket schon auf dem Computer vorliegt

Code: Alles auswählen

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:

Code: Alles auswählen

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

Code: Alles auswählen

apt-get --compile source paketname
bzw.

Code: Alles auswählen

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.

Code: Alles auswählen

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

Code: Alles auswählen

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

Code: Alles auswählen

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 ;)

Fehler, Verbesserungsvorschläge und sonstiges zum Howto bitte melden!!!
Zuletzt geändert von TheTuxKeeper am 9. Sep 2005, 23:21, insgesamt 2-mal geändert.
IBM X30 -- PIII M 1200MHz -- 512MB Ram
OpenSUSE 10.2 -- KDE
Gentoo 2006.1 ~x86

Werbung:
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 9. Sep 2005, 09:36

Diskussion, Lob, Kritik oder Fragen bitte hier stellen:
Fragen zu [HOWTO] .SRC.RPM's installieren mit apt und/oder rpm
http://www.linux-club.de/viewtopic.php?p=221596

Danke :)
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast