Cap. 4. Actualizarea de la Debian 9 (stretch)

Cuprins

4.1. Pregătirile pentru actualizare
4.1.1. Faceți copii de siguranță pentru orice date sau configurații
4.1.2. Informați utilizatorii din timp
4.1.3. Pregătiri pentru indisponibilitatea serviciilor
4.1.4. Pregătiri pentru recuperare
4.1.5. Pregătiți un mediu sigur pentru actualizare
4.1.6. Verificați suportul pentru numele interfețelor de rețea
4.2. Verificarea stării configurației APT
4.2.1. Secțiunea proposed-updates
4.2.2. Surse neoficiale
4.2.3. Dezactivarea alegerilor selective APT
4.2.4. Verificarea stării pachetelor
4.3. Pregătirea surselor pentru APT
4.3.1. Adăugarea de surse internet pentru APT
4.3.2. Adăugarea de surse APT pentru un sit-oglindă local
4.3.3. Adăugarea de surse APT de pe un mediu optic
4.4. Actualizarea pachetelor
4.4.1. Înregistrarea sesiunii
4.4.2. Actualizarea listei de pachete
4.4.3. Verificați dacă aveți suficient spațiu pentru actualizare
4.4.4. Actualizare de sistem minimală
4.4.5. Actualizarea sistemului
4.5. Probleme posibile în timpul actualizării
4.5.1. Dist-upgrade eșuează cu eroarea „Could not perform immediate configuration”
4.5.2. Pachete de îndepărtat
4.5.3. Conflicte sau cicluri de pre-dependențe
4.5.4. Conflicte de fișiere
4.5.5. Modificări ale configurațiilor
4.5.6. Schimbare a sesiunii la consolă
4.6. Actualizarea nucleului și a pachetelor conexe
4.6.1. Instalarea meta-pachetului de nucleu
4.7. Pregătirile pentru următoarea versiune
4.7.1. Eliminarea pachetelor îndepărtate
4.8. Pachete învechite
4.8.1. Pachete de tranziție

4.1. Pregătirile pentru actualizare

Vă sugerăm ca înainte de actualizare să citiți informațiile din Cap. 5, Probleme în buster de care ar trebui să știți. Acel capitol tratează probleme potențiale care nu sunt legate direct de procesul de actualizare, dar care ar putea fi important de știut înainte să începeți.

4.1.1. Faceți copii de siguranță pentru orice date sau configurații

Înainte de a vă actualiza sistemul, este indicat să faceți o copie de siguranță completă, sau cel puțin a datelor sau a configurațiilor pe care nu vă permiteți să le pierdeți. Uneltele și procesele de actualizare sunt foarte fiabile, însă o problemă hardware apărută în mijlocul actualizării poate afecta sever un sistem.

Cele mai importate lucruri de copiat sunt conținutul lui /etc, /var/lib/dpkg, /var/lib/apt/extended_states și rezultatul comenzii dpkg --get-selections "*" (ghilimelele sunt importante). Dacă folosiți aptitude pentru administrarea pachetelor de pe sistemul dumneavoastră va trebui să salvați și /var/lib/aptitude/pkgstates.

Procesul de actualizare în sine nu modifică nimic în directorul /home. Totuși, unele aplicații (cum ar fi unele componente ale suitei Mozilla, mediile grafice GNOME și KDE) sunt cunoscute pentru faptul că suprascriu valorile existente ale configurațiilor utilizatorilor cu noi valori implicite în momentul în care o versiune nouă a aplicației este pornită pentru prima oară de către utilizator. Ca măsură de precauție, veți dori probabil să faceți o copie de siguranță a fișierelor și directoarelor ascunse (dotfiles (n. trad. care încep cu punct)) din directoarele utilizatorilor. Copia ar putea să vă ajute să restaurați sau să recreați vechile configurații. Probabil veți dori să informați și utilizatorii în acest sens.

Orice operație de instalare a pachetelor trebuie executată cu drepturi de superutilizator, deci fie vă autentificați ca root, fie utilizați su sau sudo pentru a obține drepturile de acces necesare.

Operația de actualizare are câteva precondiții pe care va trebui să le verificați înainte de actualizare.

4.1.2. Informați utilizatorii din timp

Este o idee bună să informați din timp toți utilizatorii despre actualizările planificate, chiar dacă utilizatorii ce vă accesează sistemul prin conexiune ssh n-ar trebui să sesizeze prea multe în timpul actualizării și ar trebui să-și poată continua lucrul.

Dacă doriți să vă luați măsuri suplimentare de precauție faceți o copie de siguranță sau demontați partiția /home înainte de actualizare.

Va trebui sa faceți o înnoire de nucleu (n. trad. „kernel”) odată cu trecerea la buster, deci o repornire va fi necesară. În mod normal aceasta se face atunci când actualizarea este încheiată.

4.1.3. Pregătiri pentru indisponibilitatea serviciilor

Pot exista servicii oferite de sistem asociate cu pachete care vor fi incluse in actualizare. În acest caz țineți cont că aceste servicii vor fi oprite în timp ce pachetele asociate sunt înlocuite și configurate. În această perioadă, serviciile respective nu vor fi disponibile.

Timpul precis de indisponibilitate al acestor servicii variază în funcție de numărul de pachete actualizate în sistem și include de asemenea timpul necesar administratorului de sistem să răspundă la întrebările de configurare de la actualizările de pachete (dacă există). Țineți cont că, în cazul în care procesul de înnoire se face nesupraveghat și sistemul solicită informații pe parcursul actualizării, este foarte posibil ca serviciile să fie indisponibile[1] pentru o perioadă de timp semnificativă.

