Debian-Conffiles nach Releasewechel mergen

0 views
Skip to first unread message

Christian Garbs

unread,
Aug 15, 2021, 5:01:47 PMAug 15
to
Mahlzeit!

Wir hatten das Thema hier schon mal angeschnitten und aus aktuellem
Anlass (Debian Bullseye ist heute erschienen) hatte ich Lust zu
basteln.

Ich habe ein kleines Script gebaut, das unter /etc nach *.{dpkg,ucf}-*
sucht und dann automatisch Merges zwischen diesen Dateien und den
echten Conffiles anbietet, also z.B. /etc/ca-certificates.conf und
/etc/ca-certificates.conf.dpkg-dist
(bzw. /etc/ca-certificates.conf.dpkg-old, je nachdem, ob man
'behalten' oder 'update' ausgewählt hat).

Nach dem Merge wird die zweite Datei automatisch gelöscht, es gibt
aber (unterhalb von /tmp, also nicht ewig haltbar) auch so eine Art
Log, wo man die Änderungen nachvollziehen kann.

Reine Löschungen und neue, noch inaktive Conffiles (*.dpkg-new) werden
ebenfalls erkannt.

Das ist heute nur kurz zusammengekloppt und nicht großartig getestet,
aber zumindest halbwegs dokumentiert (oben im Skript).

Den ersten Rechner habe ich damit schon erfolgreich umgestellt (ca. 16
Dateien waren zu mergen). Wenn meine weiteren Systeme folgen, kommt
bestimmt noch hier und da ein Fix oder eine Ergänzung dazu. Und wenn
es ganz und gar ausartet, wandert es in ein eigenes Repository.

https://github.com/mmitch/mitchscripts/blob/master/bash/merge-conffile-updates.sh

Einfach während des Updates bei den Rückfragen zu Conffiles Enter
drücken und im Anschluss das Skript laufen lassen. (Obacht, falls man
eine Konstellation im System hat, wo man sich keinen Ausfall oder
Fehlkonfiguration leisten kann, dann sollte man dort natürlich nicht
einfach Enter drücken, sondern gleich Hand anlegen. Ich brachte das
bisher nie, aber YMMV.)

- Wer was anderes als emacs/ediff benutzen will, muss die Funktion
two_way_merge() entsprechend umbauen. Man könnte auch den
Merge-Aufruf in ein eigenes Skript auslagern – gibt es dafür
irgendeinen Standard, so ähnlich wie sensible-browser usw.?

- Aktuell werden die Dateien nicht sortiert, d.h. mal steht im Merge
die alte Datei und mal die neue zuerst - da muss man genau
hingucken. Aber das sollte man eh ;-)

- Ich muss nochmal die Schalter von apt raussuchen und dokumentieren,
die die Fragen bei Conffiles automatisch beantworten, dann kann man
sich das ständige 'Enter' während der Paketinstallation sparen.


Aktuell habe ich mir damit noch nichts kaputtgemacht (wird auch nicht
passieren, ich nutze etckeeper) und ich frage mich, warum ich das
nicht schon vor drei Releasen geschrieben habe.
Und für Ubuntu und andere Debian-Ableger kann man es auch benutzen.


Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
MiPS stands for "minutes per second" and describes the speed of time.

Kay Martinen

unread,
Aug 15, 2021, 6:00:02 PMAug 15
to
Am 15.08.21 um 23:01 schrieb Christian Garbs:

> Wir hatten das Thema hier schon mal angeschnitten und aus aktuellem
> Anlass (Debian Bullseye ist heute erschienen) hatte ich Lust zu
> basteln.
>
> Ich habe ein kleines Script gebaut, das unter /etc nach *.{dpkg,ucf}-*
> sucht und dann automatisch Merges zwischen diesen Dateien und den
> echten Conffiles anbietet, also z.B. /etc/ca-certificates.conf und
> /etc/ca-certificates.conf.dpkg-dist
> (bzw. /etc/ca-certificates.conf.dpkg-old, je nachdem, ob man
> 'behalten' oder 'update' ausgewählt hat).

