SRC RPMs installieren mit apt und/oder rpm: Unterschied zwischen den Versionen
Rolle (Diskussion | Beiträge) |
Yehudi (Diskussion | Beiträge) (kleine Überarbeitung, Lizenz, Baustein) |
||
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Dieses Howto ist nach besten Wissen und Gewissen geschrieben, trotzdem übernehme ich keinerlei Haftung auf Richtigkeit oder Vollkommenheit. | Dieses Howto ist nach besten Wissen und Gewissen geschrieben, trotzdem übernehme ich keinerlei Haftung auf Richtigkeit oder Vollkommenheit. | ||
− | + | == 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. | 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. | ||
− | + | == Vorbemerkung == | |
Wir arbeiten hier fast ausschließlich als normaler Benutzer, da so das System vor Beschädigungen besser geschützt ist. | Wir arbeiten hier fast ausschließlich als normaler Benutzer, da so das System vor Beschädigungen besser geschützt ist. | ||
− | + | ||
+ | == Erstellen der notwendigen Verzeichnisse == | ||
Das machen wir so: | Das machen wir so: | ||
Zeile 18: | Zeile 20: | ||
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". | 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". | ||
− | + | == Setzen der RPM-Macros == | |
RPM-Macros sind vergleichbar mit Variablen. Benutzerspezifische Macros werden in der ~/.rpmmacros gesetzt. Man setzt sie so: | RPM-Macros sind vergleichbar mit Variablen. Benutzerspezifische Macros werden in der ~/.rpmmacros gesetzt. Man setzt sie so: | ||
Zeile 38: | Zeile 40: | ||
_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. | _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. | ||
− | + | == Abhängigkeiten auflösen == | |
− | + | === 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. | 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. | ||
Zeile 50: | Zeile 52: | ||
Erhält man die Pakete, die man zum Kompilieren des .src.rpm's benötigt. | Erhält man die Pakete, die man zum Kompilieren des .src.rpm's benötigt. | ||
− | + | 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.) | 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.) | ||
Zeile 64: | Zeile 66: | ||
Damit werden alle benötigten Pakete heruntergeladen. | Damit werden alle benötigten Pakete heruntergeladen. | ||
− | + | == Kompilieren des .scr.rpm's und Erstellen des Binary-RPM's == | |
− | + | === mit RPM === | |
Zum Bauen des .src.rpm's genügt ein: | Zum Bauen des .src.rpm's genügt ein: | ||
Zeile 74: | Zeile 76: | ||
Mit --with=<option> bzw. --without=<option> kann man wie beim ./configure bei .tar.gz's Optionen aktivieren/deaktivieren. | Mit --with=<option> bzw. --without=<option> kann man wie beim ./configure bei .tar.gz's Optionen aktivieren/deaktivieren. | ||
− | + | === mit apt === | |
apt-get --compile source paketname | apt-get --compile source paketname | ||
Zeile 82: | Zeile 84: | ||
apt-get --compile source /pfad/zum/paket/paketname.src.rpm | apt-get --compile source /pfad/zum/paket/paketname.src.rpm | ||
− | + | === 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 !!! | 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 !!! | ||
− | + | == 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. | 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. | Z.B. | ||
Zeile 93: | Zeile 95: | ||
Wrote: /home/daniel/packages/RPMS/i586/synaptic-0.55.3-suse092.daniel.i586.rpm | Wrote: /home/daniel/packages/RPMS/i586/synaptic-0.55.3-suse092.daniel.i586.rpm | ||
− | + | === mit rpm === | |
sudo rpm -Uvh packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm | sudo rpm -Uvh packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm | ||
− | + | === mit apt === | |
+ | |||
sudo apt-get install packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm | sudo apt-get install packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm | ||
− | + | == 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. | 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. | ||
Zeile 109: | Zeile 113: | ||
daniel2000 | daniel2000 | ||
+ | |||
+ | ---- | ||
+ | [[Paketmanager|Zurück zur Paketmanager-Übersicht]]<br/> | ||
+ | [[Category:RPM]] | ||
+ | [[Category:APT]] | ||
+ | {{LinWiki}} |
Aktuelle Version vom 24. Juni 2007, 16:36 Uhr
Dieses Howto ist nach besten Wissen und Gewissen geschrieben, trotzdem übernehme ich keinerlei Haftung auf Richtigkeit oder Vollkommenheit.
Inhaltsverzeichnis
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.
Vorbemerkung
Wir arbeiten hier fast ausschließlich als normaler Benutzer, da so das System vor Beschädigungen besser geschützt ist.
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".
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.
Abhängigkeiten auflösen
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.
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.
Kompilieren des .scr.rpm's und Erstellen des Binary-RPM's
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.
mit apt
apt-get --compile source paketname
bzw.
apt-get --compile source /pfad/zum/paket/paketname.src.rpm
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 !!!
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
mit rpm
sudo rpm -Uvh packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm
mit apt
sudo apt-get install packages/RPMS/iX86/paketname-0.suse092.daniel.iX86.rpm
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
Zurück zur Paketmanager-Übersicht
Dieser Artikel ist aus dem LinWiki (LinWiki) mit der dortigen Lizenz Attribution-Share Alike 2.5 Generic übernommen worden. Die Quelle im LinWiki unter SRC RPMs installieren mit apt und/oder rpm ist zum Zeitpunkt der Einfügung identisch mit dem, was in der Linupedia (dem Linux-Club Wiki) unter SRC RPMs installieren mit apt und/oder rpm steht. Der Artikel kann gerne überarbeitet werden. Wenn der Artikel der Quelle im Wortlaut nicht mehr entspricht, kann der Baustein entfernt werden, es muss aber die Quellenangabe unten eingefügt werden. Zudem sollte dann der Bausteine Vorlage:by-sa eingefügt werden, da der Artikel dann unter diese Lizenz fällt. Im LinWiki ist eine Liste der Autoren verfügbar. |