Dies ist eine alte Version des Dokuments!


Update Debian Lenny to Debian Squeeze

Es gibt einige Update Howtos im Netz. Nachdem ich aber auch die offizielle Anleitung gelesen habe, die ich allen Updatewilligen ans Herz legen möchte, empfand ich die meisten anderen Howtos nicht mehr ausreichend detailliert. Andererseits war das offizielle Dokument zu umfangreich, um es beim Update mehrere Systeme als eine Art Checkliste zu benutzen. Daher habe ich dieses eigene Howto geschrieben, welches umfangreich die Schritte unter Sicherheitsvorkehrungen beschreibt.

Vorbereitung

Lauf offiziellem Dokument wird gesagt, dass man dpkg und apt-get nutzen soll anstatt aptitude. Daher wird ab hier davon ausgegangen, dass man diesem folgt.

Brauchbare Tools

Während des Updates werden neue Konfigurationsdateien installiert. Ich empfehle diese zu nutzen und die eigenen Änderungen zu übertragen. Dafür bietet sich meines Erachtens vimdiff an. Wenn man nicht direkt vor dem System sitzt, sondern z.B. ein Update per SSH durchführt, sollte man dieses Update innerhalb von screen machen.

aptitude install vimdiff screen

Backup / Recovery

Vor dem Update muss man in jedem Fall ein Backup machen und alles bereit legen, was für ein Recovery benötigt. Doch vor dem Backup müssen einige Dinge beachtet werden.

Check package manager

Bevor wir die Backup-Dateien an einen sicheren Ort kopieren, müssen wir die Paketliste prüfen uns sichern. Sie muss vor dem Update sauber sein.

  • Prüfe mit aptitude oder apt-get, dass alle Pakete ordnungsgemäß installiert sind!
aptitude  
  • Setze alle Pakete auf install mit aptitude
for a in $(aptitude search "~ahold" | sed 's/....//' | sed 's/ .*//'); do aptitude unhold $a;done
  • Setze alle Pakete auf install mit dpkg
dpkg --get-selections | grep hold
echo package_name install | dpkg --set-selections
  • Leere Paketarchiv
apt-get clean

Backups erstellen

  • Liste der installierten Pakete
dpkg --get-selections "*" > ~/squ_update_curr-pkgs.txt
  • Die wichtigsten Ordner sind:
cd /
tar czf squ_update_$(date +%Y%m%d%H%M%S)_etcplus.tar.gz /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates ~/squ_update_curr-pkgs.txt
Nicht vergessen werden dürfen die Nutzerdaten:
  • WWW
  • Home
  • Mysql
  • /root
  • und andere
Alternativ kann man ein vollständiges Backup des Systems machen, indem man in ein Backupsystem bootet und alle Festplatten als dd Image speichert. Dieses ist am Sichersten, dauert aber auch am Längsten. Dennoch sollte die oben aufgeführten Tars machen, um leichter im Problemfall auf diese zurückzugreifen zu können.

Als Beispiel sind hier die netcat Befehle für eine komplette Kopie

  • System, dass aktualisiert werden soll
dd bs=4M if=/dev/sda | netcat target-ip 9000
  • Ziel der Sicherungsdateien
netcat -l -p 9000 | dd bs=4M of=squ_update_$(date +%Y%m%d%H%M%S)_sda.ddimg

Problem-Pakete entfernen

Ab hier beginnt offiziell das Update. Das System wird nun verändert!
  • Wir starten nun die Aufname unserer Shell-Session
script -t 2>~/upgrade-squeezestep.time -a ~/upgrade-squeezestep.script

:!: Mit exit beendet man die Aufname!

:!: Wenn man zwischendurch sich anschauen möchte, was man gemacht hat, wechselt man in eine andere Shell und führt den folgenden Befehl aus.

less -R ~root/upgrade-squeeze.script
  • Später kann man die Aufname mit dem folgenden Befehl abspielen.
scriptreplay ~/upgrade-squeeze.time ~/upgrade-squeeze.script
  • Löschen von Problempakete
apt-get purge splashy
  • Paket-Cache leeren
apt-get clean

Paketsourcen

Die folgenden Anweisungen betreffen die Datei /etc/apt/sources.list und alle Dateien innerhalb des Ordners /etc/apt/sources.list.d

  • proposed-updates muss entfernt werden
egrep -R "^[^#]*proposed-updates" /etc/apt/sources.list*
  • backports sollten deaktiviert werden, da die bisher genutzten Versionen in lenny-backports höchstwahrscheinlich denen in squeeze entsprechen.
egrep -R "^[^#]*lenny-backports" /etc/apt/sources.list*

:!: Besitzt man backport Pakete, kann es zu Problemen beim Update kommen!

Wenn man inoffizielle Quellen nutzt, muss man prüfen, ob diese Pakete für squeeze anbieten oder squeeze oder diese mittlerweile in einer „richtigen“ Version in squeeze vorhanden sind.
  • lenny durch squeeze austauschen
sed -i 's/lenny/squeeze/' /etc/apt/sources.list*

Update durchführen

Um zu erkennen, welche Dateien sich ab jetzt ändern, legten wir eine Datei an, die dann als Referenzzeit gilt.
touch ~/squ_update_starttime
Wenn man ein XEN0-System aktualisiert, muss man zur Vorsicht die DomUs aus dem Autostart entfernen!
rm -vf /etc/xen/auto/*

Minimalupdate

  • Prüfen, ob ausreichend Speicher auf dem System vorhanden ist. Addiere was heruntergeladen werden muss mit dem zusätzlich verbrauchten Speicherplatz.
apt-get update
apt-get -o APT::Get::Trivial-Only=true dist-upgrade
:!: Manchmal kommt ein Error, dann muss man für den zuletzt aufgeführten Befehlen den folgenden ausführen:
apt-get upgrade
  • Minimales system upgrade
apt-get upgrade
Es kann passieren, dass Konfigurationsdateien überschrieben werden. Das soll nicht passieren, kann aber. Zur Sicherheit schaue lieber alle Dateien in /etc an, die seit unseren ersten Schritten verändert wurden. Diese Methode ist sicherer als mit less die Aufnahmedatei durch zuschauen. Dennoch empfiehlt es sich auch jene zu prüfen.
find /etc/ -type f -newer ~/squ_update_starttime

Einige Konfigurationsdateien werden erneuert. man sollte die alte Version behalten und nach dem erfolgreichen Beenden des Befehls diese mit vimdiff auf Veränderungen prüfen. Man kann diese Dateien mit den folgenden Befehlen finden:

find /etc/ -iname "*dpkg-new"
find /etc/ -iname "*old"
find /etc/ -iname "*dpkg-dist"

Update Kernel und udev

Um zu erkennen, welche Dateien sich ab jetzt ändern, legten wir eine Datei an, die dann als Referenzzeit gilt.
touch ~/squ_update_kernel

Auf Grund von Veränderungen in den Kerneldefaults funktioniert das alte udev nicht mehr mit dem neuen Kernel und das neue udev nicht mehr mit dem alten.

  • Installation des neuen Kernel
apt-get install linux-image-2.6-flavor # amd64 oder 686

# für XEN
apt-get install linux-image-2.6-xen-amd64 xen-hypervisor-4.0-amd64
apt-get remove --purge xen-hypervisor-3.2-1-amd64 xen-utils-3.2-1
  • Zur Sicherheit führen wir noch einmal die Grub-Konfiguration aus.
update-grub
  • Installation von udev
apt-get install udev
  • Prüfen auf neue Konfigurationsdateien
find /etc/ -type f -newer ~/squ_update_kernel
find /etc/ -iname "*dpkg-new"
find /etc/ -iname "*old"
find /etc/ -iname "*dpkg-dist"
In Squeeze hat sich modprobe geändert. Es gibt beispielsweise die Option -o nicht mehr.

Wenn man bonding bisher in der folgenden Form genutzt hat, um Netzwerkinterfaces zusammen zuführen, dann muss man die Einträge ändern.

Vorher:

# Multi VLAN interface
# bond interface mit kalten fallback
auto bond0
iface bond0 inet manual
     pre-up modprobe -v bonding -o bond0 mode=active-backup primary=eth0 miimon=100
     up /sbin/ifconfig bond0 up
     post-up /sbin/ifenslave bond0 eth0
     post-up /sbin/ifenslave bond0 eth1
     post-down /sbin/ifconfig bond0 down
     post-down rmmod bond0

Hinterher:

# Multi VLAN interface
# bond interface mit kalten fallback
auto bond0
iface bond0 inet manual
     bond-primary eth0
     bond-slaves eth0 eth1
     bond-mode active-backup
     bond-miimon 100

:!: Ich habe auch die Variante mit dem Verzeichnis modprobe.d versucht, was aber nicht funktioniert hat.

:!: Jetzt sollte man das System mit dem neuen Kernel neu starten.

shutdown -r now

Distributionsupdate

  • Aufnahme für die Shell
script -t 2>~/upgrade-squeezestep1.time -a ~/upgrade-squeezestep1.script
Um zu erkennen, welche Dateien sich ab jetzt ändern, legten wir eine Datei an, die dann als Referenzzeit gilt.
touch ~/squ_update_dist
  • Update starten
apt-get dist-upgrade
  • Prüfen auf neue Konfigurationsdateien
find /etc/ -type f -newer ~/squ_update_dist
find /etc/ -iname "*dpkg-new"
find /etc/ -iname "*old"
find /etc/ -iname "*dpkg-dist"

:!: System neu starten

shutdown -r now

Grub 2 aktivieren

  • Zur Sicherheit schauen wir uns das bootlog auf Ungereimtheiten an.
less /var/log/dmesg
  • Grub2 in den MBR schreiben
upgrade-from-grub-legacy

:!: System neu starten

shutdown -r now
  • Alte grub Konfigurationsdateien entfernen
rm -f /boot/grub/menu.lst*
Wenn man XEN nutzt, dann muss man noch einige weitere Änderungen vornehmen.
  • XEN-Kernel mit Hypervisor als erstes im Grub-Menü
mv -i /etc/grub.d/50_linux /etc/grub.d/20_linux
mv -i /etc/grub.d/20_linux_xen /etc/grub.d/10_linux_xen
  • DomU Systeme nicht im Grub-Menü auftauchen lassen (/etc/default/grub)
# Disable OS prober to prevent virtual machines on logical volumes from appearing in the boot menu.
GRUB_DISABLE_OS_PROBER=true
  • Grub-Menü neu aufbauen
update-grub

Ressources:

Update abschließen

Man kann nun alle Pakete, die obsolet sind entfernen.

apt-get clean && apt-get autoremove

aptitude
Wenn man das automatische starten von XEN DomUs abgeschaltet hat, muss man dieses wieder aktivieren.

Problemlösungen

Hilfe bei Problemen findet man im Internet und hier.

opendocs/update_lenny2squeeze.1305868602.txt.gz · Zuletzt geändert: 2012/08/06 20:02 (Externe Bearbeitung)
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0