Und ich dachte immer das wäre im apt schon; gut genug; drin und hielte
nur das upgrade auf. Nach meinen Erfahrungen fragt der nur bei
bestimmten lokal veränderten daemon konfigs nach ob man die eigene,
maintainer oder neue/alte konfig behalten will oder selbst vergleichen will.

Was macht dein Script nun genau anders? Versucht es jede konfigdatei neu
und alt in eine zusammen zu führen? Geht das denn, ohne kenntniss der
optionen des jeweiligen files? dhcpd.conf z.b. kann durchaus mehrmals
"subnet" o.a. enthalten - im jeweiligen kontext. Wenn das script nur
eines davon übrig ließe ist die konfig vermurkst.

> two_way_merge() entsprechend umbauen. Man könnte auch den
> Merge-Aufruf in ein eigenes Skript auslagern – gibt es dafür
> irgendeinen Standard, so ähnlich wie sensib

K.A. aber vielleicht gibt es einen apt-hook oder ähnlichen mechanismus.
Schien mir jedenfalls so als ich ein zusatzpaket installierte und danach
bei upgrades immer erst enter oder Q drücken mußte um die release-notes
oder update-infos ab zu nicken - die ich anschließend noch per mail
bekam. Automatisch.

> - Ich muss nochmal die Schalter von apt raussuchen und dokumentieren,
> die die Fragen bei Conffiles automatisch beantworten, dann kann man
> sich das ständige 'Enter' während der Paketinstallation sparen.

Du meinst so was wie --yes oder --always-yes oder gibt es welche die
owner-config oder maintainer-config selektieren?


Kay

--
Posted via leafnode

Christian Garbs

unread,
Aug 16, 2021, 3:14:25 AMAug 16
to
Mahlzeit!

Kay Martinen <use...@martinen.de> wrote:
> Am 15.08.21 um 23:01 schrieb Christian Garbs:

>> Ich habe ein kleines Script gebaut, das unter /etc nach *.{dpkg,ucf}-*
>> sucht und dann automatisch Merges zwischen diesen Dateien und den
>> echten Conffiles anbietet, also z.B. /etc/ca-certificates.conf und
>> /etc/ca-certificates.conf.dpkg-dist
>> (bzw. /etc/ca-certificates.conf.dpkg-old, je nachdem, ob man
>> 'behalten' oder 'update' ausgewählt hat).
>
> Und ich dachte immer das wäre im apt schon; gut genug; drin und hielte
> nur das upgrade auf.

Das macht dpkg (oder debconf?), nicht apt, das ist eine Etage tiefer.


> Nach meinen Erfahrungen fragt der nur bei bestimmten lokal
> veränderten daemon konfigs nach ob man die eigene, maintainer oder
> neue/alte konfig behalten will oder selbst vergleichen will.

Richtig. "Selbst vergleichen" bedeutet, dass man sich auf der Shell
in das relevante Verzeichnis vorarbeitet, einen Editor startet, beide
Dateien öffnet und irgendwie zusammenführt.

Genau diesen Teil vereinfachst das Tool: Es zeigt an, dass da ein
Merge offen ist, man kann die Datei direkt auswählen und der Editor
bzw. das Mergetool geht passend konfiguriert auf. Mergen, speichern,
nächste Datei.

Außerdem passiert das nicht alles während der Installation (dann, wenn
dpkg fragt), sondern am Stück im Anschluss. Ich finde das ständige
Nachfragen sehr nervig, da muss man ja laufend danebensitzen. (Wobei
das mit zunehmend dickeren Leitungen und schnelleren Platten immer
weniger zum Problem wird. Früher hat das richtig gedauert.)

Man kann das Tool natürlich auch jedes Mal aufrufen, wenn man "Selbst
vergleichen" ausgewählt hat. Dann wird es nur genau die eine Datei
finden, die dpkg gerade gemeldet hat. Das unterstützt also auch
diesen Workflow, wie ich gerade merke ;-)


> Was macht dein Script nun genau anders? Versucht es jede konfigdatei neu
> und alt in eine zusammen zu führen?

Nein, es versucht gar nicht, irgendwas zusammenzuführen.
Es automatisiert nur zwei Dinge:

1. Welche Dateien müssen noch gemerged werden?
2. Editor/Mergetool passend für eine Datei öffnen.
(plus ein wenig Logging)

