ObecnéNávody

Upgrade Wheezy Jessie

Pár zrad, na které nechci zapomenout:

systemd
Jsem zatím leckde nahradil zpátky starým Sysvinit. Některé služby vedle sebe nefugnovaly - obzvláště dnsmasq se hádal.
apache
všechny konfiguráky musí mít teď "příponu" .conf
apt-get
místo aptitude při upgrade (minule se to doporučovalo obráceně)
OpenSSH
server defaults to "PermitRootLogin without-password"
Samba
spouštění souborů je nově default vypnuto. Do smb.conf přidat
    acl allow execute always = True

Významnější upgrade balíčků

Tím myslím, na co si je třeba dát pozor. To že např. jádro je novější a přináší nové možnosti je jasné, ale při upgrade to žádnou potíž nevyvolalo. Takže to tu nezmiňuji.

zavaděč
V menu teď nabízí jakoby 2 možnosti: Tu základní (start do runlevelu 2) a pak vstup do všech ostatních možností "advanced options".
Apache
2.2 -> 2.4. Jednotlivé varianty (mtk apod) nejsou v samostatných balíčcích, ale vytvářejí se v konfiguracích. Takže Apache je teď takový obecný a jaký typ démona potřebuji si můžu vybrat v konfiguraci kupř virtualhosta. Takže něco jede jako worker s vlákny, něco jako prefork... Skvélé. Jedinou výjimkou je ITK (možnost spouštět virtualhosty pod zadaným uživatelem) - tady je potřeba doinstalovat modul libapache2-mod-mpm-itk. A pozor na to, že konfiguráky musí mít povinně v názvu příponu .conf.
Samba
3.x -> 4.x.
systemd
místo sysvinit
needrestart
po aktualizaci balíčků může nabídnou restart serveru, je-li to pro balíček výhodné
MariaDB
a zůstává i MySQL, takže obě databáze (do budoucna zůstane jen jedna, nejspíš Máňa)
instalátor
nově umožňuje vybrat desktopové prostředí

Příprava na upgrade

  • zazálohovat konfigurace z /etc, /var/lib/dpkg, /var/lib/apt/extended_states, výstup příkazu dpkg --get-selections "*", /var/lib/aptitude/pkgstates
  • Některé aplikace z Mozilla suite, KDE a Gnome přepisují uživatelská nastavení v /home - zálohovat, nebo poslat uživatelům kondolenci
  • Upozornit uživatele, že se bude upgradovat
  • Odpojit /home se může hodit
  • Upgrade kernelu vede k potřebě restartu stroje - mělo by se tak stát až na konci upgrade.
  • Jednotlivé služby v systému budou mít výpadky během upgrade. Výhodný postup je udělat minimalistický upgrade, pak reboo a nakonec upgradovat postupně balíčky s významnými službami (web, mail,...)
  • Při upgrade přes SSH používat program screen, který umožní obnovit sezení po ztrátě linky.

Upgrade

  • raději odinstalovat balíčky třetích stran (upgrade je vyladěn na "vanilla" Debian Wheezy)
  • obdobně pozor na neoficiální zdroje v apt/sources
  • zkontrolovat, že je systém Wheezy aktualizovaný
  • při použití apt-get místo aptitude se může stát, že aptitude bude během upgrade odinstalován jako nepoužívaný balíček.
  • pozor na vypíchnuté (pinning) balíčky v /etc/apt/preferences[.d]/ - zrušit
  • dpkg --audit odhalí špatně nainstalované balíčky
  • aptitude search "~ahold" odhalí balíčky u nichž je vypnuto upgrade
  • ujistit se, že je dost místa na disku (rezerva na rozbalované balíčky během upgrade). apt-get autoremove odstraní balíčky, které byly instalovány jen kvůli závislostem a už nejsou potřeba. popcon-largest-unused ukáže největší nepoužívané balíčky.

příprava sources

Nastavit zdroje balíčků na Jessie, teď. Vzorový sources.list z wiki.debian.org:

 deb http://httpredir.debian.org/debian jessie main contrib non-free 
 deb-src http://httpredir.debian.org/debian jessie main contrib non-free 

 deb http://httpredir.debian.org/debian jessie-updates main contrib non-free 
 deb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free 

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

script - zaznamenání stdout do souboru

Není od věci mít zaznamenaný výstup na obrazovce v souboru pro dodatečné hledání problémů:

 script -t 2>~/upgrade-jessiestep.time -a ~/upgrade-jessiestep.script

Přes ssh a screen to ale kdysi blblo. Viz release notes kap. 4.4.1.

minimalistický upgrade

 # apt-get update
 # apt-get upgrade

Jak známo představuje velkou porci balíčků. Pro připomenutí: rozdíl mezi upgrade a dist-upgrade je ten, že upgrade aktualizuje jen ty balíčky, které nevyžadují instalaci nových nebo odinstalaci stávajících balíčků. Zůstaneme tedy se stejnou sadou. Dist-upgrade následuje později.

upgrade jádra

Doporučuje se ho udělat samostatně ještě před velkým dist-upgrade, protože to minimalizuje riziko, že systém nenabootuje. (Po upgrade jádra tedy rebootovat. hm tak dle 4.6.2 až po dist-upgrade a vyčištění obsolete balíčků).

Je dobré mít nainstalovaný metabalíček linux-image-amd64 apod, který ten přechod v sobě má. Stačí pak

 # apt-get install linux-image-amd64

kompletní upgrade

 # apt-get dist-upgrade

Upgraduje vše ostatní. Někdy to může být nevýhodné, protože řada balíčků má nové konfiguráky se zcela novou strukturou, takže úprava konfiguráku za letu se jeví dost šílenou. Nové verze balíčků se starými konfiguráky asi fungovat nemusí. Dát přednost novému vanilla konfiguráku je jistě nežádaná a zcela šílená varianta (ač release notes se doporučuje).

Jinou možností je upgrdovat zásadní balíčky jednotilvě ručně:

 # apt-get install balíček

install dělá i upgrade balíčku

U zásadních balíčků je taky možné si balíček stáhnout předem a porovnat si vanilla konfiguráky z Jessie s těmi s Wheezy a připravit si svoje nové verze konfiguráků předem. Pečlivosti a předvídavosti se meze nekladou.

Během upgrade se můžou vyskytnout problémy se zacyklením závislostí obvykle při odstraňování starého balíčku. Viz release notes 4.5.3.

Obdobně u konfliktů se soubory, které se váží k více balíčkům. U vanilla Wheezy to nehrozí, ale s balíčky třetích stran už ano. Soubor nejde odstranit, protože ho vyžaduje jiný balíček. 4.5.4

SystemD vs. SysVInit

Při upgrade se instaluje nový systém spouštěcích skriptů systemd - balíček systemd-sysv. Některé problémy bude nutné dořešit ručně. Viz RN 5.6.

Reboot

Před reobootem odstranit obsolete balíčky. Hlavně zastaralé startovací skripty ze starých balíčků mohou zkomplikovat reboot.

Po rebootu dočistit zastaralé balíčky. A "dummy" balíčky, které jsou prázdné, mají název jako ve Wheezy, ale v Jessie slouží jen pro přechod na nový název balíčku - obsahují pouze závislost na něm. Po upgrade je vhodné tyto dummy balíčky odstranit.

 # deborphan --guess-dummy

Významné změny: Postgres, Squid aj

PostgreSQL

Po upgrade je potřeba ještě provést pg_upgradecluster 9.1 -> 9.4. Po upgrade je tam defaultní 9.4/main, který je před pt_upgradecluster potřeba ručně odstranit. Po upgrade databáze následně ručně odistalovat balíčky postgresql-9.1.

Squid

Squid už není ve verzi 2.x, ale 3.x

Dovecot

Má jiné výchozí hodnoty pro parametry ssl (no), ssl_cert a ssl_key (zakomentářované) oproti Wheezy. Takže do local.conf dát na yes a cestu k certifikátům (viz conf.d/10-ssl).

SpamAssassin

cron.daily/spamassassin už má opravenou a funkční volbu --quiet, takže ruční úpravy, které posílaly výstup skriptu do /dev/null už nejsou potřeba.

default/spamassassin - dát novou verzi a pak tam znovu povolit spouštění spamd a update přes cron.

 # systemctl enable spamassassin.service

Jak je v defaults/spamassasin psáno, volba ENABLE se týká jen sysvinit, v systemd je ignorována!

/usr na samostatném oddílu

Viz releasenotes ;) Stručně jde o to, že systemd dělá při startu fsck na root filesystem. Je-li /usr na raid nebo lvm, je potřeba udělat pár kontrol konfigurace raidu a fstab.

Nagios-nrpe - argumenty

Nrpe nově nepodporuje posílání argumentů v dotazech - kvůli bezpečnostním problémům. Změnit to jde jen rekomplilací balíčku.

Vyřešil jsem tak, že jsem přes apt/preferences nechal nainstalovanou verzi z Wheezy. Je to ale jen dočasné řešení....

PHP5 - otevírací tagy

Musí být <?php, zkrácený <? už povoleno není.

Apache2 - rotace logů,...

  • Rotace logů zkrácena z 1 roku na 14 dní.
  • ITK už není samostatný prefork, ale modul, který je potřeba povoli a2enmod, upgrade se o to prý postará sám.
  • Weby musí být pod /var/www/ nebo /usr/share. Jiné lokace je nutné dát do whitelistu - tj. dát povolení do konfiguráku virtualhosta, případně do základního konfiguráku apache (tedy adresář conf-enabled).
  • Default root se stěhuje z /var/www do /var/www/html
  • Povinná přípona .conf u všech konfiguráků. Skript /usr/share/doc/apache2/migrate-sites.pl se to pokusí udělat hromadně.
  • apache2/conf.d končí. Místo toho conf-available a nástroj a2enconf, a2disconf. Upgrade se pokusí věci z conf.d převést.

Backports

 deb http://httpredir.debian.org/debian jessie-backports main non-free contrib

Pokračovat kapitolou 5