Dacă sistemul de actualizat furnizează servicii critice pentru utilizatori sau rețea[2] puteți reduce timpul de indisponibilitate dacă faceți o înnoire minimală, după cum este descrisă în Secțiune 4.4.4, „Actualizare de sistem minimală”, urmată de o înnoire a nucleului și o repornire, iar apoi actualizați pachetele asociate cu serviciile critice. Actualizați aceste pachete înainte de actualizarea completă a sistemului descrisă în Secțiune 4.4.5, „Actualizarea sistemului ”. În acest fel puteți să vă asigurați că aceste servicii critice rulează și sunt disponibile pe durata întregului proces de înnoire, iar timpul în care sunt indisponibile este redus.

4.1.4. Pregătiri pentru recuperare

Deși Debian face tot posibilul ca sistemul să rămână capabil de pornire în orice moment există o șansă să întâmpinați probleme la reinițializarea sistemului după actualizare. Problemele potențiale cunoscute sunt documentate aici și în următorul capitol al acestor Note de lansare.

Din acest motiv are sens să vă asigurați că veți putea să recuperați sistemul în cazul în care acesta nu va mai reporni, sau va eșua la activarea rețelei, în cazul sistemelor la distanță.

Dacă faceți actualizarea de la distanță printr-o conexiune ssh este recomandabil să luați măsurile necesare pentru a putea accesa serverul printr-un terminal serial la distanță. Există posibilitatea ca după actualizarea nucleului și repornirea sistemului să fie nevoie să reparați configurația sistemului de la o consolă locală. De asemenea, dacă sistemul este repornit accidental în mijlocul actualizării există șansa să fie necesară recuperare folosind o consolă locală.

Pentru recuperare de urgență în general recomandăm să folosiți rescue mode (n. trad. modul de recuperare) al Programului de instalare Debian buster. Avantajul folosirii programului de instalare este că puteți alege dintre multiplele metode de recuperare pe cea care se potrivește cel mai bine situației. Vă rugăm să consultați secțiunea Recovering a Broken System (n.tr. Recuperarea unui sistem stricat) din capitolul 8 al Ghidului de instalare și FAQ - Întrebări frecvente despre Programul de instalare.

Dacă recuperarea eșuează, va trebui să inițializați sistemul printr-o metodă alternativă, astfel încât să-l puteți accesa și repara. O opțiune este să folosiți o imagine specială pentru recuperare sau un Linux care rulează de pe CD. După inițializarea în acest fel ar trebui să puteți monta sistemul de fișiere rădăcină (n. trad. „root”) și să-l accesați cu chroot pentru a investiga și repara problema.

4.1.4.1. Consolă de depanare în timpul inițializării folosind initrd

Pachetul initramfs-tools include un interpretor de comenzi minimal[3] în imaginile initrd pe care le generează. De exemplu, dacă imaginea initrd nu poate să monteze sistemul de fișiere rădăcină, veți fi transferat la acest interpretor de comenzi, care dispune de comenzi de bază pentru a putea detecta și eventual rezolva problema.

Lucruri uzuale pe care ar trebui să le verificați: prezența fișierelor-dispozitiv corecte în /dev; ce module sunt încărcate (cat /proc/modules); rezultatul comenzii dmesg, pentru erori la încărcarea driverelor. Rezultatul comenzii dmesg va arăta și care fișiere-dispozitiv au fost alocate discurilor. Ar trebui să comparați cu rezultatul comenzii echo $ROOT pentru a vă asigura că sistemul de fișiere rădăcină este pe dispozitivul la care vă așteptați.

Dacă reușiți să corectați problema puteți ieși din consola de depanare cu comanda exit, iar apoi se va continua procesul de inițializare de la punctul în care a eșuat. Desigur, va trebui să reparați problema la bază și să regenerați imaginea initrd pentru ca următoarea inițializare să nu eșueze din nou.

4.1.4.2. Consola de depanare în timpul inițializării folosind systemd

Dacă inițializarea eșuează rulând systemd este posibil să obțineți o consolă de depanare root (cu drepturi de administrator) modificând linia de comandă a nucleului. Dacă inițializarea reușește, dar unele servicii nu pornesc, ar putea fi util să adăugați systemd.unit=rescue.target la parametrii nucleului.

Altfel, parametrul de nucleu systemd.unit=emergency.target va oferi o consolă de administrare cât se poate de repede. Totuși, aceasta se va întâmplă înainte de montarea sistemul de fișiere rădăcină cu permisiuni citire-scriere. Va trebui să faceți asta manual cu:

# mount -o remount,rw /
      

Mai multe informații despre depanarea unei inițializări cu systemd nefuncționale pot fi găsite în articolul Diagnosticarea problemelor de inițializare a sistemului.

4.1.5. Pregătiți un mediu sigur pentru actualizare

[Important]Important

Dacă utilizați servicii VPN (cum ar fi tinc) este posibil ca acestea să nu fie disponibile pe tot parcursul procesului de actualizare. Mai multe informații la Secțiune 4.1.3, „Pregătiri pentru indisponibilitatea serviciilor”.

Pentru a avea o marjă de siguranță suplimentară atunci când actualizați de la distanță vă sugerăm să rulați procesul de actualizare într-o consolă virtuală furnizată de programul screen. Acesta permite reconectarea în siguranță iar procesul de actualizare nu este întrerupt, chiar dacă procesul conexiunii la distanță eșuează temporar.

4.1.6. Verificați suportul pentru numele interfețelor de rețea

Sisteme înnoite de la versiuni mai vechi care încă folosesc interfețe de rețea cu nume ca eth0 sau wlan0 prezintă riscul să piardă conexiunea la rețea când trec la buster. Vedeți Secțiune 5.1.5, „Migrarea de la numele de interfață de rețea tradiționale” pentru instrucțiuni de migrare.

4.2. Verificarea stării configurației APT

Procedeul de actualizare descris în acest capitol a fost conceput pentru sisteme pure cu versiunea stabilă Debian. În cazul în care configurația APT conține surse adiționale pe lângă stretch, sau dacă ați instalat pachete din alte versiuni sau de la terți, pentru a asigura succesul procesului de înnoire poate doriți să începeți prin a îndepărta acești factori care aduc complicații.