Das ist das, was ich bisher von Hand machen musste und was mich
zunehmend nervt. Auf dem Mini-System hier waren ca. 15 Dateien zu
befummeln, auf meinen viel genutzen, alten Servern werden das eher 60
bis 80 – da spart mir das sehr viel Zeit.


>> two_way_merge() entsprechend umbauen. Man könnte auch den
>> Merge-Aufruf in ein eigenes Skript auslagern – gibt es dafür
>> irgendeinen Standard, so ähnlich wie sensib

Ich wurde inzwischen auf rpmconf(1) hingewiesen. Das macht ziemlich
exakt das, was mein Skript auch tut, für RPM. Dort gibt es einen
Schalter zur Auswahl des Merge-Frontends:

| -ftype, --frontend=type
| Define which frontend should be used for merging. Valid options
| are: vimdiff, gvimdiff, diffuse, kdiff3, meld.

Den Schalter muss ich mir mal ausleihen ;-)

Außerdem schreibt der Autor als Begründung, warum er rpmconf
geschrieben hat „I came from Debian world where handling of
configuration files is directly in apt.“ Und jetzt komme ich und baue
ohne es zu wissen rpmfind für Debian nach -> We have come full circle.


> K.A. aber vielleicht gibt es einen apt-hook oder ähnlichen
> mechanismus. Schien mir jedenfalls so als ich ein zusatzpaket
> installierte und danach bei upgrades immer erst enter oder Q drücken
> mußte um die release-notes oder update-infos ab zu nicken - die ich
> anschließend noch per mail bekam. Automatisch.

Na das ist eine nette Idee und sollte auch ganz einfach sein!

Wenn ich das Skript mal "offiziell" installiert habe und es im
Suchpfad liegt (vielleicht baue ich ein Debian-Paket) kann es sich
nach jeder Installation über den Hook aufrufen lassen und einmal
gucken, ob was zu tun ist. Nice!


>> - Ich muss nochmal die Schalter von apt raussuchen und dokumentieren,
>> die die Fragen bei Conffiles automatisch beantworten, dann kann man
>> sich das ständige 'Enter' während der Paketinstallation sparen.
>
> Du meinst so was wie --yes oder --always-yes oder gibt es welche die
> owner-config oder maintainer-config selektieren?

Letzteres. Aktuell finde ich nur '-o Dpkg::Options::=--force-confnew'
für apt, aber ich meine, da gab es auch was anderes. Gehirn->Sieb,
die Stable- und Longterm-Releases von Debian und Ubuntu sind zu
selten, als dass ich mir das merke.


Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Verzweifelt kniet der Dompteur mit dem erloschenen Feuerring vor dem
Löwen: "Oooh, nein! - Springen sollst du... nicht pusten!"

Tim Ritberg

unread,
Aug 16, 2021, 5:41:26 AMAug 16
to
Am 15.08.21 um 23:58 schrieb Kay Martinen:
> Am 15.08.21 um 23:01 schrieb Christian Garbs:
>
>> Wir hatten das Thema hier schon mal angeschnitten und aus aktuellem
>> Anlass (Debian Bullseye ist heute erschienen) hatte ich Lust zu
>> basteln.
>>
>> Ich habe ein kleines Script gebaut, das unter /etc nach *.{dpkg,ucf}-*
>> sucht und dann automatisch Merges zwischen diesen Dateien und den
>> echten Conffiles anbietet, also z.B. /etc/ca-certificates.conf und
>> /etc/ca-certificates.conf.dpkg-dist
>> (bzw. /etc/ca-certificates.conf.dpkg-old, je nachdem, ob man
>> 'behalten' oder 'update' ausgewählt hat).
>
> Und ich dachte immer das wäre im apt schon; gut genug; drin und hielte
> nur das upgrade auf. Nach meinen Erfahrungen fragt der nur bei
> bestimmten lokal veränderten daemon konfigs nach ob man die eigene,
> maintainer oder neue/alte konfig behalten will oder selbst vergleichen will.
>

Genau, einfach blind zusammenmatschen ist Bullshit. Lesen und verstehen
ist angesagt. Wer das nicht will oder kann, sollte die Configdateien
auch nicht anfassen.

