mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: René H. (Firma: Herr) (hb9frh)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: Daniel A. (daniel-a)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
René H. schrieb:
> auf einfachem Weg

checkinstall

Autor: René H. (Firma: Herr) (hb9frh)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: René H. (Firma: Herr) (hb9frh)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: zufaulzumanmelden (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: René H. (Firma: Herr) (hb9frh)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: test (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: René H. (Firma: Herr) (hb9frh)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: zufaulzumanmelden (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: W. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.