Hallo Zusammen,
ich habe auf meinem Debian Derivat gcc/g++ 9.1 kompiliert mit allen
Abhängigkeiten dazu.
Das ganze benutzt die üblichen Autotools. Gerne würde ich die Packges
der Allgemeinheit zur Verfügung stellen, es muss ja nicht jeder dasselbe
nochmals machen. Weiss jemand ob ich auf einfachem Weg ein rpm erstellen
kann?
Neue .spec Files schreiben macht mich jetzt nicht besonders an.
Grüsse,
René
René H. schrieb:> ich habe auf meinem Debian Derivat gcc/g++ 9.1 kompiliert mit allen> Abhängigkeiten dazu.René H. schrieb:> Weiss jemand ob ich auf einfachem Weg ein rpm erstellen> kann?
Ahm... Debian nutzt .deb, nicht .rpm. Schaue immer zuerst, ob es schon
ein Packet gibt, und wer der Maintainer ist. Ein Packet gcc-9, version
9.1.0-10 ist schon längst in debian (testing und unstable)
https://tracker.debian.org/pkg/gcc-9 , da braucht man nichts mehr weiter
machen. Früher oder später übernehmen das dann auch die Derivate, wie
ist davon abhängig, welche Art von Derivat es ist (standalone, blend,
sonstiges, etc.).
Und wenn du ein neues Packet da rein bringen willst, musst du:
1) Die Packaging Daten erstellen (das, was im debian/ verzeichnis
ist), anlegen.
2) Das muss sich dann auf einem frischen System mit "apt-get build-dep
.; debuild -us -uc" builden lassen
3) Du lädst nur die source packages hoch, nicht das binär zeug. Das
wird dann von debians build servern gebaut.
4) Du musst als Maintainer das Packet dann bei Problemen auch jeweils
wieder in stand bringen, sonst ist es schnell wieder draussen.
Wie genau man ein neues Packet in debian aufgenommen bekommt, weiss ich
aber auch noch nicht. Ich habe aber ein paar eigene Projekte, bei denen
ich das eventuell bald mal nachsehen werde.
René H. schrieb:> Neue .spec Files schreiben macht mich jetzt nicht besonders an.
Du kannst die von einem ähnlichen Packet als Vorlage nehmen.
Aber du kommst nicht drumherum exakt alles zu prüfen, niemand mag
schnell hingepfushte Pakete die nicht richtig funktionieren. Ist halt
schon etwas an Arbeit was man dort rein stecken muss.
Daniel A. schrieb:> Ahm... Debian nutzt .deb, nicht .rpm.
Mist, natürlich, sorry, auf der Arbeit arbeiten wir mit RHEL deshalb die
Verwechslung.
Daniel A. schrieb:> Und wenn du ein neues Packet da rein bringen willst, musst du:> 1) Die Packaging Daten erstellen (das, was im debian/ verzeichnis> ist), anlegen.> 2) Das muss sich dann auf einem frischen System mit "apt-get build-dep> .; debuild -us -uc" builden lassen> 3) Du lädst nur die source packages hoch, nicht das binär zeug. Das> wird dann von debians build servern gebaut.> 4) Du musst als Maintainer das Packet dann bei Problemen auch jeweils> wieder in stand bringen, sonst ist es schnell wieder draussen.
Ja, damit habe ich Erfahrungen, von mir sind ein paar Printertreiber in
Ghostscript und ein Kernel Modul zu finden. Nur mit Debian kenne ich
mich noch nicht aus (ich hatte immer SuSE),
Daniel A. schrieb:> Früher oder später übernehmen das dann auch die Derivate,
Stimmt, es spricht nichts dagegen dass ich das bin :-).
Danke Dir für die Informationen, ich werde das versuchen.
Bernd K. schrieb:> checkinstall
Wird gerade installiert, ich gebe bescheid, Danke Bernd.
Grüsse
René
René H. schrieb:>> checkinstall
Scheint das zu machen was ich will, danke (kannte ich noch nicht). Ich
habe das make install aber bereits gemacht.
Ein checkinstall -D --install=no
liefert Fehlermeldungen, dass die Header Dateien bereits existieren.
Hast Du einen Tipp?
Grüsse,
René
Bezüglich checkinstall: das ist ’ne quick&dirty-Lösung. Und zwar so
schmutzig, dass man damit erstellte Pakete nicht der Allgemeinheit zur
Verfügung stellen möchte. Das erstellte Paket funktioniert, wenn
überhaupt, u.U nur auf dem eigenen System, und das auch nur, solange
sich nicht zuviel bei den Sachen ändert, von denen es abhängt.
zufaulzumanmelden schrieb:> Bezüglich checkinstall: das ist ’ne quick&dirty-Lösung. Und zwar so> schmutzig, dass man damit erstellte Pakete nicht der Allgemeinheit zur> Verfügung stellen möchte. Das erstellte Paket funktioniert, wenn> überhaupt, u.U nur auf dem eigenen System, und das auch nur, solange> sich nicht zuviel bei den Sachen ändert, von denen es abhängt.
Ok, verstanden. Es sind gesamt 5 Packges zu machen. Ich werde mich wohl
oder übel mit Debian Packges auseinandersetzen müssen. .spec kenne ich,
von Debian habe ich noch keinen Plan.
Grüsse,
René
zufaulzumanmelden schrieb:> Bezüglich checkinstall: das ist ’ne quick&dirty-Lösung. Und zwar so> schmutzig,
Schmutzig aber effektiv ;-)
Naja, so schmutzig ist es nun auch wieder nicht, immerhin tut es was man
als ersten Schritt auch selbst machen würde, es schaut sich an welche
Dateien wo hinkommen und packt die dann genau in dieser Weise in ein
.deb
Es ist äußerst nützlich was selbstkompiliertes bei sich zu installieren
wenn man weiß daß man alle installierten Dateien wieder entfernen kann,
quasi das automatisch erzeugte undo für jedes noch so invasive "make
install", ein beweisbar korrektes "make uninstall" das nichts
versehentlich vergessen kann.
Bzgl der Abhängigkeiten, die Arbeit hast Du mit jeder Methode: Du musst
wissen oder in Erfahrung bringen was die Abhängigkeiten sind und die
Liste der Abhängigkeiten ins Paket reinschreiben lassen, dann bekommst
Du es auch auf anderen Maschinen zum Laufen weil es einen zwingt dort
alle Abhängigkeiten ebenfalls zu installieren.
Man kann checkinstall auch aus einem script aufrufen wenn man das
gleiche Paket öfter bauen will und gleich an der Kommandozeile alle
Felder inklusive Abhängigkeiten Debian-Konform angeben, dann sehe ich
nicht warum das dann so erzeugte Paket eine mindere Qualität haben
sollte. Man muss halt wissen was man erreichen will und auf was man
verzichten kann.
Bernd K. schrieb:> dann sehe ich nicht warum das dann so erzeugte Paket eine mindere> Qualität haben sollte
- Evtl. fehlen Patches die das die Software Debian konform macht?
- Evtl. legt die Software im Betrieb Dateien an die bei der
Deinstallation auch gelöscht werden wollen?
- Evtl. will man Dateien für cron, logrotate installieren?
- Evtl. will man die Software ins Startupsystem einbinden (init.d,
upstart usw.).
- Evtl. will man für die Software Nutzer/Grupprn anlegen?
- Evtl. braucht die Software Einträge für sudo oder udev?
So als Beispiele...
Ich hoffe ich habe die richtigen Paketquellen erwischt...
https://salsa.debian.org/toolchain-team/gcc-defaults/tree/master/debian
So ein Packet möchte ich nicht selbst von Grund neu erstellen wenn ich
nicht unbedingt muss.
Ich würde diese Paketquelle nehmen und auf meine Bedürfnisse anpassen,
wenn es aus irgendeinem Grund notwendig wäre.
test schrieb:> Bernd K. schrieb:>> dann sehe ich nicht warum das dann so erzeugte Paket eine mindere>> Qualität haben sollte>> - Evtl. fehlen Patches die das die Software Debian konform macht?> - Evtl. legt die Software im Betrieb Dateien an die bei der> Deinstallation auch gelöscht werden wollen?> - Evtl. will man Dateien für cron, logrotate installieren?> - Evtl. will man die Software ins Startupsystem einbinden (init.d,> upstart usw.).> - Evtl. will man für die Software Nutzer/Grupprn anlegen?> - Evtl. braucht die Software Einträge für sudo oder udev?>> So als Beispiele...
Trifft alles auf gcc nicht zu. Ich habe es erst mal in /usr/local
installiert.
Das Package müsste dann sicher in /usr.
Ich werde sicher darauf achten ein sauberes Package abzuliefern.
Grüsse,
René
Insbesondere solltest du drauf achten, dass es nicht mit ‘nem gcc-8.3
(derzeit in Stable) kollidiert, das seine Sachen ebenfalls unter /usr
ablegt, und für den Betrieb mancher Sachen zwingend notwendig ist, und
daher nicht einfach so deinstalliert werden kann.
Auch wäre drauf zu achten, dass der ganze Kram um gcc herum (libc et al)
nicht angefasst wird, weil das u.U. das gesamte System zerlegen würde.
Gerade bei so einem zentralen Paket ist’s nicht trivial, das ordentlich
hinzubekommen. Zusätzliche Installation nach /opt oder eben /usr/local
wäre okay, allerdings müssen dann, um’s zu nutzen, auch diverse Pfade
angepasst werden – was wiederum zu oben angedeuteten Problemen führen
kann.
Am einfachsten (aber nicht besonders flexibelsten) fand ich den Paketbau
auf Debian mit equivs. Dabei legt man sich mit `equivs-control
<controldatei>` eine "Steuerungsdatei" an und passt sie nach eigenen
Bedürfnissen an. Mit `equivs-build <controldatei>` kann man dann eine
.deb erstellen.