Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 27.03.2023 18:14:18
Hallo liebe User,
Ziel ist es, Programme aus den Quellen zu verwenden. Als Beispiel habe ich
stterm verwendet. Es hat kaum Abhängigkeiten, ist klein und die Konfiguration ist nur durch kompilieren möglich. Außerdem ist es auch als fest konfiguriertes Binärpaket verfügbar. Nun hat man meiner Meinung nach drei Möglichkeiten.
- Man erzeugt sich ein lokales *.deb Paket und installiert dieses Paket.
Vorteil: Die Software inklusive Abhängigkeiten sollten vom Paketsystem sauber gehandhabt werden.
Nachteil: Man hat mehr Arbeit, das lokale Setup zu erstellen. Allerdings funktioniert die Vorgehensweise nach https://www.debian.org/doc/manuals/debi ... ng.de.html für mein einfaches Programm problemlos. Man muss allerdings einiges an Tools installieren. Das waren nach meiner Erinnerung knapp 200MByte. Aus der Sicht von Desktop Environment Nutzern nicht der Rede wert, für Minimalisten vielleicht doch.
- Man installiert das offizielle Binary und überschreibt das Binary mit dem selbst kompilierten Executable.
Vorteil: Man spart sich die Arbeit mit dem Bau eines eigenen *.deb Setups.
Nachteil: Nach einem Update hat man das neue aber mit Debian spezifischer Konfiguration. Das lässt sich allerdings leicht automatisch detektieren und melden.
- Man kompiliert die Sources und kopiert das Binary nach /usr/local/bin.
Nachteil: Wenn sich Abhängigkeiten wie Libraries ändern kann das Programm eventuell nicht richtig funktionieren oder abstürzen. Alle Abhängigkeiten müssen auch manuell ermittelt, installiert und gepflegt werden. Die Probleme steigen mit der Komplexität des Programms.
Vorteil: Man muss sich nicht mit Debian befassen, bekommt die aber unter Umständen bei Problemen um die Ohren gehauen.
Wie handhabt ihr das?
Vorab vielen Dank für eure Einschätzungen/Hinweise/Korrekturen,
Christoph
-
DeletedUserReAsG
Beitrag
von DeletedUserReAsG » 27.03.2023 18:25:34
chrbr hat geschrieben: 27.03.2023 18:14:18
Wie handhabt ihr das?
Ich entscheide im Einzelfall:
chrbr hat geschrieben: 27.03.2023 18:14:18
Als Beispiel habe ich
stterm verwendet.
In diesem Fall würde ich zum Beispiel einfach das Source-Paket von Debian nehmen, meine Anpassungen vornehmen und ohne weiteres Umhergefrickel ein sauberes Paket bauen lassen.
chrbr hat geschrieben: 27.03.2023 18:14:18
Man installiert das offizielle Binary und überschreibt das Binary mit dem selbst kompilierten Executable.
… auf so eine Idee muss man erstmal kommen m(
chrbr hat geschrieben: 27.03.2023 18:14:18
Man kompiliert die Sources und kopiert das Binary nach /usr/local/bin.
Nachteil: Wenn sich Abhängigkeiten wie Libraries ändern kann das Programm eventuell nicht richtig funktionieren oder abstürzen. Alle Abhängigkeiten müssen auch manuell ermittelt, installiert und gepflegt werden.
Den Nachteil hast du auch bei der „Lösung“ davor.
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 27.03.2023 18:36:18
Hallo @niemand,
vielen Dank für deine Meinung.
niemand hat geschrieben: 27.03.2023 18:25:34
chrbr hat geschrieben: ↑ zum Beitrag ↑
27.03.2023 18:14:18
Man installiert das offizielle Binary und überschreibt das Binary mit dem selbst kompilierten Executable.
… auf so eine Idee muss man erstmal kommen m(
Mit der Methode könnte man die Checksummen der Dateien aus /usr/bin und dem Eigenkompilat vergleichen und bei einer Differenz alarmieren. Das ginge auch schön per cronjob. Etwas krude ist das schon, da gebe ich dir gerne recht
.
-
tobo
- Beiträge: 2336
- Registriert: 10.12.2008 10:51:41
Beitrag
von tobo » 27.03.2023 18:42:57
Ich würde a) in Kombination mit c) anwenden - b) scheidet völlig aus. Also aus den Suckless-Sources ein Deb-Paket bauen und nach /usr/local/bin installieren.
Wobei ich der Meinung bin, dass diese Suckless-Vorgehensweise für ein Binärpaketsystem komplett unbrauchbar ist. Wenn du also nicht die Grundkonfiguraton gebrauchen kannst, dann such' dir was anderes. Du hast bestenfalls theoretische Chancen, wenn du auf den Debian-Quelltext die versionstechnisch weit gestreuten Suckless-Patches anwenden willst.
-
Meillo
- Moderator
- Beiträge: 9224
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 27.03.2023 18:58:03
tobo hat geschrieben: 27.03.2023 18:42:57
Ich würde a) in Kombination mit c) anwenden - b) scheidet völlig aus.
Sehe ich auch so. Die zweite Option sollte man nie verwenden. Sie hat keine Vorteile aber einige Nachteile.
Alles was ich von Hand kompiliere sind kleine Programme, die installiere ich dann nach /usr/local/bin oder nach ~/bin. Ein eigenes Debian-Paket zu bauen war fuer mich fast immer zu viel Arbeit. Das lohnt sich fuer mich eigentlich nur wenn ich ein bestehendes Debian-Paket abaendern will. Suckless-Programme installiere ich von Hand aus dem Git-Repo. Generell passe ich lieber $PATH an, anstatt bei der Installation Kompromisse zu machen.
Use ed once in a while!
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 27.03.2023 19:11:03
Hallo @tobo und @Meillo,
erst einmal Danke für eure Meinung. Die Suckless Methode ist eigentlich nicht gut geeignet für Betriebssysteme, die eher auf Binaries setzen. Da stimme ich euch voll zu. Ein einfacher Parser für ein Konfig File kann doch nicht so riesig sein, oder?
Das ssterm ist halt schön klein als Beispiel.
Viele Grüße,
Christoph
-
KP97
- Beiträge: 3701
- Registriert: 01.02.2013 15:07:36
Beitrag
von KP97 » 27.03.2023 19:34:54
Ich kompiliere öfter was aus den Sourcen, mache meine gewünschten Anpassungen und erstelle dann ein Paket mit
checkinstall.
Das kann dann mit
dpkg -i installiert werden und geht nicht am Paketmanager vorbei.
Wohin der Pfad zeigt, kann ich auch selbst bestimmen, alles in allem eine saubere und simple Lösung.
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 27.03.2023 21:13:08
KP97 hat geschrieben: 27.03.2023 19:34:54
Ich kompiliere öfter was aus den Sourcen, mache meine gewünschten Anpassungen und erstelle dann ein Paket mit
checkinstall.
Hallo KP97,
checkinstall kannte ich bisher noch nicht. Das schaue ich mir auf jeden Fall an. Meiner Meinung nach ist es von Vorteil, wenn ein Programm nicht am Paketmanager vorbei läuft. Bei einem Zwerg wie
stterm, wo es alle Jubeljahre (ungeprüfte Behauptung) mal ein Update gibt mag es ok sein, aber wo ist die Grenze?
Vielen Dank für den Hinweis,
Christoph
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 28.03.2023 16:50:52
KP97 hat geschrieben: 27.03.2023 19:34:54
Ich kompiliere öfter was aus den Sourcen, mache meine gewünschten Anpassungen und erstelle dann ein Paket mit
checkinstall.
Das kann dann mit dpkg -i installiert werden und geht nicht am Paketmanager vorbei.
Wohin der Pfad zeigt, kann ich auch selbst bestimmen, alles in allem eine saubere und simple Lösung.
Ausnahmsweise mal ein Full-Quote. Mit dem Testobjekt
stterm ist das unglaublich einfach.
- Mit apt-get sources die Quellen holen.
- Die Abhängigkeiten installieren.
- Im Arbeitsverzeichnis checkinstall ohne Optionen starten. Nur den Namen des neuen Paketes anpassen.
- Falls man in der Konfigurationsdatei Install deaktiviert hat musss man nur noch mit dpkg das *.deb installieren.
chrbr hat geschrieben: 27.03.2023 18:14:18
Allerdings funktioniert die Vorgehensweise nach
https://www.debian.org/doc/manuals/debi ... ng.de.html für mein einfaches Programm problemlos. Man muss allerdings einiges an Tools installieren. Das waren nach meiner Erinnerung knapp 200MByte.
Für
checkinstall brauch man fast nichts.
Vielen Dank an KP97 für den hervorragenden Hinweis,
Christoph
-
KP97
- Beiträge: 3701
- Registriert: 01.02.2013 15:07:36
Beitrag
von KP97 » 28.03.2023 17:00:12
Ich wollte auch noch sagen, daß man in der conf in /etc/checkinstallrc die Zeile 111 mit Null überschreiben sollte, also TRANSLATE=0.
Dann erfolgen je nach Paket keine weiteren Abfragen zu Dokus etc.
Weiterhin vergebe ich in der Beschreibung unter Punkt 3 immer eine hohe Version wie z.B. 9 oder 10, also immer eine Version, die es im Repo nicht gibt.
Dann kann ich in z.B. Synaptic sofort sehen, welche Pakete von mir sind und nicht aus dem Repo stammen.
Ich lasse auch das Paket nicht direkt installieren, da ich zum Kompilieren ein separates Testsystem habe. Da will man ja nicht alle Pakete haben, die man selbst erstellt.
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 28.03.2023 17:12:57
Hallo @KP97,
vielen Dank für die Ergänzung. Die Webseite ist auch einen Besuch wert. Ich fühle mich gleich 10 Jahre jünger
.
Viele Grüße,
Christoph
-
Meillo
- Moderator
- Beiträge: 9224
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 28.03.2023 17:27:17
KP97 hat geschrieben: 28.03.2023 17:00:12
Weiterhin vergebe ich in der Beschreibung unter Punkt 3 immer eine hohe Version wie z.B. 9 oder 10, also immer eine Version, die es im Repo nicht gibt.
Wie meinst du das? Was genau meinst du hier?
Fuer eine lokale Version sollte an die Version des Ausgangspakets einfach nur ein Suffix angehaengt werden, in meinem Fall z.B. ``+meillo1'' und bei meiner naechsten Ueberarbeitung des Pakets ``+meillo2'', dann wird es korrekt upgegradet.
Siehe:
https://www.debian.org/doc/manuals/debi ... d-1.18.4.6
Use ed once in a while!
-
KP97
- Beiträge: 3701
- Registriert: 01.02.2013 15:07:36
Beitrag
von KP97 » 28.03.2023 20:21:54
@Meillo
Der offizielle Weg ist sicher etwas anders als der meine. Da ich die Pakete aber nur für mich selbst verwende, ignoriere ich den und nehme meinen bequemen und übersichtlichen.
Ich habe mal ein Bild angehängt, wie das aussieht. Ich habe z.B. hardinfo und mtpaint auf Gtk3 gebracht, xfburn habe ich optisch verändert.
Die eigene Version erspart mir z.B. das pinning, da es ja im Sid auch eine aktuelle Version gibt.
-
dakuan
- Beiträge: 107
- Registriert: 28.04.2011 22:09:39
Beitrag
von dakuan » 28.03.2023 20:53:42
Ich verwende normalerweise eine Variante der Methode c).
Echte Debian Pakete zu bauen ist mir zu kompliziert. Ist schlimmer als eine korrekte Steuererklärung abzugeben und selbst das schaffe ich nicht ohne professionelle Hilfe.
Ich mache das jetzt alles mit Makefile's, auch schon ab 2 Quelldateien (aktuell habe ich aber bis zu 30). Da ist dann aber auch alles dabei, also auch *.desktop und Icons.
Wichtig ist mir dabei das die Ziele install, uninstall und clean vorhanden sind. Wenn man also das Makefile behält, kann man das alles rückstandslos wieder entfernen. Checkinstall hatte ich mal ausprobiert, hat aber nicht funktioniert. Mein Zielverzeichnis für das Binary ist dabei immer /usr/local/bin/.
-
chrbr
- Beiträge: 623
- Registriert: 29.10.2022 15:53:26
Beitrag
von chrbr » 28.03.2023 22:34:50
dakuan hat geschrieben: 28.03.2023 20:53:42
Checkinstall hatte ich mal ausprobiert, hat aber nicht funktioniert.
Ich hatte anfangs auch Schwierigkeiten. Ich war auch der Meinung, dass man einiges im Benutzerinterface einstellen muss und die richtigen Kommandozeilenoptionen angeben muss. Da lag ich falsch. In meinem Fall habe ich checkinstall von Verzeichnis /usr/src/stterm/stterm-0.8.4 aus aufgerufen nachdem ich stterm mit make compiliert habe. checkinstall hat sich wohl die richtigen Infos anhand der Dateien geholt, die mit apt-get source stterm kopiert wurden.
Ich muss auch zugeben, dass ich kein Programmierer bin. Bei Themen wie automake und ähnlichen Tools sieht es bei mir düster aus. Ich kann mir vorstellen, dass dir so etwas leicht von der Hand geht.
Der bisherige Thread hat ja auch gezeigt, dass viele Wege nach Rom führen und viele User je nach Situation auch mal verschiedene Wege gehen. Was soll einen das auch wundern bei einem OS, das so viele Möglichkeiten bietet.
.
Viele Grüße,
Christoph