Utilizator:Petre/Debian upgrade tips
Dat fiind ca zilele astea s-a anuntat ca inceteaza suportul pentru Debian 4.0 "Etch", m-am apucat sa fac upgrade-uri la diverse servere lasate in urma si ma gandesc ca poate mai ajuta cuiva rutinele mele (si-asa imi trebuia motiv sa mai bloguiesc ceva), so here goes:
In primul rand, folosesc aptitude pentru managementul de pachete, pentru ca isi face curat (intr-o oarecare masura) la pachetele inutile. Pentru asta, fac o data pe server urmatoarea chestie: pornesc aptitude, rulez un update, ( pe masini suficient de ignorate e posibil sa planga de chei de arhiva lipsa, asa ca fortez upgrade-ul lui 'debian-archive-keyring' si dau update din nou), debifez optiunea cu "install recommended packages" din options/dependency handling (altfel insista sa traga mult mai multe pachete decat as dori), marchez toate pachetele instalate ca "auto" (cu M din UI sau cu ceva gen aptitude markauto --schedule-only '~i' ). Mare atentie ca in faza asta va incerca sa dea afara o gramada de chestii care n-ar trebui, asa ca don't apply yet! Dupa aia marchez ca "manual" (cu 'm' sau cu 'unmarkauto' ) toate pachetele care nu depind de nimic altceva, filtrul magic fiind ceva gen '~i!~RDepends:~i' (desi parca am mai zis incantatia asta si cu alta ocazie). Acum ar trebui sa fie relativ corect, cu unele exceptii asa ca ar trebui parsata la ochi lista de pachete care se vor dezinstala (personal tin la niste chestii gen whiptail, cron, logrotate si klogd care sunt candidate la eliminare in faza asta), daca se identifica ceva se marcheaza si ala ca manual, si iar update, etc. Eventual se consulta si lista de pachete marcate ca manual (cu '~i!~M' ) si se mai trec pe auto chestiile la care nu tii neaparat (sa ramana doar daca tine altcineva la ele). Eu unul prefer sa nu dau purge la pachete pentru ca mai am diverse configuri etc la care poate mai tin, dar banuiesc ca e chestie de gust.
Boon, acu ca aptitude e setat, in principiu ar trebui sa faca ce trebuie, asa ca putem trece la upgrade-ul propriu-zis. Mai intai trebuie facut update sa aiba lista proaspata de pachete, dupa care dist-upgrade sa aiba cele mai recente din distributia curenta, just in case (am mai vazut cazuri in care s-au reparat pachete cat sa ajute upgrade-ul la distributia urmatoare). Dupa ce e la zi pe distro-ul vechi, se updateaza sources.list (apropo, prefer sa tin "poreclele" release-urilor in loc de 'stable/oldstable' pentru ca nu te trezesti ca ti se schimba stable sub picioare in ziua release-ului) si se face update.
Acum ca avem pachete vechi, dar lista din distro-ul nou, prima chestie o fac sa upgradez aptitude (ceea ce trage dupa el alte chestii strict necesare gen libc6 si alte asemenea), pentru ca IMO e de ajutor ca la rezolvarea dependintelor dintr-un release sa ai aptitude din release-ul ala. Dupa ce vine aptitude-ul nou, iarasi aptitude update, dupa care se poate da dist-upgrade (daca am servicii multe, prefer sa fac cumva pe bucati ca sa nu le tina mult oprite, asta pentru ca sunt lame si nu anunt maintenance si fac upgrade-uri "pe sest").
Ar mai fi ceva de comentat la cazurile cand dpkg gaseste conflicte in fisiere de configurare, dar e cumva de la caz la caz. Eu prefer ca daca stiu ca am modificat eu cu un scop fisierul ala sa ma uit la diff si sa las cel vechi (implicit), altfel sa merg pe versiunea noua (mai activeaza diverse features pe care e pacat sa le scapi). Daca in diff am vazut ceva care merita mostenit, le iau dupa aia la manuta individual (dpkg salveaza copii cu fisier.dpkg-new sau fisier.dpkg-old asa ca pot face vimdiff pe ele) si dau restart la servicii cand e cazul.
Daca dupa toate aceste operatii (care fara download dureaza mai putin de 10 minute per server, oricat de complicat le-am facut eu sa sune), merg toate serviciile care trebuie sa mearga (ai nagios, nu?), se poate bifa serverul in cauza si trece la urmatorul.
La kernel-related things e cam la fel, da' prefer sa aman reboot pana e cineva pe langa serverul in cauza, just in case (am patit niste chestii nasoale la trecerea 2.4 -> 2.6+udev si de atunci sunt extra paranoic).
HTH, HAND.