Tim

Marcel Mueller

unread,
Aug 17, 2021, 10:21:46 AMAug 17
to
Am 16.08.21 um 09:14 schrieb Christian Garbs:
>> Nach meinen Erfahrungen fragt der nur bei bestimmten lokal
>> veränderten daemon konfigs nach ob man die eigene, maintainer oder
>> neue/alte konfig behalten will oder selbst vergleichen will.
>
> Richtig. "Selbst vergleichen" bedeutet, dass man sich auf der Shell
> in das relevante Verzeichnis vorarbeitet, einen Editor startet, beide
> Dateien öffnet und irgendwie zusammenführt.
>
> Genau diesen Teil vereinfachst das Tool: Es zeigt an, dass da ein
> Merge offen ist, man kann die Datei direkt auswählen und der Editor
> bzw. das Mergetool geht passend konfiguriert auf. Mergen, speichern,
> nächste Datei.

Hmm, ja, diff geht mit Bordmitteln auch, aber gleichzeitig mit Editor nicht.

Tatsächlich hat mich das nie sonderlich gestört, weil geänderte
Config-Dateien mittlerweile recht selten sind. In 99% aller Fälle kann
man alternativ auch eine Custom-Datei im entsprechenden xxx.d
Verzeichnis anlegen. Das gibt keine Konflikte.
Tatsächlich wären die meisten Fälle, wo ich solche Fehlermeldungen mal
bekommen habe false positives, also Dateien, die ich nie geändert habe.
Da wähle ich dann einfach überschreiben.


> Außerdem passiert das nicht alles während der Installation (dann, wenn
> dpkg fragt), sondern am Stück im Anschluss.

Das ist natürlich ein Vorteil. Aber das kann natürlich auch nach hinten
los gehen, wenn die Datei an einer essentiellen Stelle sitzt, die auch
während der Installation relevant ist.


> Das ist das, was ich bisher von Hand machen musste und was mich
> zunehmend nervt. Auf dem Mini-System hier waren ca. 15 Dateien zu
> befummeln, auf meinen viel genutzen, alten Servern werden das eher 60
> bis 80 – da spart mir das sehr viel Zeit.

Erstaunlich. Bei mir sind es bei einem Upgrade (also Major Version) eher
3 und davon mindestens 2 false positive.
Könnte man vielleicht an mehr Stellen die Unterverzeichnisse mit den
Include-Dateien nutzen?


Marcel

Tim Ritberg

unread,
Aug 17, 2021, 12:07:14 PMAug 17
to
Am 17.08.21 um 16:21 schrieb Marcel Mueller:
>
> Erstaunlich. Bei mir sind es bei einem Upgrade (also Major Version) eher
> 3 und davon mindestens 2 false positive.
> Könnte man vielleicht an mehr Stellen die Unterverzeichnisse mit den
> Include-Dateien nutzen?
>
>

Und sich so eine kaputt Config holen?

Es führt kein Weg dran vorbei, sich die Änderungen anzusehen. Ein
Blindflug führt schnell zum kaputten/angreifbaren System.

Tim

Kay Martinen

unread,
Aug 17, 2021, 1:10:02 PMAug 17
to
Am 17.08.21 um 18:07 schrieb Tim Ritberg:
> Am 17.08.21 um 16:21 schrieb Marcel Mueller:
>>
>> Erstaunlich. Bei mir sind es bei einem Upgrade (also Major Version)
>> eher 3 und davon mindestens 2 false positive.
>> Könnte man vielleicht an mehr Stellen die Unterverzeichnisse mit den
>> Include-Dateien nutzen?

Kann warscheinlich auch nicht jeder dienst mit includes umgehen. Mir
fallen grad nur samba und apache ein obwohl es sicher mehr gibt. Und
beim isc-dhcpd hat man eh schon ein dateipuzzle. :-)

> Und sich so eine kaputt Config holen?
>
> Es führt kein Weg dran vorbei, sich die Änderungen anzusehen. Ein
> Blindflug führt schnell zum kaputten/angreifbaren System.

Ja, da finde ich eine große Konfigdatei auch "lesbarer" weil man dann
nicht mit dem Editor jedem einzelnen include hinterher rennen muß.

Aber im Prinzip schon ne nette sache mit includes wenn man in der
hauptdatei globales setzt und die unterdateien für spezifischeres
(interface, port, dir, domain, network...) nutzten kann.

Aber dann müsste auch sichergestellt sein das ein vergleichs- und
merge-tool jede einzelne include vergleicht. Nicht nur mit neueren falls
gegegen sondern auch mit der hauptdatei. In der sonst evtl. ein neuer
globaler Schalter etwas ausknipst was in einer include verwendet wird.

Und das heißt m.E. umfassendes lexikalisiches und kontext-basiertes
vergleichen. Ob es tools gibt die das leisten oder geht das schon in
richtung "merge-K.I."?

Es führt m.E. auch eh kein weg dran vorbei selbst rein zu schauen und
tools wie samba's 'testparm' oder optionen wie '--dry-run' können
allenfalls hinweise geben. Aber deren output zu analysieren und mit ein
zu bauen bläht das ganze gewiss noch mehr auf.

Nicht das ich die Arbeit an so einem Tool; oder es selbst; schlecht
reden wollte. Es sind halt nur so viele Möglichkeiten da wenn ich nur
die daemonen bedenke die ich kenne das ich zweifele ob das eine
wirkliche Erleichterung wird.

Christian Garbs

unread,
Aug 17, 2021, 2:13:15 PMAug 17
to
Mahlzeit!

Marcel Mueller <news.5...@spamgourmet.org> wrote:
> Am 16.08.21 um 09:14 schrieb Christian Garbs:

> Tatsächlich wären die meisten Fälle, wo ich solche Fehlermeldungen mal
> bekommen habe false positives, also Dateien, die ich nie geändert habe.
> Da wähle ich dann einfach überschreiben.

Um das zu merken, muss man sich die Dateien aber auch erstmal
angucken. Da vereinfacht das Tool.

Während des Mergens sagen zu können "ok, nimm einfach für alles die
neue Datei" ist dann Job des Merge-Tools – bei emacs-ediff muss ich
das Tastenkürzel dafür noch suchen ;-)


>> Das ist das, was ich bisher von Hand machen musste und was mich
>> zunehmend nervt. Auf dem Mini-System hier waren ca. 15 Dateien zu
>> befummeln, auf meinen viel genutzen, alten Servern werden das eher 60
>> bis 80 – da spart mir das sehr viel Zeit.
>
> Erstaunlich. Bei mir sind es bei einem Upgrade (also Major Version) eher
> 3 und davon mindestens 2 false positive.
> Könnte man vielleicht an mehr Stellen die Unterverzeichnisse mit den
> Include-Dateien nutzen?

Ich habe mal geguckt, was das bei dem "kleinen" System war – die Liste
ist nicht komplett:


o ich könnte auf Includes umstellen, will aber nicht/lohnt sich nicht:

- sysctl.conf


o ich will da keine Includes, sondern möglichst eine einzige Datei:

- ssh/sshd_config


o kennt kein Include bzw. das hätte nichts gebracht:

- apt/apt.conf.d/50unattended-upgrades
- cloud/cloud.cfg (Hetzner-Spezialität, aber: oh, echtes conffile!)
- exim4/conf.d/acl/30_exim4-config_check_rcpt
- exim4/conf.d/acl/40_exim4-config_check_data
- exim4/conf.d/main/02_exim4-config_options
- lighttpd/conf-available/05-auth.conf
- logrotate.conf
- needrestart/needrestart.conf
- needrestart/notify.conf
- rkhunter.conf


o vmtl. false positive

- lighttpd/conf-available/05-auth.conf



Konkretes Beispiel logrotate.conf: Ich habe die Globals 'dateext' und
'compress' aktiviert, Upstream hat einen Kommentar hinzugefügt.
Das zu mergen geht flott von der Hand und ich mache es lieber jetzt,
wo es einfach ist, als dass das über mehrere Releases auseinanderläuft.


Generell: Hast Du einen Desktop oder Server?
Auf meinen Ubuntu-Laptops sind das regelmäßig weniger Konflikte als
auf den Servern, wo ich jede Menge Dienste konfiguriert habe.

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Winzer 1: Was bekommen wir denn dieses Jahr für den Wein?
Winzer 2: So 3 bis 5 Jahre.

Christian Garbs

unread,
Aug 17, 2021, 2:19:02 PMAug 17
to
Mahlzeit!

Kay Martinen <use...@martinen.de> wrote:

> Nicht das ich die Arbeit an so einem Tool; oder es selbst; schlecht
> reden wollte. Es sind halt nur so viele Möglichkeiten da wenn ich nur
> die daemonen bedenke die ich kenne das ich zweifele ob das eine
> wirkliche Erleichterung wird.

Um das fachliche Verständnis der Configdateien kommt man nicht
drumherum. Da will ich auch gar nicht eingreifen.

Das Tool entlastet mich von den nervigen, langweiligen, repetitiven,
technischen Dingen wie „Dateien suchen“, „Editor starten“, „in
Merge-Modus wechseln“, „ja, die Zieldatei soll eine der beiden
Quelldateien überschreiben“, „ja, wirklich, ich bin mir sicher!“, „die
eine Datei löschen“ und „die andere Datei behalten“.

Und nach Deinen Ausführungen bin ich froh, dass ich nicht überall, wo
es möglich ist, die Config auf Includes verteilt habe. Das wird beim
Mergen (mit Tunnelblick auf jeweils eine Datei) echt unübersichtlich ;-)

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
Sigmund's wife wore Freudian slips.

Christian Garbs

unread,
Aug 17, 2021, 2:24:33 PMAug 17
to
Mahlzeit!

Christian Garbs <mi...@cgarbs.de> wrote:
> Kay Martinen <use...@martinen.de> wrote:

>> K.A. aber vielleicht gibt es einen apt-hook oder ähnlichen
>> mechanismus. Schien mir jedenfalls so als ich ein zusatzpaket
>> installierte und danach bei upgrades immer erst enter oder Q
>> drücken mußte um die release-notes oder update-infos ab zu nicken -
>> die ich anschließend noch per mail bekam. Automatisch.
>
> Na das ist eine nette Idee und sollte auch ganz einfach sein!

Grmpf, das ist schwieriger als erwartet.

Es gibt einen globalen Hook, bevor das erste Paket installiert wird.
Da hängt sich z.b. apt-listchanges(1) rein (das Tool, was Du
beschrieben hast). Den kann ich nicht nehmen, da sind ja die neuen
Dateien noch gar nicht ausgepackt.

Dann gibt es zwei Hooks um jeden dpkg-Aufruf - einen davor, einen
danach. Davor bringt wieder nichts. Danach ginge, aber dann würde
das Merge-Tool direkt bei jedem Paket mit Config-Konflikt anspringen.
Das will ich ja nicht, ich möchte alles am Stück nach der Installation
machen.

Also wird das wohl nichts.

(Andere einmalige Dinge wie z.B. "Manpages generieren" werden über
interne Schalter gesammelt; das ist tief im Tooling integriert, damit
es nur einmal ganz am Ende läuft und auch nur dann, wenn überhaupt
Manpages (de-)installiert wurden. Da kann ich mich aber bestimmt
nicht reinfummeln.)

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
He began to cry, unashamed. (Real men don't need to be ashamed.)
(The Long Road - Book Two of Undocumented Features)

Marcel Mueller

unread,
Aug 17, 2021, 4:11:41 PMAug 17
to
Am 17.08.21 um 20:13 schrieb Christian Garbs:
> Während des Mergens sagen zu können "ok, nimm einfach für alles die
> neue Datei" ist dann Job des Merge-Tools – bei emacs-ediff muss ich
> das Tastenkürzel dafür noch suchen ;-)

Bei Emacs muss man jedes Tastenkürzel immer suchen. Und man sollte auch
noch keine Finger verloren haben. ;-)


> Ich habe mal geguckt, was das bei dem "kleinen" System war – die Liste
> ist nicht komplett:
[...]

Ich glaube, ich habe wesentlich weniger Modifikationen.

> Generell: Hast Du einen Desktop oder Server?

Einen Mädchen-für-alles-Server (Samba, NFS, git+svn Repo, VBox, VDR mit
Autostart on Demand, PiHole etc.) und ein halbes Dutzend
Desktop-Clients, teilweise als VMs auf dem Server.

> Auf meinen Ubuntu-Laptops sind das regelmäßig weniger Konflikte als
> auf den Servern, wo ich jede Menge Dienste konfiguriert habe.

Kann sein. Die sind dafür öfter dran.
Und auf Laptops kommt dafür das ganze Geraffel für den sinnvollen
mobilen Betrieb dazu. Powertop-Settings, Akku-Thresholds, autofs und so.


Marcel

Marcel Mueller

unread,
Aug 17, 2021, 4:15:13 PMAug 17
to
Am 17.08.21 um 20:24 schrieb Christian Garbs:
> Dann gibt es zwei Hooks um jeden dpkg-Aufruf - einen davor, einen
> danach. Davor bringt wieder nichts. Danach ginge, aber dann würde
> das Merge-Tool direkt bei jedem Paket mit Config-Konflikt anspringen.
> Das will ich ja nicht, ich möchte alles am Stück nach der Installation
> machen.

Könnte man nicht bei diesen Hook nur erst mal sammeln?


> (Andere einmalige Dinge wie z.B. "Manpages generieren" werden über
> interne Schalter gesammelt; das ist tief im Tooling integriert, damit
> es nur einmal ganz am Ende läuft und auch nur dann, wenn überhaupt
> Manpages (de-)installiert wurden. Da kann ich mich aber bestimmt
> nicht reinfummeln.)

Du meinst, es gibt nichts, was zum Schluss kommt, wo man die Sammlung
ausführen könnte.
Vielleicht an ein obligatorisches Paket dran hängen, was immer weit
hinten ausgeführt wird?


Marcel

Christian Garbs

unread,
Aug 23, 2021, 4:06:54 PMAug 23
to
Mahlzeit!

Marcel Mueller <news.5...@spamgourmet.org> wrote:
> Am 17.08.21 um 20:24 schrieb Christian Garbs:

>> Dann gibt es zwei Hooks um jeden dpkg-Aufruf - einen davor, einen
>> danach. Davor bringt wieder nichts. Danach ginge, aber dann würde
>> das Merge-Tool direkt bei jedem Paket mit Config-Konflikt anspringen.
>> Das will ich ja nicht, ich möchte alles am Stück nach der Installation
>> machen.
>
> Könnte man nicht bei diesen Hook nur erst mal sammeln?

Sammeln passiert ja quasi schon (die ganzen *.dpkg-* und *.ucf-*
Dateien, die sich das Skript halt anguckt), das ist nicht das
Problem. Wenn ich mein Skript _nicht_ nach jedem einzelnen Paket
aufrufe, ist alles gut.

Aber dann fehlt genau der eine finale Aufruf:

> Du meinst, es gibt nichts, was zum Schluss kommt, wo man die Sammlung
> ausführen könnte.

> Vielleicht an ein obligatorisches Paket dran hängen, was immer weit
> hinten ausgeführt wird?

Dann müsste da Paket ja bei jeder Installation irgendeines anderen
Paketes in einer neuen Version mitinstalliert werden, damit es zum
Zuge kommt – und dann auf magische Weise auch als letztes. Das geht
soweit ich weiß beides nicht.

Da bleibt aktuell nur der manuelle Aufruf meines Skriptes.

Wenn man wüsste, wieviele Pakete noch folgen, wäre der Hook "nach
jedem Paket" doch zu gebrauchen. Aber ich habe keine Ahnung, ob das
irgendwo zu erfahren ist.

Christian Garbs

unread,
Aug 23, 2021, 4:14:07 PMAug 23
to
Mahlzeit!

Christian Garbs <mi...@cgarbs.de> wrote:

> [Conffile-Merges]

> Das ist das, was ich bisher von Hand machen musste und was mich
> zunehmend nervt. Auf dem Mini-System hier waren ca. 15 Dateien zu
> befummeln, auf meinen viel genutzen, alten Servern werden das eher 60
> bis 80 – da spart mir das sehr viel Zeit.

Die Zahl nehme ich zurück. Selbst auf dem "dicken" Server und dem
"großen" System (Desktop+Server) waren es dieses Mal auch nur jeweils
ca. 20 Merges.

Entweder war das früher schlimmer oder das manuelle Heraussuchen der
Konflikte hat mich so genervt, dass sich die Zahl in meiner Erinnerung
so aufgebläht hat. Auf jeden Fall war das so ein "och nö, das muss
ich ja jetzt auch noch machen".

Mit dem Skript war ich jetzt auf drei Systemen ganz schnell durch (und
zwei davon habe ich wortwörtlich im Halbschlaf aktualisiert – mit
manuellem Raussuchen der Dateien hätte ich das um die Uhrzeit
abgebrochen, da hätte ich mich nur ständig verheddert).

Also macht es genau das, was es soll ;-)
Ich fürchte, das fällt jetzt unter #worksforme und wird so schnell
nicht wieder angefasst.

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
"Es gibt in diesem Netz Gute und Böse. Wer die Bösen sind,
entscheiden die Guten." (Michael Ottenbruch in de.admin.news.regeln)

Marcel Mueller

unread,
Aug 25, 2021, 6:37:16 AMAug 25
to
Am 23.08.21 um 22:06 schrieb Christian Garbs:
>> Vielleicht an ein obligatorisches Paket dran hängen, was immer weit
>> hinten ausgeführt wird?
>
> Dann müsste da Paket ja bei jeder Installation irgendeines anderen
> Paketes in einer neuen Version mitinstalliert werden, damit es zum
> Zuge kommt – und dann auf magische Weise auch als letztes. Das geht
> soweit ich weiß beides nicht.

Naja, in der Praxis geht es hier ja um größere Release-Upgrades. Bei
normalen Updates ist das Standardverhalten mit 0 bis 1 Konflikten nicht
das Problem.
Und so was wie der Manpage-Trigger hat auch schon eine Trefferquote von
nahe 100% und kommt recht spät.

> Da bleibt aktuell nur der manuelle Aufruf meines Skriptes.
>
> Wenn man wüsste, wieviele Pakete noch folgen, wäre der Hook "nach
> jedem Paket" doch zu gebrauchen. Aber ich habe keine Ahnung, ob das
> irgendwo zu erfahren ist.

Würde mich auch wundern.


Marcel

Christian Garbs

unread,
Aug 27, 2021, 11:02:06 AMAug 27
to
Mahlzeit!

Thomas Noll <-_tn...@web.de> wrote:
> Am Mon, 23 Aug 2021 20:14:06 -0000 (UTC) schrieb Christian Garbs:

>> Christian Garbs <mi...@cgarbs.de> wrote:
>>
>>> [Conffile-Merges]
>>
>
>> Mit dem Skript war ich jetzt auf drei Systemen ganz schnell durch (und
>> zwei davon habe ich wortwörtlich im Halbschlaf aktualisiert – mit
>> manuellem Raussuchen der Dateien hätte ich das um die Uhrzeit
>> abgebrochen, da hätte ich mich nur ständig verheddert).
>
> Da unter dem von dir verwendeten etckeeper ein git liegt, wäre wohl
> auch ein einfaches git merge/mergetool möglich.

Aber nur, wenn ich immer die neue Version der Conffiles installiere.
Behalte ich die alten Versionen, werden die neuen Dateien
(*.dpkg-dist etc.) nicht eingecheckt.


Ich überlege gerade, wie ich das konkret machen könnte:

- Pakete installieren
- immer "neues Conffile installieren" auswählen
- am Ende der Paketinstallation checkt etckeeper automatisch ein
- `git reset HEAD~1` um den automatischen Checkin rückgängig zu machen

Dann sind die Änderungen alle vorhanden, aber noch unstaged. Da
könnte man mit einem passenden Tool schön auswählen, was man
adden/committen will und was nicht.

Was nimmt man denn dafür? Ich mache viel mit git, aber den UseCase
hatte ich wohl noch nicht. Vermutlich kann emacs/magit das irgendwie
in hübsch.

`git add -i` ist mir für den Anwendungsfall zu rustikal; dann lieber
mein Skript, ganz ohne git ;-)

Gruß
Christian
--
....Christian.Garbs....................................https://www.cgarbs.de
f u cn rd ths, itn tyg h myxbl cd.
Reply all
Reply to author
Forward
0 new messages