Page 1 of 1

rpm dummy

Posted: 19. Mar 2006 10:36
by brum
Hallo,

ich möchte ein rpm-Paket durch eine Software ersetzen, welche ich nur als Source zur Verfügung habe. Und ich möchte dann nicht durch das -aketmanagment auf fehlende Abhängigkeit hingrwiesen zu werden. Kann man bei den RPM-Verfahren auch so was wie einen Platzhalter, ein Dummy-Paket bauen ?

bye brum

Re: rpm dummy

Posted: 19. Mar 2006 17:36
by Janka
brum wrote:ich möchte ein rpm-Paket durch eine Software ersetzen, welche ich nur als Source zur Verfügung habe. Und ich möchte dann nicht durch das -aketmanagment auf fehlende Abhängigkeit hingrwiesen zu werden. Kann man bei den RPM-Verfahren auch so was wie einen Platzhalter, ein Dummy-Paket bauen ?
Für diesen Zweck gibt es checkinstall.

Statt "make install" als letztem Schritt einer Installation aus dem Quellen gibt man "checkinstall" ein. Dann wird ein Paket (auf rpm-Systemen normalerweise rpm) erzeugt, das man ganz normal mit der Paketmanagementsoftware des Systems bearbeiten kann.

Janka

Posted: 19. Mar 2006 18:14
by komsomolze
hallo,

Im Fall von SuSE kannst Du als Vorlage das *.src.rpm der Software verwenden:
Hierin befindet sich ein *.spec-File. das das Bauen des *.rpm aus den enthaltenen Quellen steuert. Passe das speq-File an und ersetze die Quellen durch deine eigenen. Nach dem Bauen deines rpm-Paketes ('rpm -bb SPEC-File') kannst das erhaltene Paket installieren

http://www.linux-magazin.de/Artikel/aus ... /rpm1.html
http://www.linux-magazin.de/Artikel/aus ... M/rpm.html

rpm

Posted: 19. Mar 2006 19:41
by brum
Hallo

und danke für die Tips, aber Beides geht ncht immer:

checkinstall funktioniert nicht mit Postgresql-Source und in dem Fall, wo man keinen Dreisatz ausführt, wie Kerneltreiber installieren.

Mit Source habe ich die wirklich die Source.tgz und nicht die source.src.rpm gemeint :wink:

bye brum

rpm

Posted: 19. Mar 2006 19:45
by brum
Hallo

und danke für die Tips, aber Beides geht ncht immer:

checkinstall funktioniert nicht mit Postgresql-Source und in dem Fall, wo man keinen Dreisatz ausführt, wie Kerneltreiber installieren.

Mit Source habe ich die wirklich die Source.tgz und nicht die source.src.rpm gemeint :wink:

Bei Debian gibts dafür die Methode, Dummipakete zu bauen, die dem Paketmanagment das Vorhandensein des Paketes vorgaukelt.
Sowas suche ich analog für rpm.
Will ich z.B. den Madwifi-Treiber durch einen Madwifi-NG-Treiber ersetzen, welchen ich nicht als rpm habe, so meckert die Hardwarerkennung und meint: Bitte CD einlegen :roll:

bye brum

Posted: 19. Mar 2006 20:15
by komsomolze
@brum:
Ich habe Dich auch so verstanden, dass Du die source.tgz bei Dir vorliegen hast.

In den source.rpm sind die normalen Quellen der Software enthalten zuzueglich der von SuSE darauf angewendeten Patches.
zur Funktion:
Die source.rpm von SuSE entpacken sich in eine Struktur nach /usr/src/packages oder /usr/src/rpm. Beim Anwenden von
'rpm -v -bb SPEC-Datei' (Bitte bei den Links und in der manpage nachsehen)
wird die source entpackt, die Patches angewendet, kompiliert und ein rpm erstellt.
Hierbei sollst Du jetzt ansetzen: Die Quellen durch Deine ersetzen und die spec-Datei anpassen.

