ObecnéNávody

Upgrade Squeeze Wheezy

Toto je nultá verze vzniklá při čtení oficiálního dokumentu Release Notes. Ještě tu nejsou žádné zkušenosti z ostrého upgrade. Máte-li nějaké, můžete mi je poslat na v.matys@grumpa.net - všichni budeme rádi a já to sem přidám.

1.  Upgrade Debian Squeeze na Wheezy

Tento text vychází z Release Notes for Debian 7.0 Wheezy 64bit PC. Píšu ho pro sebe, jako pomůcku při upgradech serverů u zákazníků. Nenahrazuje původní dokumentaci! Bude-li někomu užitečný, budu rád.

1.1  Co je zhruba nového

MultiArch
Je možné instalovat balíčky i386 na architektuře AMD64 bez knihovny ia32-libs. Pomocí příkazu dpkg --add-architecture i386.
multimedia
ffmpeg je nahrazen libav-tools, což je prý konec nedostatečné podpory multimedií v Debianu.
backports
Jsou teď přímou součástí archivů Debianu.
Gnome3
:-) Co dodat (dělám teď v LXDE a je mi fajn, KDE je nádherné, ale zamrzalo mi).
cloud
OpenStack, Xen Cloud Platform...
php - suhosin
Konec. purge ho pryč a z /etc/php5/conf.d/ taky.
portmap
místo něj je rpcbind
sun-java6
nyní je openjdk-7
gdm
- gdm3
horde
3 zastarala, 4 nebyla připravená při vydání Wheezy.
webkit
prohlížeče založené na něm nejsou považovány za bezpečné. Používat Mozilla, Chromium.
bootlogd
není už součástí sysvinit-utils, ale je samostatným balíčkem bootlogd. Příslušný /etc/default/bootlogd samozřejmě zmizel.
firmware
balíček firmware-linux a další dle příslušného HW.
nagios
plugins-standard už neobsahují check_linux_raid. Použít nový balíčku nagios-plugins-contrib, kde se to ale jmenuje check_raid. Balíček lze nainstalovat bez závislostí, kterých je celkem spousta.
...

Důležité:

sudo
Pokud máme změny v /etc/sudoers. Nový sudo má nové řádky v tomto souboru, které se během instalace samy nepřidají. Přesunout sudoers.dpkg-new do sudoers po upgrade.
screen
Nová verze má jiný protokol pro komunikaci. Nezávažné. Jen se může rozhodit obrazovka. Řešením je detach a re-attach. ("Zkusili jste to vypnout a zapnout?";) Taky Ctrl+l.
ldap
Nepoužívat libnss-ldap a libpam-ldap. Místo toho podobně pojmenované balíčky s "d" nakonci. Přidá i balíček nscd. Můžeme připravit už na Squeeze.
lilo
Pokud ho chceme změnit na grub, může se stát, že grub bude hlásit, že se nevejde. Řešení to nemá, takže pokorně zůstat u lilo.

2.  Upgrade - příprava

2.1  Co lze upgradnout ještě před přechodem.

Některé balíčky jsou ve squeeze-backports ve stejné verzi jako ve wheezy. Může být výhodné je upgradovat ještě ve squeeze. Ve wheezy nebude pak tolik stresu.

  • amavis-new (2.6.4 - 2.7.1).
  • dovecot (1.2.15 - 2.1.7). Tady je taky významná změna v uspořádání konfiguráků. Upgradujeme-li před přechodem na wheezy, pak při upgrade na wheezy budeme upozorněni, že i tak hrozí přepsání některých konfig. souborů v conf.d/, i když mají lokální úpravy. Proto je dobré dávat úpravy vždy do dovecot.local. Certifikáty se stěhují z /etc/ssl/ do /etc/dovecot/
  • postfix (2.7.1. - 2.9.3/2.9.6) - bezbolestné
  • samba (3.5.6 - 3.6.6) - bezbolestné (ponechat smb.conf ze squeeze, ne "maintainers's".
  • nagios-nrpe-server - v plugins-stadnard už není check_linux_raid. Použít balíček plugins-contrib (lze bez závislostí), v něm je příkaz check_raid.
  • nfs-kernel-server - balíček portmap se mění na rpcbind + přijde varování chybí-li v exports no_subtree_check parametr.
  • postgresql (8.4 - 9.1). Viz dále.
  • smartmontools
  • sudo
  • firebird (2.1 -> 2.5)

Z věcí, které používám už nejsou v squeeze-backports k dispozici, a tudíž musí počkat po upgrade systému na Wheezy:

  • kernel ;)
  • rsync
  • apache2
  • squirrelmail
  • mysql-server (5.1->5.5) - proběhne hladce
  • proftpd
  • nut
  • logwatch
  • bootlogd
  • slapd

PostgreSQL - poznámy k upgrade

Po nainstalování 9.1 jsem musel pg_dropcluster 9.1 main, protože jinak pg_upgradecluster řval, že nový cluster 9.1 už existuje.

Pak pg_upgradecluster 8.4 main.

takže:

 pg_dropcluster 9.1 main
 pg_upgradecluster 8.4 main
 service postgresql restart

2.2  Zálohovat

  • /etc
  • databáze aptu a dpkg a aptitude

Pozor na /home - upgrade mu nic neudělá (a je dobré ho před upgrade opojit), ale nové verze KDE, Gnome, Mozilla můžou přepsat uživatelská nastavení na nové defaults.

2.3  Máme na disku dost místa?

2.4  Dát vědět uživatelům ;)

A pro jistotou odpojit /home.

2.5  Připravit se na nejhorší

To jest, když no nenabootuje, tak mít připravený instalační disk, který jde spustit v rescue režimu. Když u toho sedíš, asi ho máš. Když to děláš na dálku, připrav si i auto a dost benzínu/nafty/nukleární enerigie...

Objeví-li se při bootu debugovací shell od initrd, tak pomocí něj zkontrolovat zda jsou v /dev správná zařízení, jaké jsou načtené moduly (/proc/modules), výstup z dmesg, obsah $ROOT. Shell má příkaz help a exit ;)

2.6  Vzdáleně

Když vzdáleně přes ssh, tak ještě taky přes screen - když spadne linka, dá se obnovit stav konzole.

2.7  Zkontrolovat stav systému

Teď ještě stále máme Squeeze jako zdroj balíčků.

  • Používat apt-get a ne aptitude (ano, u předchozího upgrade to říkali obráceně).
  • Balíčky třetích stran - nejlépe je odinstalovat (remove, ne purge).
  • Pomocí (výjimka;) aptitude zjistit, zda nejsou nějaké nedokončené akce.
  • Disabling APT pinning
  • Kontrola stavu balíčků: dpkg --audit - ukáže špatně nainstalované balíčky
  • aptitude search "~ahold" a odstranit stav hold, pokud jsme ho někde nastavili.
  • Máme-li ne-debianí balíčky, smířit se s tím, že mohou být při upgrade automaticky odinstalovány (kvůli závislostem). (MailScanner, AVG, Eset,...). Radši taky odinstalovat (aptitude menu - staré a lokální balíčky).

3.  Upgrade - akce!

3.1  Zdroje balíčků pro Apt

 deb http://ftp.cz.debian.org/debian/ wheezy main non-free contrib
 deb-src http://ftp.cz.debian.org/debian/ wheezy main non-free contrib

 deb http://security.debian.org/ wheezy/updates main contrib non-free
 deb-src http://security.debian.org/ wheezy/updates main contrib non-free

 # wheezy-updates, previously known as 'volatile'
 deb http://ftp.cz.debian.org/debian/ wheezy-updates main contrib non-free
 deb-src http://ftp.cz.debian.org/debian/ wheezy-updates main contrib non-free

Při upgradu by měl stačit jen ten první řádek. Celé tohle je v sources.list po čisté instalaci Wheezy.

3.2  Připojené diskové oddíly

Máme-li něco připojené jen pro čtení, tak

 # mount -o remount,rw /mountpoint

3.3  Zaznamenání procesu (script)

Viz oficiální návod. Mně to při minulém upgradu dělalo psí kusy při vzdálené práci přes Screen. Může být dobré, že vidíme i hlášky, které už nám utekly z obrazovky.

Pomoci může i starý dobrý tee, že?

3.4  Update seznamu balíčků

 # apt-get update

3.5  Minimalistický upgrade

Víme, co to je "efuemismus"?

 # apg-get upgrade

Před upgrade zastavit nagios-nrpe-server, zvláště, pokud kontroluje apt - stalo se mi, že se upgrade přerušil, protože nagios si pro sebe na chvíli zamknul databázi aptu.

Tedy ne hned dist-upgrade - tohle zaktualizuje jen věci, které nevyžadují odinstalování balíčků. Minimalistický i tak představuje slušnou porci upgradů.

Během upgrade se to ptalo:

  • upgrade glibc vyžaduje restart některých služeb, předvolená odpověď Ano (u mě to byl jen postgresql).
  • configuring libc6 - restartovat služby automaticky bez ptaní? Ne. A v zápětí seznam služeb, které potřebuje restartovat - odsouhlasit :) (gdm webmin samba rsync postfix openbsd-inetd mysql cron atd apache2) - ten gdm se mi tam nelíbil kvůli možnému ukradení konzole Xkama, ale nic se nestalo.
  • base-passwords měl problém že můj uživatel www-data nemá shell sh, ale bash. No problem.

3.6  Upgrade jádra

V oficiální dokumentaci se o tom píše až na konci. Zjistíme si, jaká verze je nainstalována:

 # dpkg -l "linux-image-*" | grep ii

překvapivě to bude stále stejná (apt-get upgrade jádro neupgraduje)

Nevypíše-li se nic, je třeba instalovat ručně. Možné varianty nám zobrazí:

 # apt-cache search linux-image- | grep transition
 # uname -r

pomůže, jakou verzi jádra vybrat k instalaci.

Tolik oficiální (pro mě zmatená) dokumentace. Uděláme to takto: Aptitude odhalí, že díky přidání repozitáře pro wheezy u balíčku linux-image přibyla k verzi 2.6 verze 3.2, tak jí necháme nainstalovat. Použil jsem Aptitude, kde jsem nejdřív musel vyřešit konflikty (bylo snadné) a pak nechat aktualizovat pouze balíček linux-image-2.6-686 - žádné divoké závislosti se nekonaly. Ono to vlastně ke stávajícímu jádru přiinstaluje to nové, takže grub pak dá vybrat, do čeho startovat.

Každopádně: Po upgrade jádra je nutný reboot!

Po rebootu můžeme skončit v debug shellu s chybovou hláškou, "ALERT: /dev/něco doesn't exist." Znamená to, že systém neměl dost času na připojení disků. Stát se to může na RAID, zvláště používáme-li LILO. Vyřeší to přidání parametru rootdelay=9

3.7  Velký upgrade

Tady oficiální dokumentace doporučuje:

 # apt-get dist-upgrade

Funguje bez větších potíží. Dřív jsem se tomhle hromadnému upgradu snažil vyhnout metodou postupných kroků v interaktivním režimu Aptitude. Tentokrát jsem se tam ale utápěl v nevyřešených závislostech, tak jsem zkusil risknout ten apt-get dist-upgrade a šlo to. Asi pomohla i příprava přes squeeze-backports

Možné faily

Dist-upgrade fails with "Could not perform immediate configuration" - stačí na chvíli vrátit do sources.list squeeze, nebo viz ofiko dokument.

Přechod z ia32-libs na multiarch. Nemáme-li ia32-libs nainstalováno, netýká se nás to ;).

 # dpkg --add-architecture i386
 # apt-get update

Pre-depend loops - viz ofiko dokument.

Konflikty souborů - může nastat, máme-li neoficiální balíčky v systému, které odkazují na stejný soubor, jako nějaký oficiální balíček.

4.  Po upgrade

  • Pokud jsme do sources.list přidávali squeeze, tak ho zase odstranit.
  • Odstranit nepoužívané balíčky, které tu zbyly po Squeeze (aptitude menu zastaralé balíčky).
  • Odstranit zbytky balíčků (~c v aptitude)
  • Odstranit php5-suhoshin.
  • Znovu nainstalovat, co jsme museli odinstalovat před upgrade (balíčky třetích stran).
  • Bootlogd - nainstalovat balíček
  • Nagios nrpe
    • check_linux_raid zmizel z balíčku z plugins-standard (nově plugins-contrib - check_raid)
    • nrpe test procesů apache2 nefunguje, protože "ps -e" vypisuje jen "/usr/bin/apach" - takže testovat proces "apach". Blééé

4.1  php po upgradu

Nějak blbne. Nebudu napínat, vyřeší to reboot. Co blbne:

  • mailem přijde hláška z cronu (cron.d/php5), že nemůže najít nějakou knihovu php5-auth-pam (ve wheezy neexistuje)
  • nefungují webové aplikace jedoucí přes php (mně konkrétně glpi a ocsreports).
  • jednou se stalo, že si odinstaloval php5-mysql (!) - tak, stane se :-)

4.2  Další tipy po upgradu

Amavis (po MailScanneru)

Konfigurace spamassasina v /etc/spamassassin, použít něco z MailScanner/spamasassin.conf?