deb-systemd-helper und instanziierende Units

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

deb-systemd-helper und instanziierende Units

Beitrag von scientific » 22.03.2017 23:52:10

Hi Leute!

Ich hoffe hier auf Verständnis und vor allem auch auf Fachwissen zu stoßen.
Ich baue diverse Debian-Pakete. Keine Source-Pakete, wo Build-Informationen enthalten sind, sondern nur solche, wo div. selbstgeschriebene Scripte installiert werden sollen.
Konkret eines davon ist eine von mir entwickelte Backup-Suite für btrfs. Gesteuert werden die verschiedenen Intervalle der Erstellung über systemd-Units.
Es gibt mkbackup@daily.service, mkbackup@hourly.service, mkbackup@weekly.service... und noch einige andere.

Prinzipiell ist es natürlich möglich, im postinst und prerm-Skript eine direkte Verlinkung in die entsprechenden *.wants-Verzeichnisse in /etc/systemd/system/... zu erzeugen, oder gleich direkt die Links in das Paket zu packen.

Die Sache ist aber damit sehr unschön. Ich habe auch sehr schwachbrüstige Rechner in meiner Obhut, die noch dazu sehr selten eingeschaltet werden. Auf diesen Rechnern habe ich bloß die automatische Erstellung eines Snapshots nach dem Einstecken der externen Platte aktiviert, sonst ist bei nahezu jedem Boot die Erstellung eines Snapshots fällig (auch wenn ich nur die wöchentlichen aktiviert hätte... Stichwort anacron - aber auf systemd), das trotz btrfs auf der langsamen Platte den Boot bzw. den Login massiv verzögert...

Da diese schwachen Rechenr ohnehin nur ein-, zweimal die Woche aufgedreht werden, sind auch keine großartigen Datenbestandsänderungen von Sitzung zu Sitzung zu erwarten, und so reicht es auch, alle zwei oder drei Wochen einmal einen Snapshot zu erstellen. (apt upgrade löst allerdings ebenso einen Snapshot aus, das mache ich aber separat der Nutzung der User).

Auf einem anderen Rechner mit häufiger Datenbestandsänderung und schneller SSD mache ich stündlich, täglich, wöchentlich, nach jedem Boot, nach jedem Upgrade usw. Snapshots, da diese das System da auch nicht merkbar ausbremsen.

Wenn ich nun die aktivierten Intervalle fest im Paket verdrahte, werden die am schwachbrüstigen Rechner bei jedem Upgrade wieder gesetzt, was dann wieder zum Ausbremsen beim Boot/Login führt. Und so wie ich deb-systemd-helper verstanden habe, soll dieses ja genau das vermeiden. Einmal ein Service installiert und konfiguriert soll es beim Upgrade/Remove und Wiederinstallieren die vorherige Konfiguration belassen, da diese in einem Status-File hinterlegt ist.

deb-systemd-helper jedoch ist nur für "normale" Units ausgelegt, nicht aber für instanziierende (mkbackup@daily.service, mkbackup@weekly.service...)

Ich habe jetzt mir vollkommen rudimentären perl-Kenntnissen (deb-systemd-helper ist in perl verfasst, ich hab aber noch nie perl programmiert und habe meine Kenntnisse von anderen Sprachen angewendet... ) und eine eigene Version dieses Helper-Skriptes gebaut.

Ich habe es jetzt ein wenig getestet, und offenbar funktioniert das sogar ganz gut. Es erstellt die korrekten Links in /var/lib/systemd/deb-systemd-helper-enabled

Das Skript verwende gebe ich in meinen Debian-Paketen anstelle von deb-systemd-helper an. Zu finden ist es in der jeweils aktuellen Fassung hier:

https://github.com/xundeenergie/my-serv ... -helper-xe

Ich würde mich sehr freuen, wenn hier jemand Paketiert und dieses Skript ebenfalls testen und mir dann Rückmeldung geben kann.
Fehlt da noch etwas? Muss ich deb-systemd-invoke auch noch anpassen? Wozu wird dieses Helper-Skript überhaupt verwendet?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten