[linux-l] Bug Tracker der sich gescheit updaten lässt

Peter Ross Peter.Ross at bogen.in-berlin.de
Sa Aug 15 14:24:23 CEST 2015


Quoting Olaf Radicke <briefkasten at olaf-radicke.de>:

> Hallo Peter,
>
>> Peter Ross <Peter.Ross at bogen.in-berlin.de> hat am 14. August 2015 um 03:52
>> geschrieben:
>> Sowie Du etwas konfiguriert hast, musst Du diese Konfiguration anwenden.
>
> Ja und? Wenn sich das Konfigurationsformat in einer Version verändert,
> erwarte ich, das die Applikation die alte Konfiguration konvertiert und
> ggf. sinnvolle Standardwerte für neue Parameter setzt.

Das Format hat sich meines Wissens nicht geaendert.

Es ist Sache des Paketmanagements, ob die Konfiguration beim Update  
erhalten bleibt.

Ich mache generell keine Paketupdates, da ich die schon genannten  
Jails verwende.

Update heisst neues Jail unter /jails/<jailname>/<zeitstempel>,  
Konfiguration (aus dem Subversion-repository) und dann wird das alte  
durch das neue Jail ersetzt.

Auf die Art und Weise habe ich die alte Version zur Verfuegung, wenn  
was schiefgeht. (Bei Redmine kommt noch ein mysqldump dazu).

Generell ist eine Konfiguration nichts wert, wenn masn sie nicht aus  
einer "Vanilla-Installation" heraus rekonstruieren kann.

Sicher kannst Du was anderes als die Shell nehmen  Die Shell hat den  
Vorteil, dass sie ueberall vorhanden ist, und in "gut kontrollierten"  
Umgebungen (wie einer frischen Installation ohne nutzergenerierte  
Dateien) kann man durchaus deterministisches Verhalten erwarten.

Das Dir gegebene Beispielskript habe ich fuer einige Jahre erfolgreich  
verwendet, wie viele andere, die ich in inzwischen 20 Jahren  
Unix-Administration geschrieben habe. Defensives Testen gehoert  
natuerlich auch dazu. Zumeist haben meine Skripte einen  
"Testlaufparameter", dann wird das Skript mit echo="echo"  
durchgefuehrt (vort jedem Kommando steht ${echo}, so dass statt der  
Ausfuehrung angezeigt wird, was geschrieben werden soll.

>> Wenn ein Programm eine Datenbank verwendet, kann sich die Struktur
>> aendern, deshalb das Migrationsskript.
>
> Die Anwendung sollte erkennen können, auf welchen Versionsstand sich
> die DB befindet. Schon alleine um sicherzustellen, das eine DB nicht
> korrupt geht. Das Konvertieren der DB sollte die Applikation übernehmen,
> denn die Entwickler sollten ihre DB besser kennen als die Admins.

Wenn Dein Update via Paketmanager die DB-Migration enthaelt, merkst Du  
davon gar nichts.

Wenn nicht, denn darfst das alles gern in Dein "olaf-redmine.deb"  
verpacken, dann hat sich das.

>> Das alles laesst sich in einem Skript durchfuehren. Nichts, was
>> irgendwie Deiner Aufmerkdsamkeit beduerfte, wenn das Skript da ist.
>
> Bash ist nicht gerade für seine Fehlertoleranz bekannt.

Das war gar keine bash. #!/bin/sh

> Zudem sind Bash-Skripte langsam.

Kann jemand mal jemand mit diesem Unfug aufhoeren? Es geht hier um den  
Aufruf von weniger als einer Handvoll Binaries, bei einer  
Installation, die Du vielleicht einmal im Quartal ausfuehrst.. Selbst  
in Assembler geschrieben wuerdest Du vielleicht 'ne Millisekunde pro  
Quartal "gewinnen".

>> Ich habe langsam das Gefuehl, es gibt im Linux-Lager Bestrebungen, das
>> System undurchschaubar zu machen, und das Sicherheit keine Rolle mehr
>> spielt.
>
> Es gibt ja (mittlerweile) unter Linux verschiedene Container-
> Technologieehen mit unterschiedlichen Ansätzen und Schwerpunkten.
> Unter Linux ist die Sache ja erst im Kommen. Da ist klar, das
> man dann erst mal Lehrgeld zahlt.

Man koennte statt der halbdurchdachten Neuerfindung des Rades durchaus  
auch seit Jahren funktionierende Systeme verwenden, wie z.B.  
FreeBSD/jails/ZFS.. Aber "nichts ist gut, wenn es nicht aus unserem  
Stall stammt und da vermurkst wurde".

Anyway, von Pragmatik kann eh wohl kaum die Rede sein, wenn jemand  
Redmine ausschliesst, weil das Kopieren von drei Konfigurationsdateien  
und einem Skriptaufruf seinem Schoenheitsideal wieder spricht..

Soll Deine Software vielleicht neben einer "schoenen" Installation  
auch noch eine Funktion haben??

Es gruesst
Peter





Mehr Informationen über die Mailingliste linux-l