Acasă
» Cum să
»
Eliberați în siguranță blocarea APT a Ubuntu și finalizați actualizarea
Eliberați în siguranță blocarea APT a Ubuntu și finalizați actualizarea
Eroarea „Could not get lock /var/lib/dpkg/lock-frontend” înseamnă de obicei că un alt proces de gestionare a pachetelor funcționează deja. Așteptați finalizarea acestei sarcini, identificați procesul dacă nu se șterge și abia apoi reparați orice configurație a pachetului întreruptă; ștergerea fișierului de blocare nu este o soluție sigură.
APT este instrumentul de gestionare a pachetelor din Ubuntu, care dpkgefectuează instalarea și configurarea pachetelor la nivel inferior. Acestea folosesc blocări, astfel încât două operațiuni nu pot schimba starea pachetului în același timp. Un fișier de blocare poate rămâne pe disc în timpul funcționării normale, deci prezența sa în sine nu înseamnă că este învechit.
1. Dați șansa programului de actualizare Ubuntu să termine
Mai întâi închideți orice altă sarcină de pachet pe care ați început-o, cum ar fi o altă comandă Terminal, Software Updater sau o instalare din magazinul de aplicații. Dacă este deschisă o casetă de dialog de actualizare, lăsați-o să se termine în loc să începeți o a doua aptcomandă. Pe Ubuntu desktop, este posibil ca serviciile de actualizare în fundal să funcționeze și ele.
Verificați serviciile systemd relevante și așteptați dacă unul este activ:
systemctl status apt-daily.service apt-daily-upgrade.service
Aceste unități pot fi inactive chiar și atunci când un alt frontend al pachetului deține blocarea, așadar inspectați și procesul folosind blocarea exactă. Nu lansați mai multe comenzi de instalare sau actualizare în timp ce operațiunea curentă este activă.
Mesajul de blocare denumește resursa utilizată și poate include un ID de proces care trebuie investigat.
2. Identificați cine deține blocarea frontend-ului
Folosește fuserpentru a afișa procesele care accesează blocarea, apoi inspectează orice PID raportat de aceasta:
Înlocuiți 2468cu PID-ul real din ieșire. Un nume de proces, cum ar fi apt, apt-get, dpkg, sau un serviciu de actualizare, indică faptul că este posibil ca lucrările la pachet să fie încă în desfășurare. Dacă aveți nevoie să vedeți o listă mai amplă de procese, executați:
ps -eo pid,etime,cmd | grep -E '[a]pt|[d]pkg'
Nu presupuneți că un proces este blocat doar pentru că nu are niciun progres vizibil. Descărcările de pachete, scripturile de întreținere și repornirile serviciilor pot dura ceva timp. Dacă este o actualizare pe care ați început-o într-un alt terminal, reveniți la terminalul respectiv și lăsați-o să se termine. Dacă este deținută de un program de actualizare grafic, utilizați aplicația respectivă pentru a anula sau a închide operațiunea în mod normal.
Folosește PID-ul raportat și numele comenzii pentru a distinge un program de actualizare activ de comanda pe care încerci să o execuți.
3. Gestionați cu atenție o operațiune cu adevărat blocată
Dacă procesul este o actualizare automată, verificați starea și jurnalele acestuia înainte de a interveni:
systemctl status apt-daily-upgrade.service
sudo journalctl -u apt-daily-upgrade.service -b --no-pager
Când serviciul încă progresează, lasă-l în pace. Dacă recunoști o comandă de pachet pe care ai lansat-o singur și este în mod clar blocată, întrerupe-o o dată din propriul terminal cu Ctrl+Cși așteaptă să revină în shell. Nu folosește kill -9, killall dpkg, sau elimină fișiere sub /var/lib/dpkg; oprirea bruscă a scripturilor de pachet poate lăsa pachetele nearhivate, dar neconfigurate.
Dacă procesul s-a încheiat, dar operațiunea de creare a pachetului a fost întreruptă, repornirea este o modalitate rezonabilă de a șterge lucrările orfane din spațiul utilizatorului. După repornire, asigurați-vă că nu rulează nicio sarcină de actualizare software sau de instalare înainte de a continua. Dacă un serviciu rămâne blocat în mod repetat, utilizați ieșirea jurnalului pentru a diagnostica serviciul respectiv, în loc să ștergeți în mod repetat fișierele de blocare.
Un serviciu apt-daily-upgrade activ este un motiv pentru a aștepta și a verifica progresul acestuia, nu pentru a-i elimina blocarea.
4. Starea pachetului de reparații după ce blocarea dispare
Odată ce niciun manager de pachete nu mai folosește blocarea, finalizați orice configurare a pachetului în așteptare:
sudo dpkg --configure -a
Aceasta configurează pachetele care au fost dezarhivate, dar nu au fost configurate complet. Dacă raportează probleme de dependență, solicitați APT să le rezolve:
sudo apt-get -f install
Citiți modificările propuse înainte de confirmare. Nu adăugați modificări -yîn timpul depanării: solicitarea vă permite să verificați dacă APT planifică o eliminare sau o modificare neașteptată. După finalizarea reparației, reîmprospătați listele de pachete și încercați din nou sarcina inițială:
Înlocuiți PACKAGE_NAMEcu pachetul pe care intenționați să îl instalați. Manualul APT-get al Ubuntu documentează -fo încercare de a corecta dependențele defecte, iar manualul dpkg explică acțiunea de configurare a pachetului. Dacă APT raportează în continuare blocarea, repetați verificarea procesului; este posibil ca o a doua sarcină de configurare a pachetului să fi început între timp.
După ce blocarea este eliberată, configurați pachetele în așteptare și verificați dacă APT poate citi o stare consistentă a pachetului.
Confirmă că reparația a funcționat
Remedierea este completă atunci când comanda originală de instalare sau actualizare rulează fără eroarea de blocare, sudo dpkg --configure -ase închide fără o eroare de configurare în așteptare și sudo apt-get checknu raportează dependențe defecte. Dacă blocarea revine, înseamnă că un alt proces o achiziționează încă; identificați procesul respectiv înainte de a lua măsuri ulterioare.
Manualele Noble actuale ale Ubuntu descriu comenzile pachetului de mai sus. Sincronizarea exactă a serviciilor și numele proceselor variază în funcție de versiunea Ubuntu și de instrumentele pachetului desktop instalate, dar regula de bază rămâne aceeași: așteptați proprietarul blocării, apoi reparați dpkg dacă operațiunea anterioară a fost întreruptă.