Der Grund fuer das Ganze ist, dass Dir die enthaltene spec-Datei als Vorlage dienen soll, denn eine solche 'from scratch' zu Erstellen ist kein Zuckerschlecken, das Anpassen sollte allerdings easy sein.
Wenn Du dir die Datei mal ansiehst wirst Du meist das bekannte "configure, make, make install" erkennen, angereichert mit einer Patchliste und Aufraeum- und SteuerSequenzen.
Fuer Dich ist dann noetig, die Patchliste zu loeschen und den Namen des Quellpaketes zu aendern.
Ein bisschen damit zu experimentieren hat noch kein Linux zum Absturz gebracht.

;-)

Posted: 20. Mar 2006 9:37
by brum
Danke,
wieder was dazugekernt, werde es mal probieren ;-)

bye brum

teufelskreis

Posted: 20. Mar 2006 18:35
by brum
Hallo,

jetzt brauch ich noch eine geniale Idee:

Habe das src.rpm ausgepackt

$ rpm2cpio postgresql-8.1.3-1mdk.srcp.rpm |cpio --extract --make-directories --no-absolute-filenames --preserve-modification-time

die Patches rausgeschmissen und aus dem SPEC auskommentiert, die source.bz2 und md5 nach /usr/src/RPM/SOURCES/ kopiert.

Jetzt habe ich das Problem beim Ausführen von
# rpm -bb postgres.spec
das da kurz vor Ende der Aktion ein initdb ausgeführt wird, was root nicht darf, das darf nur user postgres :cry: und Abbruch ...

bye brum

Posted: 22. Mar 2006 21:53
by komsomolze
hallo,

Lauft die Kompilierung denn mit dem eigentlichen Inhalt des src.rpm durch?

Obwohl sich das eher nach einer Eigenheit der postgre-Quellen anhoert, und dann solltest Du vielleicht jetzt einen postgre/mandrake-Thread starten.
Es handelt sich ja auch um ein umfangreiches und komplexes Paket.

rpm

Posted: 23. Mar 2006 8:48
by brum
Hallo,

habe dann als user das nochmal durchgeführt und es lief durch...
Also im Home die Verzeichnisse wie im /usr/src/RPM nachgebaut und die und Pfade gesetzt.
Es lief dann auch mit der Originalsource.tar.gz durch. Allerding musste ich die Distrie-Patche wieder reinnehmen, die waren in den spec-File irgendwie definiert.

Brachte mir aber unterm Strich nixxxx, ich wollte eigentlich nur den Befehlsvorrat wie im pro-linux-OpenLogos-Beitrag (pg_lscluster, ...) haben. Auch als ich dass dann mit dem RedHat-spec ausführte hatte ich die im PostgreSQL Befehle nicht :(

bye brum

Re: rpm

Posted: 24. Mar 2006 18:16
by komsomolze
Hallo,
brum wrote:habe dann als user das nochmal durchgeführt und es lief durch...
Also im Home die Verzeichnisse wie im /usr/src/RPM nachgebaut und die und Pfade gesetzt.
wie im Lehrbuch ;-)
brum wrote:Es lief dann auch mit der Originalsource.tar.gz durch. Allerding musste ich die Distrie-Patche wieder reinnehmen, die waren in den spec-File irgendwie definiert.
->Schwierig, zum einen sind die Patches ja Sicherheitspatches, zum anderen wird damit die Originalquelle an die Distribution angepasst und sind zudem noch auf genau diese Quellen zugeschnitten. Dass sie mit einer anderen Quellen-Version voellig fehlerfrei funktionieren ist eher unwahrscheinlich. Du muesstest Dir die Patche dann vornehmen und sie auf Deine Quellen-Version anpassen.
brum wrote:Brachte mir aber unterm Strich nixxxx, ich wollte eigentlich nur den Befehlsvorrat wie im pro-linux-OpenLogos-Beitrag (pg_lscluster, ...) haben. Auch als ich dass dann mit dem RedHat-spec ausführte hatte ich die im PostgreSQL Befehle nicht :(
->Neues Problem, geht weit ueber meine Horizont. Wenn Du allerdings Deine Quellen angepasst und kompiliert bekommst, kannst Du halt mit dem SPEC- und 'rpm -bb'-Mechanismus Dein RPM erzeugen. :wink: