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