Fișierul principal de configurare folosit de APT pentru a decide de la ce surse va descărca pachete este /etc/apt/sources.list, dar poate folosi și fișiere din directorul /etc/apt/sources.list.d/ - pentru detalii vedeți sources.list(5). Dacă sistemul dumneavoastră folosește fișiere source-list multiple trebuie să vă asigurați că sunt consecvente.

Mai jos sunt două metode pentru a găsi pachete instalate care nu provin de la Debian, folosind aptitude sau apt-forktracer. Rețineți că niciuna din metode nu are acuratețe 100% (exemplul cu aptitude va lista pachete furnizate în trecut de Debian, cum ar fi pachete vechi de nucleu).

$ aptitude search '~i(!~ODebian)'
$ apt-forktracer | sort
  

Actualizări direct de la versiuni mai vechi decât 9 (stretch) nu sunt suportate. Urmați instrucțiunile din Note de lansare pentru Debian 9 pentru a actualiza mai întâi la Debian 9.

Această procedură presupune și că ați actualizat până la ultima versiune intermediară (n. trad. „point release”) stretch. Dacă nu ați făcut acest lucru sau aveți îndoieli urmați instrucțiunile din Section A.1, “Actualizarea sistemului stretch”.

Înainte de a proceda la actualizare ar trebui să verificați că baza de date cu pachete este pregătită. Dacă utilizați un alt manager de pachete, cum ar fi aptitude sau synaptic verificați dacă sunt acțiuni în așteptare. Un pachet programat pentru ștergere sau actualizare în managerul de pachete ar putea avea un impact negativ asupra procedeului de actualizare. Țineți cont că acest lucru nu poate fi corectat decât dacă fișierele source-list ale APT încă fac referire la stretch și nu la stable (n. trad. stabil) sau buster. Consultați Section A.2, “Verificarea fișierelor listelor de surse APT”.

Ar fi bine să ștergeți pachetele învechite din sistem înainte de actualizare.

4.2.1. Secțiunea proposed-updates

Dacă aveți secțiunea proposed-updates (n. trad. actualizări propuse) în fișierele source-list ale APT ar fi bine să o ștergeți înainte de a încerca să actualizați sistemul. Aceasta este o precauție pentru a reduce probabilitatea unor conflicte.

4.2.2. Surse neoficiale

Dacă aveți pachete non-Debian pe sistemul dumneavoastră ar trebui să știți că acestea ar putea fi șterse în cursul actualizării datorită unor conflicte de dependențe. Dacă aceste pachete au fost instalate prin adăugarea unei arhive suplimentare în fișierele source-list ale APT ar trebui să verificați dacă această arhivă oferă pachete compilate pentru buster și să schimbați sursa corespunzătoare la același moment cu schimbarea surselor pentru pachetele Debian.

Unii utilizatori ar putea avea instalate pe sistemele lor stretch versiuni neoficiale de tip backport mai noi ale unor pachete care sunt în Debian. Aceste pachete pot cauza probleme în timpul unei actualizări deoarece pot rezulta în conflicte de fișiere[4]. Secțiune 4.5, „Probleme posibile în timpul actualizării” conține informații despre cum să rezolvați conflictele de fișiere dacă apar.

4.2.3. Dezactivarea alegerilor selective APT

Dacă ați configurat APT să instaleze anumite pachete dintr-o distribuție diferită de cea stabilă (ex. din distribuția în testare), ar putea fi nevoie să schimbați configurația alegerilor selective APT (prezentă în /etc/apt/preferences și /etc/apt/preferences.d/) pentru a permite actualizarea pachetelor la versiunile din noua versiune stabilă. Mai multe informații despre alegeri selective APT (n. trad. „pinning”) pot fi găsite în apt_preferences(5).

4.2.4. Verificarea stării pachetelor

Indiferent de metoda utilizată pentru actualizare, se recomandă să verificați mai întâi starea tuturor pachetelor și să vă asigurați că toate pachetele sunt într-o stare actualizabilă. Următoarea comandă va afișa eventualele pachete care au starea de Half-Installed (n. trad. jumătate-instalat) sau Failed-Config (n. trad. eșec-configurare), precum și cele cu o stare de eroare.

# dpkg --audit
    

Ați putea să inspectați starea tuturor pachetelor de pe sistemul dumneavoastră și utilizând aptitude sau folosind comenzi precum

# dpkg -l | pager
    

sau

# dpkg --get-selections "*" > ~/curr-pkgs.txt
    

Este preferabil să ștergeți orice marcaje „păstrat” (n. trad. „hold”) înainte de actualizare. Actualizarea va eșua dacă este păstrat un pachet esențial pentru actualizare.

De reținut că aptitude folosește o metodă diferită de a marca pachetele care sunt păstrate față de apt și dselect. Puteți identifica pachetele păstrate de aptitude cu

# aptitude search "~ahold" 
    

Dacă vreți să verificați ce pachete aveți păstrate de apt folosiți

# dpkg --get-selections | grep 'hold$'
    

Dacă ați modificat și recompilat local un pachet și nu l-ați redenumit sau nu ați adăugat o „epocă” la versiune, va trebui să îl „păstrați” pentru a nu fi actualizat.

Starea hold pentru apt poate fi schimbată folosind:

# echo nume_pachet hold | dpkg --set-selections
    

Înlocuiți hold cu install pentru a șterge starea hold.

Dacă mai aveți ceva de rezolvat este cel mai bine vă asigurați că fișierele source-list APT încă fac referire la stretch, după cum este explicat în Section A.2, “Verificarea fișierelor listelor de surse APT”.

4.3. Pregătirea surselor pentru APT

Înainte de a începe actualizarea trebuie să reconfigurați fișierele source-list ale APT (/etc/apt/sources.list și fișierele din /etc/apt/sources.list.d/).

APT va lua în considerare toate pachetele care pot fi găsite prin intermediul oricărei arhive de pachete configurate și va instala pachetul cu cea mai mare versiune, alegând prioritar prima linie din fișiere. În cazul în care aveți mai multe locații cu pachete ar trebui să listați în primul rând cele de pe discuri locale, după care CD-uri, iar după aceea cele de la distanță.

O versiune poate fi menționată atât prin numele de cod (de ex: stretch, buster) cât și prin numele de stare (ex: oldstable, stable, testing, unstable). Referirea la o versiune folosind numele de cod are avantajul că nu veți fi luat prin surprindere de o nouă versiune, motiv pentru care am folosit această abordare aici. Evident, aceasta înseamnă că va trebui să urmăriți anunțurile de lansare. Dacă utilizați numele de stare veți observa multe actualizări pentru pachete, disponibile imediat ce o versiune a fost lansată.

Debian pune la dispoziție două liste de e-mail cu anunțuri care vă ajută să rămâneți la curent cu informații relevante despre lansările Debian:

4.3.1. Adăugarea de surse internet pentru APT

La instalări noi implicit APT este configurat să folosească serviciul Debian APT CDN (n. trad. CDN - „Content Delivery Network”, rețea de distribuție de conținut). În felul acesta pachetele ar trebui să fie descărcate automat de la un server apropiat în rețea. Deoarece acesta este un serviciu nou instalările mai vechi ar putea fi configurate să preia pachete de la serverele principale Debian sau unul din siturile oglindă. Este recomandat să comutați la utilizarea serviciului CDN în configurația APT, în cazul în care nu ați făcut deja acest lucru.

Pentru a utiliza serviciul CDN adăugați o linie ca aceasta în configurația APT (se presupune că folosiți secțiunile main și contrib):

deb http://deb.debian.org/debian buster main contrib

După ce adăugați noile surse dezactivați liniile deb care existau înainte, prin introducerea unui diez (#) la începutul lor.

Totuși, dacă obțineți rezultate mai bune folosind un site-oglindă specific care este mai apropiat din punct de vedere al rețelei, această opțiune este disponibilă în continuare.

Adresele siturilor-oglindă Debian pot fi găsite la https://www.debian.org/distrib/ftplist (vedeți secțiunea lista serverelor Debian).

De exemplu, să presupunem că cel mai apropiat sit-oglindă Debian este http://mirrors.kernel.org. Dacă inspectați această locație cu un navigator web, veți observa că directoarele principale sunt organizate astfel:

      http://mirrors.kernel.org/debian/dists/buster/main/binary-i386/...
      http://mirrors.kernel.org/debian/dists/buster/contrib/binary-i386/...
    

Pentru a configura APT să folosească un sit-oglindă, adăugați o linie ca aceasta (se presupune din nou că folosiți main și contrib):

deb http://mirrors.kernel.org/debian buster main contrib

Observați că dists este adăugat implicit, iar argumentele de după numele versiunii sunt utilizate pentru a extinde calea în directoare multiple.

Din nou, după ce adăugați sursele noi, dezactivați înregistrările pentru arhive existente anterior.

4.3.2. Adăugarea de surse APT pentru un sit-oglindă local

În loc să folosiți situri-oglindă poate doriți să modificați fișierele source-list APT pentru a folosi o sursă de pe un disc local (eventual montat prin NFS).

De exemplu, locația dumneavoastră cu pachete poate fi în /var/local/debian/, având directoarele principale astfel:

      /var/local/debian/dists/buster/main/binary-i386/...
      /var/local/debian/dists/buster/contrib/binary-i386/...
    

Pentru a utiliza această locație cu apt adăugați această linie în fișierul sources.list:

deb file:/var/local/debian buster main contrib

Observați că dists este adăugat implicit, iar argumentele de după numele versiunii sunt utilizate pentru a extinde calea în directoare multiple.

După ce ați adăugat noile surse dezactivați liniile pentru arhive care existau deja în fișierele source-list ale APT prin plasarea unui diez (#) la începutul lor.

4.3.3. Adăugarea de surse APT de pe un mediu optic

Dacă doriți să folosiți doar DVD-uri (sau CD-uri sau discuri Blu-ray), dezactivați liniile existente din fișierele source-list APT, prin plasarea unui diez (#) la începutul lor.

Asigurați-vă că există o linie în /etc/fstab ce permite montarea CD-ROM-ului la locația /media/cdrom. De exemplu, dacă unitatea CD-ROM este /dev/sr0 atunci /etc/fstab ar trebui să conțină o linie de genul:

      /dev/sr0 /media/cdrom auto noauto,ro 0 0
    

De reținut că între cuvintele noauto,ro din cel de-al patrulea câmp nu trebuie să existe niciun spațiu.

Pentru a verificare introduceți un CD și încercați să rulați

# mount /cdrom    # montează CD-ul în punctul de montare
# ls -alF /cdrom  # afișează directorul rădăcină din CD
# umount /cdrom   # demontează CD-ul
    

Apoi rulați

# apt-cdrom add
    

pentru fiecare CD-ROM Debian cu binare pe care îl aveți, pentru a adăuga datele despre fiecare CD în baza de date APT.

4.4. Actualizarea pachetelor

Metoda recomandată de actualizare de la versiuni anterioare Debian este să folosiți utilitarul de gestionare a pachetelor apt.

[Notă]Notă

Comanda apt este destinată folosirii interactive și nu ar trebui folosită în scripturi. În scripturi ar trebui folosită comanda apt-get, care produce răspunsuri stabile, mai potrivite pentru procesare automată.

Nu uitați să montați toate partițiile necesare (în special partiția rădăcină și partiția /usr) în mod citire-scriere, cu o comandă ca:

# mount -o remount,rw /punct_de_montare
  

În continuare ar trebui să verificați că sursele APT (din /etc/apt/sources.list și fișierele din /etc/apt/sources.list.d/) fac referință la buster sau la stable. Nu ar trebui să fie nicio sursă care se referă la stretch.

[Notă]Notă

Liniile de surse pentru CD-uri pot conține uneori unstable. Deși acest lucru poate fi derutant ele nu trebuie schimbate.

4.4.1. Înregistrarea sesiunii

Este recomandat să utilizați programul /usr/bin/script pentru a înregistra sesiunea de actualizare. În cazul în care intervine vreo problemă veți avea un istoric a ceea ce s-a întâmplat, iar dacă este nevoie, veți putea oferi informații exacte când raportați problema. Pentru a porni înregistrarea, tastați:

# script -t 2>~/actualizare-busteretapă.time -a ~/actualizare-busteretapă.script
    

sau similar. Dacă trebuie să porniți înregistrarea din nou (ex. dacă trebuie să reporniți sistemul) folosiți valori diferite pentru etapă pentru a indica ce etapă a actualizării este înregistrată. Nu puneți fișierul script într-un director temporar cum ar fi /tmp sau /var/tmp (fișiere în aceste directoare ar putea fi șterse în timpul actualizării sau la o repornire).

Înregistrarea vă va permite, de asemenea, să consultați informații care au derulat în afara ecranului. Dacă sunteți la consola sistemului puteți trece la VT2 (folosind Alt-F2) și după autentificare să utilizați less -R ~root/actualizare-buster.script pentru a vedea fișierul.

După încheierea actualizării, puteți opri comanda script tastând exit la prompt.

apt va înregistra schimbările de stare ale pachetelor în /var/log/apt/history.log și mesajele din terminal în /var/log/apt/term.log. Suplimentar dpkg va înregistra schimbările de stare ale pachetelor în /var/log/dpkg.log. Dacă folosiți aptitude acesta va înregistra suplimentar schimbările de stare în /var/log/aptitude.

Dacă ați folosit opțiunea -t pentru script puteți folosi programul scriptreplay pentru a reda întreaga sesiune:

# scriptreplay ~/actualizare-buster.time ~/actualizare-buster.script
    

4.4.2. Actualizarea listei de pachete

Mai întâi trebuie preluată lista pachetelor disponibile în noua versiune. Aceasta se face cu:

# apt update
    
[Notă]Notă

Utilizatorii care folosesc apt-secure ar putea avea probleme cu aptitude sau apt-get. Pentru apt-get puteți folosi apt-get update --allow-releaseinfo-change.

4.4.3. Verificați dacă aveți suficient spațiu pentru actualizare

Înainte de a începe actualizarea completă descrisă în Secțiune 4.4.5, „Actualizarea sistemului ” va trebui să vă asigurați că aveți suficient spațiu pe disc. În primul rând, orice pachet necesar pentru instalare descărcat prin rețea este stocat în /var/cache/apt/archives (și subdirectorul partial/ în timpul descărcării), deci trebuie să aveți suficient spațiu pe sistemul de fișiere pe care se află /var/ pentru a descărca pachetele ce vor fi instalate pe sistemul dumneavoastră. După descărcare veți avea nevoie de mai mult spațiu pe alte partiții de sistem pentru a instala atât pachetele actualizate (care e posibil să conțină binare mai mari sau mai multe date) cât și pachetele noi care vor fi aduse pentru actualizare. Dacă sistemul dumneavoastră nu are suficient spațiu este posibil să rămâneți cu o actualizare incompletă, care este foarte dificil de recuperat.

apt vă poate arăta informații detaliate despre spațiul necesar pentru instalare. Înainte să începeți actualizarea, puteți vedea această estimare folosind comanda:

# apt -o APT::Get::Trivial-Only=true full-upgrade
[ ... ]
XXX actualizate, XXX noi instalate, XXX de îndepărtat și XXX neactualizate.
Trebuie descărcate xx.xMB de arhive. 
După această operațiune, AAAMB spațiu suplimentar va fi folosit.
    
[Notă]Notă

Această comandă ar putea genera o eroare la începutul procedeului de actualizare din motive descrise în următoarele secțiuni. În acest caz va trebui să așteptați până ați făcut o actualizare minimală conform Secțiune 4.4.4, „Actualizare de sistem minimală” înainte de a rula această comandă pentru a estima spațiul pe disc.

Dacă nu aveți spațiu suficient pentru actualizare, apt vă va avertiza cu un mesaj asemănător cu:

E: Nu aveți spațiu liber suficient în /var/cache/apt/archives/.
    

În această situație eliberați spațiu înainte de actualizare. Aveți mai multe opțiuni:

  • Ștergeți pachetele care au fost descărcate anterior pentru a fi instalate (în /var/cache/apt/archive). Curățarea depozitului temporar de pachete se face cu comanda apt clean, care va șterge toate fișierele descărcate anterior.

  • Îndepărtați pachete uitate. Dacă ați utilizat aptitude sau apt pentru a instala manual pachete în stretch, acestea vor reține faptul că au fost instalate manual și vor putea marca drept inutile pachetele care au fost instalate doar ca dependențe și nu mai sunt necesare deoarece pachetele care aveau nevoie de ele au fost șterse. În consecință nu vor marca pentru ștergere pachetele pe care le-ați instalat manual. Pentru a îndepărta pachetele instalate automat și care nu mai sunt folosite, executați:

    # apt autoremove
            

    Puteți folosi și deborphan, debfoster sau cruft pentru a găsi pachete inutile. Nu dezinstalați pachetele prezentate de aceste unelte fără o examinare atentă, mai ales dacă folosiți opțiunile agresive, neimplicite, care sunt susceptibile de a da rezultate eronate cu privire la starea pachetelor. Este indicat să analizați manual pachetele sugerate pentru dezinstalare (ex: conținutul, dimensiunea și descrierea) înainte de a le dezinstala.

  • Îndepărtați pachete care ocupă prea mult loc și nu sunt necesare în acest moment (le puteți instala din nou după actualizare). Dacă aveți instalat pachetul popularity-contest puteți folosi popcon-largest-unused pentru a afișa pachetele neutilizate care ocupă cel mai mult spațiu. Puteți găsi pachetele care ocupă cel mai mult spațiu cu dpigs (disponibil în pachetul debian-goodies) sau cu wajig (rulând wajig size). Puteți folosi și aptitude. Porniți aptitude în modul vizual, alegeți VizualizăriListă nouă simplă de pachete (ViewsNew Flat Package List în varianta engleză), apăsați tasta l și introduceți ~i. După aceea apăsați S și introduceți ~installsize. Ca rezultat veți obține o listă cu care se poate lucra.

  • Ștergeți fișierele de traducere și localizare din sistem în caz că nu mai sunt necesare. Puteți instala și configura pachetul localepurge astfel încât doar câteva localizări selectate să fie păstrate. Astfel se va reduce din spațiul ocupat în /usr/share/locale.

  • Mutați temporar pe un alt sistem sau ștergeți permanent fișierele jurnal de sistem din /var/log/.

  • Folosiți un /var/cache/apt/archives temporar: pentru depozitul temporar puteți folosi un director de pe un alt sistem de fișiere (dispozitiv de stocare USB, disc instalat temporar, un alt sistem de fișiere în utilizare, ...).

    [Notă]Notă

    Nu folosiți o partiție NFS deoarece conexiunea la rețea ar putea fi întreruptă în timpul actualizării.

    De exemplu, dacă aveți un dispozitiv USB montat la /media/stick-usb:

    1. ștergeți pachetele care au fost descărcate anterior spre instalare:

      # apt clean
                      

    2. copiați directorul /var/cache/apt/archives pe dispozitivul USB:

      # cp -ax /var/cache/apt/archives /media/stick-usb/
                      

    3. montați directorul pentru depozit temporar peste cel curent:

      # mount --bind /media/stick-usb/archives /var/cache/apt/archives
                      

    4. după actualizare restaurați directorul /var/cache/apt/archives original:

      # umount /media/stick-usb/archives
                      

    5. ștergeți directorul /media/stick-usb/archives.

    Puteți crea directorul pentru depozit temporar pe orice sistem de fișiere montat pe sistemul dumneavoastră.

  • Executați o actualizare minimală a sistemului (citiți Secțiune 4.4.4, „Actualizare de sistem minimală”) sau actualizări parțiale a sistemului urmată de o actualizare completă. Acest lucru va face posibil să actualizați sistemul parțial și va permite curățarea depozitului temporar de pachete înainte de actualizarea completă.

Țineți cont că pentru a putea șterge pachete în siguranță se recomandă să treceți fișierele source-list ale APT înapoi la stretch după cum este descris în Section A.2, “Verificarea fișierelor listelor de surse APT”.

4.4.4. Actualizare de sistem minimală

În unele cazuri, o actualizare completă (așa cum este descrisă mai jos), ar putea șterge un număr mare de pachete pe care doriți să le păstrați. În acest caz vă recomandăm o actualizare în doi pași: mai întâi o actualizare minimală pentru a depăși aceste conflictele, după aceea o actualizare completă așa cum este descrisă în Secțiune 4.4.5, „Actualizarea sistemului ”.

Pentru a face acest lucru mai întâi rulați:

# apt-get upgrade
    

Aceasta are ca efect actualizarea acelor pachete care pot fi actualizate fără ca alte pachete să fie șterse, dar va instala pachete noi dacă este necesar.

Actualizarea minimală a sistemului poate fi folositoare și atunci când sistemul nu dispune de spațiu suficient și nu se poate face o actualizare completă datorită constrângerilor de spațiu.

Dacă pachetul apt-listchanges este instalat acesta va afișa informații importante despre pachetele actualizate (în configurația implicită) după descărcarea pachetelor. Pentru a ieși din programul de afișare și a continua actualizarea apăsați q după ce ați citit.

4.4.5. Actualizarea sistemului

Dacă ați executat pașii anteriori puteți continua cu partea principală a actualizării. Executați:

# apt full-upgrade
    

Aceasta va efectua o actualizare completă a sistemului, instalând cele mai noi versiuni disponibile ale tuturor pachetelor și va rezolva toate posibilele schimbări de dependențe dintre pachetele din diferitele versiuni. Dacă este necesar va instala câteva pachete noi (de obicei versiuni de biblioteci mai noi sau pachete redenumite) și va șterge pachetele învechite care intră în conflict cu cele noi.

Când actualizați de pe un set de CD/DVD/BD-uri, vi se va cere să introduceți anumite discuri la diverse momente în timpul actualizării. Este posibil să trebuiască să introduceți de mai multe ori același disc. Acest lucru este necesar datorită pachetelor interdependente dispersate pe mai multe discuri

Pachetele deja instalate care nu pot fi înnoite la versiuni mai noi fără a schimba starea de instalare a unui alt pachet vor fi lăsate la versiunea curentă (marcate ca held back). Acest lucru poate fi rezolvat prin utilizarea comenzii aptitude și alegerea acestor pachete pentru instalare sau prin rularea comenzii apt install pachet.

4.5. Probleme posibile în timpul actualizării

Secțiunile următoare descriu probleme cunoscute care pot apărea în timpul procedeului de actualizare la buster.

4.5.1. Dist-upgrade eșuează cu eroarea „Could not perform immediate configuration”

În anumite cazuri etapa apt full-upgrade poate să eșueze după descărcarea pachetelor cu:

E: Nu s-a putut face configurarea imediată a 'nume_pacakage'.  Vă rugăm citiți în pagina de manual man 5 apt.conf secțiunea APT::Immediate-Configure pentru detalii.
      

Dacă se întâmplă acest lucru, rularea comenzii apt full-upgrade -o APT::Immediate-Configure=0 ar trebui să permită continuarea actualizării.

O altă posibilă ocolire a problemei ar fi să adăugați temporar surse APT pentru stretch și buster în sources.list și să rulați apt update.

4.5.2. Pachete de îndepărtat

Procesul de actualizare la buster ar putea solicita îndepărtarea unor pachete din sistem. Lista exactă de pachete va fi diferită în funcție de setul de pachete pe care le aveți instalate. Aceste note de lansare oferă sfaturi generice despre programele care vor fi îndepărtate, dar dacă aveți îndoieli, este recomandată examinarea listei cu pachete propuse pentru a fi șterse de fiecare metodă de instalare, înainte de a continua. Pentru mai multe informații despre pachetele învechite în buster, vizitați Secțiune 4.8, „Pachete învechite”.

4.5.3. Conflicte sau cicluri de pre-dependențe

Uneori este necesar să activați opțiunea APT::Force-LoopBreak în APT pentru a putea elimina temporar un pachet esențial, datorită unei bucle Conflict/Pre-Dependență. apt vă va avertiza în legătură cu aceasta și va abandona actualizarea. Puteți ocoli această situație precizând opțiunea -o APT::Force-LoopBreak=1 în linia de comandă pentru apt.

Este posibil ca structura dependențelor dintr-un sistem să fie coruptă într-o asemenea măsură încât să necesite intervenție manuală. În mod obișnuit aceasta înseamnă utilizarea apt sau

# dpkg --remove nume_pachet
    

pentru a elimina pachetele problemă, sau

# apt -f install
# dpkg --configure --pending
    

În cazuri extreme ar putea fi nevoie să forțați o reinstalare cu comanda

# dpkg --install /cale/către/nume_pachet.deb
    

4.5.4. Conflicte de fișiere

Dacă actualizați de la un sistem stretch pur nu ar trebui să apară conflicte de fișiere, însă acestea pot interveni dacă aveți pachete neoficiale de tip „backport”. Un conflict de fișiere poate rezulta într-o eroare de genul:

Se despachetează <pachet-foo> (din <pachet-foo-fișier>) ...
dpkg: eroare la procesarea <pachet-foo> (--install):
 se încearcă suprascrierea `<ceva-nume-fișier>',
 care este și în pachetul <pachet-bar>
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Au fost întâmpinate erori în timpul procesării:
<pachet-foo>
    

Puteți încerca să rezolvați un conflict de fișiere prin eliminarea forțată a pachetelor menționate în ultima linie a mesajului de eroare:

# dpkg -r --force-depends nume_pachet
    

După ce ați rezolvat problema, ar trebui să puteți continua actualizarea prin repetarea comenzilor apt descrise mai sus.

4.5.5. Modificări ale configurațiilor

În timpul actualizării vor apărea întrebări referitor la configurarea sau re-configurarea mai multor pachete. Dacă sunteți întrebat dacă un fișier din directorul /etc/init.d, sau fișierul /etc/manpath.config ar trebui înlocuit cu versiunea responsabilului de pachet, în general este necesar să răspundeți cu da (yes în engleză) pentru a asigura integritatea sistemului. Puteți oricând reveni la versiunile vechi, deoarece acestea vor fi salvate cu extensia .dpkg-old.

Dacă nu știți sigur ce să faceți, scrieți numele pachetului sau fișierului și amânați rezolvarea problemelor pentru mai târziu. Puteți căuta în fișierul script informația afișată în timpul actualizării.

4.5.6. Schimbare a sesiunii la consolă

Dacă faceți actualizarea folosind consola de sistem locală este posibil ca la un moment dat în timpul actualizării consola să fie mutată într-o altă vizualizare iar procesul de actualizare să nu mai fie vizibil. Acest lucru se poate întâmpla spre exemplu pe sisteme cu interfață grafică când este repornit managerul de display.

Pentru a recupera consola cu procesul de actualizare în derulare va trebui să folosiți Ctrl+Alt+F1 (dacă sunteți în mediul grafic) sau Alt+F1 (dacă sunteți în modul text) pentru a vă întoarce la terminalul virtual 1. Înlocuiți F1 cu tasta funcțională cu același număr ca terminalul virtual pe care se derulează procesul de actualizare. Puteți de asemenea să folosiți Alt+săgeată-stânga sau Alt+săgeată-dreapta pentru a schimba între diferitele terminale în mod text.

4.6. Actualizarea nucleului și a pachetelor conexe

Această secțiune explică actualizarea nucleului (n. trad. „kernel”) și identifică potențialele probleme legate de aceasta. Puteți instala unul din pachetele linux-image-* oferite de Debian sau să compilați un nucleul personalizat din surse.

O mare parte din informația expusă în această secțiune presupune că veți folosi un nucleu modular din Debian împreună cu initramfs-tools și udev. Dacă ați ales să folosiți un nucleu ce nu necesită initrd sau este folosit un alt generator de initrd atunci o parte din aceste informații ar putea să nu fie relevante.

4.6.1. Instalarea meta-pachetului de nucleu

Dacă nu ați făcut deja acest lucru, este indicat să instalați un meta-pachet linux-image-* atunci când efectuați actualizarea completă (n. trad. „full-upgrade”) de la stretch la buster. Aceste pachet vor aduce automat o nouă versiune de nucleu în timpul actualizărilor. Puteți verifica dacă aveți instalat un asemenea pachet cu comanda:

# dpkg -l "linux-image*" | grep ^ii | grep -i meta
    

Dacă această comandă nu afișează nimic, atunci va trebui să instalați manual un pachet nou linux-image sau să instalați un meta-pachet linux-image. Pentru a vedea o listă cu meta-pachetele linux-image disponibile, executați comanda:

# apt-cache search linux-image- | grep -i meta | grep -v transition
    

Dacă nu știți ce pachet să alegeți, rulați comanda uname -r și căutați un pachet cu un nume asemănător. De exemplu, dacă va fi afișat 4.9.0-8-amd64 este recomandat să instalați linux-image-amd64. Puteți folosi apt-cache pentru a vedea descrierea lungă a fiecărui pachet pentru a face o alegere potrivită. De exemplu:

# apt show linux-image-amd64
    

Utilizați apoi comanda apt install pentru instalare. După instalarea noului nucleu ar trebui să reporniți sistemul cu prima ocazie pentru a beneficia de îmbunătățirile noii versiuni de nucleu. Înainte de a reporni prima dată sistemul după actualizare citiți și Secțiune 5.1.12, „Operațiuni de executat după actualizare și înainte de repornire.”.

Pentru cei mai aventuroși în Debian există o metodă simplă de compilare a propriului nucleu. Instalați sursele nucleului din pachetul linux-source. Puteți folosi ținta (n. trad. „target”) deb-pkg disponibilă în fișierul „makefile” ce vine cu sursele pentru a construi un pachet cu binare. Mai multe informații pot fi găsite în manualul Debian Linux Kernel Handbook, care este disponibil și în pachetul debian-kernel-handbook.

Dacă este posibil, ar fi avantajos să actualizați nucleul separat de procedura full-upgrade principală, pentru a reduce șansele unui sistem care temporar nu poate fi inițializat. De reținut că acest lucru ar trebui făcut doar după actualizarea minimală descrisă în Secțiune 4.4.4, „Actualizare de sistem minimală”.

4.7. Pregătirile pentru următoarea versiune

După actualizare sunt anumite pregătiri pe care le puteți face pentru următoarea lansare.

4.7.1. Eliminarea pachetelor îndepărtate

În general este recomandat să eliminați complet pachetele îndepărtate, mai ales dacă acestea au fost îndepărtate în urma unei actualizări anterioare (de exemplu actualizarea la stretch) sau erau furnizate de terți. În special scripturile vechi de tip init.d ar putea cauza probleme.

[Atenție]Atenție

Eliminarea unui pachet va curăța în general și fișierele jurnal ale acestuia, poate doriți să salvați o copie înainte.

Comanda următoare afișează o listă cu toate pachetele îndepărtate care încă pot avea fișiere de configurare pe sistem:

# dpkg -l | awk '/^rc/ { print $2 }'
    

Pachetele pot fi curățate folosind comanda apt purge. Dacă doriți să ștergeți toate pachetele odată, puteți folosi următoarea comandă:

# apt purge $(dpkg -l | awk '/^rc/ { print $2 }')
    

Dacă folosiți aptitude puteți folosi și următoarea comandă alternativă:

# aptitude search '~c'
# aptitude purge '~c'
    

4.8. Pachete învechite

Deși aduce multe pachete noi, buster mai retrage și omite un număr de pachete vechi care au fost în stretch. Nu se oferă nicio modalitate de tranziție pentru aceste pachete. Deși nimic nu vă oprește să continuați să folosiți un pachet învechit, proiectul Debian va opri suportul de securitate pentru ele la un an după lansarea lui buster[5] și nu va oferi alt suport între timp. Se recomandă înlocuirea lor cu alternative, dacă acestea există.

Există multe motive pentru care pachetele pot fi scoase din distribuție: nu mai sunt întreținute de către autorii originari, nu mai există un dezvoltator Debian interesat de întreținerea pachetelor, funcționalitatea oferită a fost înlocuită de alt software (sau o nouă versiune), sau nu mai sunt considerate a fi adecvate pentru buster datorită unor probleme. În cazul din urmă, pachetele ar putea fi încă prezente în distribuția unstable (n. trad. „instabilă”).

Anumite interfețe pentru managementul pachetelor oferă modalități simple de a găsi pachete care nu mai sunt disponibile din sursele cunoscute. Interfața în mod text aptitude le afișează în categoria Obsolete and Locally Created Packages (n. trad. Pachete învechite și create local). Aceste pot fi afișate și eliminate din linia de comandă cu:

# aptitude search '~o'
# aptitude purge '~o'
  

(Debian Bug Tracking System) (Sistemul Debian pentru evidența problemelor) oferă deseori informații suplimentare despre motivele pentru care un pachet a fost eliminat. Ar trebui să analizați atât problemele arhivate raportate pentru pachetul respectiv cât și problemele arhivate raportate pentru pseudo-pachetul ftp.debian.org.

Pentru o listă cu pachete învechite în Buster, vizitați Secțiune 5.1.10, „Pachete notabile învechite”.

4.8.1. Pachete de tranziție

Există posibilitatea ca unele pachete din stretch să fie înlocuite în buster cu pachete de tranziție „dummy” (n. trad. marionetă), care sunt pachete goale pentru simplificarea actualizării. Spre exemplu, dacă o aplicație care era distribuită într-un singur pachet a fost împărțită în mai multe pachete, este posibil să fie furnizat un pachet de tranziție cu același nume ca al pachetului vechi și cu dependențele astfel încât pachetele noi să fie instalate. După instalare, pachetul de tranziție fi îndepărtat fără probleme.

De obicei descrierile pachetelor de tranziție indică scopul lor, dar acestea nu sunt uniforme. În special unele pachete dummy sunt concepute pentru a fi păstrate, pentru instalarea unei suite software complete sau pentru a instala cea mai nouă versiune a unui program. Comanda deborphan cu opțiunile --guess-* (de ex. --guess-dummy) este utilă pentru a detecta pachete de tranziție.



[1] Dacă prioritatea debconf este stabilită la un nivel foarte ridicat puteți preveni întrebările de configurare, dar serviciile care se bazează pe opțiuni de configurare implicite care nu se aplică sistemului dumneavoastră nu vor porni.

[2] Spre exemplu: serviciile DNS sau DHCP, mai ales dacă nu există redundanță sau soluție de înlocuire. În cazul DHCP utilizatorii pot fi deconectați de la rețea dacă timpul de alocare al adresei este mai mic decât timpul necesar procesului de actualizare.

[3] Această facilitate poate fi dezactivată prin adăugarea parametrului panic=0 la parametrii de inițializare.

[4] În mod normal sistemul de management al pachetelor din Debian nu permite unui pachet să șteargă sau să înlocuiască un fișier deținut de alt pachet, decât în cazul în care a fost definit ca înlocuitor pentru acel pachet.

[5] Sau atât timp cât nu se lansează o altă versiune în acel interval de timp. În mod obișnuit doar două versiuni stabile sunt suportate în același timp.