Forum: Compiler & IDEs Debian gcc 9.1 package / auto tools


von René H. (Gast)


Lesenswert?

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é

von Daniel A. (daniel-a)


Lesenswert?

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.

von test (Gast)


Lesenswert?

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.

von Bernd K. (prof7bit)


Lesenswert?

René H. schrieb:
> auf einfachem Weg

checkinstall

von René H. (Gast)


Lesenswert?

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é

von René H. (Gast)


Lesenswert?

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é

von zufaulzumanmelden (Gast)


Lesenswert?

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.

von René H. (Gast)


Lesenswert?

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é

von Bernd K. (prof7bit)


Lesenswert?

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.

von test (Gast)


Lesenswert?

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...

von test (Gast)


Lesenswert?

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.

von test (Gast)


Lesenswert?

Ups, eher hier...
https://salsa.debian.org/toolchain-team/gcc/tree/gcc-7-debian/debian

Da muss man sich dann wohl doch eher mit ernsthaften Interesse einlesen 
um erstmal zu verstehen wie das alles zusammenspielt.

von René H. (Gast)


Lesenswert?

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é

von zufaulzumanmelden (Gast)


Lesenswert?

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.

von W. (Gast)


Lesenswert?

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.