• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[Interessante Tips]ReleaseWechsel: Wie ist Eure Strategie ?

framp

Moderator
Teammitglied
Gerade bin ich mal wieder dabei auf meinem HomeDesktop von openSuSE 11.2 auf openSuSE 11.4 zu wechseln. openSuSE ist ja leider kein RollingRelease. Upgrades sind mir suspekt und deshalb installiere ich immer parallel zum alten Release auf einer neuen Partition das neue Release und ziehe dann step-by-step alle Applikationsdaten um. Dabei wird auch das home Verzeichnis wieder neu angelegt. Das hat bislang immer ganz gut funktioniert. Jetzt wollte ich auch gleich bei der Umstellung sicherstellen, dass ich auch alle Applikationen, die ich so die Zeit über installiert habe auch gleich auf der neuen Installation existieren. Also habe ich ein kleines Python Script geschrieben, welches den Inhalt von
Code:
rpm -qa | sort
der alten und neuen Installation vergleicht und ausspuckt, welche Packete bei der neuen Installation fehlen.

Mich würde mal interessieren wie Ihr das macht um sicherzustellen, dass Ihr nicht irgendwelche Pakete vergesst auf der neuen Installation zu installieren.
 
Ich erstelle mir einfach eine Liste, die ich mir selektiv aus der Ausgabe von 'rpm -qa' rauskopiere und in eine eigene Datei einfüge. Das ist ein wenig umständlich, aber funktioniert prima. Ich will ja meistens nicht wissen, welche Bibliotheken oder devel-Pakete ich installiert habe, die werden von eigentlichen Anwendungen oder pattern eh mitgezogen, d.h. ich kann die genante Ausgabe recht fix überfliegen (und z.B. alle Pakete, die mit 'lib' beginnen, links liegen lassen). Die 1:1-Übertragung von Paketzusammenstellungen von einer Version zur nächsten (insbesondere über zwei Versionsnummern hinweg) halte ich für kritisch, da Pakete nicht selten andere Namen erhalten oder andere Abhängigkeiten voraussetzen, d.h. das Risiko, sich überflüssigen Quatsch zu installieren, ist recht hoch.

Ich poste folgendes mal, weil es thematisch nahe liegt: eine Reinstallation der gleichen Version lässt sich dagegen sehr gut mit 1:1-Vergleichen erledigen, Rain_Maker hat dazu mal was zusammengekritzelt, was ich ganz nützlich finde:

Code:
##Paketliste erstellen und editieren (Versionsnummern entfernen etc.)
rpm -qa --queryformat '%{name}\n' | grep -v gpg-pubkey | tr '\n' ' ' > Paketliste.txt
## Pakete nach der Neuinstallation wieder einspielen
zypper in $(cat Paketliste.txt)

Vermutlich ist das nicht das erste Mal, dass ich den Schnippsel hier erwähne.

Bevor das hinhaut, müssen natürlich auch die gleichen Repositories eingerichtet sein.

Edit: Ansonsten fallen fehlende Pakete, auf die man Wert legen würde, ohnehin in den ersten paar Tagen auf.
 
Ich wiederhole es sicherheitshalber noch mal...

gropiuskalle schrieb:
[...] eine Reinstallation der gleichen Version lässt sich dagegen sehr gut mit 1:1-Vergleichen erledigen

Mit dieser Methode kann man von einer Version zur nächsten mit ein paar klug ausgewählten Konfliktlösungen vielleicht noch was reißen, aber ich würde das eher nicht so machen. Ich bin da allerdings auch recht vorsichtig, ausprobiert habe ich es noch nicht.
 

nbkr

Guru
Meine Desktop PCs installiere ich meist von Grund auf neu und kopiere nur die Daten rüber. Meist sammeln sich nämlich bei mir Programme an die ich mal ausprobiert habe, aber eigentlich nicht mehr brauche. Die werde ich durch das neu installieren los. Die Programme die ich wirklich brauche habe ich sowieso im Kopf und installiere meist in einem Durchgang.

In letzter Zeit nutze ich auf dem Desktop auch gerne archlinux. Das hat ein Rolling Release, da hat sich das mit dem Wechsel sowieso erledigt.
 

Rainer Juhser

Moderator
Teammitglied
Ich habe mir (noch zu Windows-Zeiten) angewöhnt, ein "Installations-Logbuch" zu führen, in dem die Basisinstallation und alle wichtigen Änderungen/Erweiterungen festgehalten werden. Meine persönlichen Daten liegen auf einer eigenen Partition, die unterhalb meines Home eingehängt ist. Vor einer Neuinstallation mache ich nochmal ein aktuelles Backup des kompletten Home, und dann wird das Installationslog abgearbeitet. Ich habe übrigens - ähnlich wie framp - immer 2 Distributionsversionen (bei mir Opensuse) parallel installiert, eine ältere "Arbeitsversion" und eine neuere "Testversion".
 

whois

Ultimate Guru
Rainer Juhser schrieb:
Ich habe mir (noch zu Windows-Zeiten) angewöhnt, ein "Installations-Logbuch" zu führen, in dem die Basisinstallation und alle wichtigen Änderungen/Erweiterungen festgehalten werden. Meine persönlichen Daten liegen auf einer eigenen Partition, die unterhalb meines Home eingehängt ist. Vor einer Neuinstallation mache ich nochmal ein aktuelles Backup des kompletten Home, und dann wird das Installationslog abgearbeitet..

Es ist doch erstaunlich wie ähnlich ich manche Dinge abhandle.
Bei mir läuft das genau so ab ob bei Suse,BSD oder Debian.


Auch ich nutze Grundsätzlich meine alte Arbeitsdistribution solange bis ich 100% sicher bin das die andere Testdistri so funktioniert wie ich das will.
 
Ich verzeichne systemweite Konfigurationsänderungen in einem Fortlaufenden KJots-Buch, also Änderungen in der /etc/bash.bashrc, /etc/inputrc, limits.conf etc., weil ich die ganzen Sachen sonst todsicher nicht auf die Reihe bekäme.
 

/dev/null

Moderator
Teammitglied
Hallo Kollegen,

Ich selber (@home!) ....
- habe bis auf eine Faulheitspause von 11.2 =>11.3=>11.4 immer wieder komplett neu installiert. Von 5.? an ... . Und 11.4 dann auch noch einmal neu.
- habe sehr schnell erkannt, dass sich eine home-Partition gut macht
- benenne die /home/<user> meiner drei Nutzer (Frau, Sohn und meiner) vor der Installation um. Lasse sie also neu anlegen und kopiere die relevanten Inhalte wieder rein, um dann die nicht mehr benötigten umbenannten Verzeichnisse zu löschen. Einige dot-Dateien/Ordner sind dann wirklich neu, einige wenige werden übernommen.
- habe unter ~/Dokumente den Ordner /Konfigdateien, wo ich sämtliche geänderten conf hineinkopiere. Von der sshd_config bis zu den kleinen Schnipseln von denen man so liest. Ob ich die dann einfach nach /etc/ kopiere oder die dortigen anpasse, entscheide ich von Fall zu Fall.
- habe die zu installierenden und auch wegzulassenden (!) Programme immer noch einigermaßen im Kopf. Was ich nicht vermisse, brauche ich nicht mehr, was mir fehlt, installiere ich nach. Parole: Weniger ist mehr.
- bestimmte Informationen (eben zu den o.g. Programmen, Hinweise, Besonderheiten, usw. => "Installations-Logbuch" ) schreibe ich in kleine Textdateien in den o.g. Ordner. Wobei ich mir gerade "KJots" angesehen und für gut empfunden habe => Danke!
- installiere zuerst auf meinem Notebook. Und erst, wenn ich damit zufrieden bin, auf die "große" Kiste. Da muss nämlich alles sofort laufen und vor allem "exakt genau so aussehen" => um ein Absinken des WAF zu verhindern. (Bis jetzt ist KDE 4.6.4 bei <user> kaum von 3.5 zu unterscheiden ... .) Wichtig: ihr gefällt Linux, denn eine Alternative gibt es seit vielen Jahren nicht mehr.

MfG Peter
 

Pitti 1

Hacker
Egal, ob es sich um einen Release-Wechsel handelt, oder einfach das System „nur mal
neu aufgesetzt“ werden soll – der Handlungsablauf ist immer gleich:

Vorbereitung:

1. home-Verzeichnis komplett sichern
( einmal auf externer FP, einmal komprimiert, verschlüsselt und in 100 MB gesplittet in der „Cloud“ - erfolgt immer freitags)
2. diverse Programme, die zusätzlich genutzt werden (z.B. TV-Browser, Mediathek usw.)
befinden sich in einem separaten Ordner, der ebenfalls, wie unter Pkt.1 beschrieben, gesichert wird
3. mittels
Code:
rpm -qa --last > pakete_nach_installationsdatum
erstelle ich eine Liste aller installierten Pakete,
die in chronologischer Reihenfolge dargestellt wird und mir somit Programme anzeigt,
die nach der Grundinstallation hinzugekommen sind – diese Liste bildet dann
die Basis für die Paketwahl nach dem Neuaufsetzen des Systemes

Danach beginnt die eigentliche Prozedur:

Neuinstallation -> ca. 25-30 Minuten
eventuelle Updates herunterladen -> (je nach Zeitraum Erscheinen des Releases/Installationszeitpunkt) 5-55 Minuten
persönliche Einstellungen vornehmen -> (Desktophintergrund etc.) 10 Minuten
zusätzliche Quellen einbinden -> ca. 5 Minuten
notwendige Daten vom vorher gesicherten /home-Verzeichnis kopieren -> 20-30 Minuten

Ergebnis: In ca. 2,5 Stunden ein frisches, sauberes System mit allen persönlichen Einstellungen

Beim Release-Wechsel fristet die neue Version noch mindestens 4 – 6 Wochen nach Erscheinen in der VM ein Schattendasein. Währenddessen verfolge ich in Foren und Bugreports das allmähliche
Beseitigen der "Kinderkrankheiten".
 

/dev/null

Moderator
Teammitglied
eventuelle Updates herunterladen -> (je nach Zeitraum Erscheinen des Releases/Installationszeitpunkt) 5-55 Minuten

Das spare ich mir, indem ich grundsätzlich die Netzwerkinstallation wähle.
Hatte ich oben vergessen.

MfG Peter
Grüße nach DD!
 
OP
framp

framp

Moderator
Teammitglied
Es ist sehr interessant Eure Strategien zu lesen. Erstaunlich ist auch, dass viele ähnliche Dinge teilen. Interessant auch die Methoden, wie Ihr rausfindet welche Pakete in der neuen Installation fehlen. Das Argument, ich installiere, wenn ich es wieder benötige, hat Vorteile - dann wird man die ollen Kamellen los. Da ich abber wenigstens die wichtigsten Pakte gleich wieder installiert haben will habe ich mir eine rpm DeltaListe erstellt und die offensichtlich wichtigsten Pakete gleich nachinstalliert. Anbei die paar CodeZeilen die das rpmDelta Listing erstellen falls es jemanden interessiert. Ich fand es ganz praktisch und hilfreich.
Code:
#!/usr/bin/python
#-*- coding: utf-8 -*-

import sys
import re
import os

"""
   Funktion: Vergleicht zwei Dateien die mit 'rpm -qa | sort > rpm_xx.yy' erzeugt wurden um herauszufinden welche Pakete sich 
             in der alten Installation (erste Datei file) befinden und in der neuen Installation (zweite Datei)
             Der letzte Parameter kann ein regulärer Ausdruck sein um bestimmte Pakete von der Liste auszuschliesen, z.B. "(lib|yast2|sax2|bundle)" 
             schliesst alle Pakete die mit lib oder yast2 oder sax2 oder bundle beginnen aus.
             
             Beispiel: Erstelle eine Datei auf der alten Installation als root mit 'rpm -qa | sort > rpm_11.2.lst' 
                 und erstelle eine Datei auf der neuen Installation als root mit 'rpm -qa | sort > rpm_11.4.lst' 
                 Danach dieses Script aufrufen mit  
                     ./compareDistroRPMs.py rpm_11.2.lst rpm_11.4.lst "(lib|yast2|sax2|bundle)

    Purpose: Compare two files created with 'rpm -qa | sort > rpm_xx.yy' listings to find out which packages were installed 
             in the old installation (first file) and are not installed in the new installation (second file)
             Last parameter can be a regular expression of to exclude some packages from the list, e.g. "(lib|yast2|sax2|bundle)" 
             excludes all packages starting with lib or yast2 or sax2 or bundle
             
             Example: Create listing on old installation as root with 'rpm -qa | sort > rpm_11.2.lst' 
                 and create listing on new installation as root with 'rpm -qa | sort > rpm_11.4.lst' 
                 Then call this script with 
                     ./compareDistroRPMs.py rpm_11.2.lst rpm_11.4.lst "(lib|yast2|sax2|bundle)"                  

             Note: This script just reads the two rpm listings and builds a delta listing. No modifications are done on the system.
             
    6/20/11 framp
"""


def extract(fileName):
    result=[]
    rpmFrom=open(fileName,'r')
    for fromLine in rpmFrom:
        finish=False
        while not finish:  
            m=re.match("^(.*)-([0-9\.\-]+)+",fromLine)                
            if m:
                fromLine=m.group(1)
            else:
                finish=True
        result += [ fromLine ]
    
    rpmFrom.close()
    return result            

def main(argv):
    
    excludeList = False 
    if len(sys.argv) < 3:
        print "Usage: " + os.path.basename(sys.argv[0]) + " oldRPMFile newRPMFile [excludeRegex]"
        sys.exit(-1)
                
    if not os.path.exists(sys.argv[1]):
        print "??? %s not found" % (sys.argv[1])
        sys.exit(-1)
         
    if not os.path.exists(sys.argv[2]):
        print "??? %s not found" % (sys.argv[2])
        sys.exit(-1)         

    if len(sys.argv) == 4:
        excludeList=sys.argv[3]
    
    rpmFrom=extract(sys.argv[1])
    rpmTo=extract(sys.argv[2])
    
    intersection = [val for val in rpmFrom if val in rpmTo]
    noFrom = [val for val in rpmFrom if not val in intersection]
    
    print "*** Following files were installed in %s but not in %s ***\n" % (sys.argv[1],sys.argv[2]) 
    for e in noFrom:
        if excludeList:
            if not re.match(excludeList,e):                 
                print e
        else:
            print e
                        
if __name__ == '__main__':
    main(sys.argv)

BTW: Auf einem meiner Rechne @home habe ich Mint am laufen. Dort gibt es die Möglichkeit für den Umzug eine Liste aller Pakete zu exportieren und auf dem neuen System wieder zu importieren und dann werden automatisch die fehlenden Pakete wieder installiert. Für openSuSE habe ich sowas leider nicht gefunden :-(
 
Hast Du das mal ausprobiert und klappt das unter Mint wirklich so reibungslos?

Ansonsten kannst Du ja mal einen Eintrag bei OpenFate machen.
 
OP
framp

framp

Moderator
Teammitglied
gropiuskalle schrieb:
Hast Du das mal ausprobiert und klappt das unter Mint wirklich so reibungslos?
Ja - ich habe ein customized Mint system auf ein neues Filesystem umziehen müssen. Dazu habe ich das Mint neu installiert und dann mit diesem Tool alleauf dem alten Image zusätzliche installierten Pakte wieder installieren lassen. Funktioniert prächtig. Die Userdaten musste ich natürlich kopieren.
 
Ah okay, das war dann also die selbe Version von Mint? Das geht auch easy mit den beiden Zeilen, die ich hier in meinem ersten Beitrag gepostet habe. Ich glaube sogar, YaST stellt auch etwas in der Art zur Verfügung, hab da mal was läuten hören (ich schau nur nicht allzu oft in YaST rein).

Edit: YaST → Software installieren oder löschen → Datei importieren / exportieren.
 
OP
framp

framp

Moderator
Teammitglied
Interessant. Gibt immer wieder Dinge die man noch nicht kennt. Der Export erstellt eine xml Datei die denselben Inhalt wie rpm-qa hat. Was der Import macht werde ich bei dem nächsten Releasewechsel testen ;-)
 

slobo

Newbie
Hallo,

ich habe mir jetzt eine eigene Partition für das Verzeichnis /home/ und eine für das System eingerichtet. Beim nächsten Systemwechsel werde ich
  • meine Daten aus dem /home/benutzerx mit rsync auf eine externe Festplatte sichern (ohne die versteckten Konfigurationsdateien - mit wenigen Ausnahmen)
  • die versteckten Konfigurationsdateien in /home/benutzerx löschen (hab zum Glück nur einen Benutzer ;) )
  • neue openSUSE-Version (in die Systempartition) installieren
  • Zusätzliche Programme nachinstallieren (entweder per Hand von einer Liste oder per ShellScript)

Mit der eigenen Partition für das Home-Verzeichnis kann ich mir dann das Zurückspielen des Backups sparen, was letztens doch sehr lange gedauert hat.
Die Neuinstallation und -konfiguration von Programmen nehme ich in Kauf. Ich habe jedenfalls keine Lust auf Probleme mit alten Konfigurationsdateien und neuen Programmversionen.
 
• die versteckten Konfigurationsdateien in /home/benutzerx löschen [...]

Wieso denn? Ich schleppe mein /home inkl. der Configs seit der 10.0 mit mir rum. Klappt gut.

Je nachdem, welche Anwendungen man nutzt, ist sogar davon abzusehen, versteckte Ordner zu löschen; in denen finden sich z.B. auch Mails.
 
nbkr schrieb:
Meine Desktop PCs installiere ich meist von Grund auf neu und kopiere nur die Daten rüber. Meist sammeln sich nämlich bei mir Programme an die ich mal ausprobiert habe, aber eigentlich nicht mehr brauche. Die werde ich durch das neu installieren los. Die Programme die ich wirklich brauche habe ich sowieso im Kopf und installiere meist in einem Durchgang.
Genau so mache ich das auch. Ich habe 2 Suse Partitionen, auf die im Wechsel immer die aktuelle Version kommt. Wenn die neue Version nicht richtig läuft und Probleme macht, kann ich mit dem System einfach mit der von mir erprobten Vorgängerversion weiterarbeiten.

Elementare Software (wirklich benötigte Programme) habe ich im Kopf und installiere ich aus dem Kopf heraus von Hand.
Einmal getestete Sachen, die ich nie wieder benutzt habe, verschwinden so automatisch bei jeder Neuinstallation und machen Platz für neue Interessen.

Auch das alte Home Verzeichnis wird bei dieser Gelegenheit selektiv von der alten Partition auf die neue kopiert.
 
Oben