Αρκετά φορές, κατά την εγκατάσταση / ενημέρωση ενός πακέτου από τη γραμμή εντολών (χρησιμοποιώντας apt-get ή apt ) στο Ubuntu, έχουμε αυτό το σφάλμα: E: Δεν είναι δυνατό να κλειδώσετε τον κατάλογο διαχείρισης (/ var / lib / dpkg /) . Από την άποψη ενός αρχαρίου, είναι ένα πολύπλοκο σφάλμα, καθώς οι νέοι χρήστες δεν γνωρίζουν συνήθως τον κατάλογο "/ var / lib / dpkg /" και τι έχει να κάνει με την τρέχουσα λειτουργία που εκτελούν.

Τεχνικά, το σφάλμα ρίχνεται από το σύστημα σε πολλαπλά σενάρια και κάποιος θα πρέπει πραγματικά να φροντίσει για τον τρόπο με τον οποίο θα λύσει αυτό το πρόβλημα. Σε αυτό το άρθρο θα συζητήσουμε όλες αυτές τις πτυχές που σχετίζονται με αυτό το σφάλμα και πώς μπορείτε να το ξεφορτωθείτε με ασφάλεια.

Δεν είναι δυνατό να κλειδωθεί (/ var / lib / dpkg /) - διάγνωση του προβλήματος

Κάθε φορά που αντιμετωπίζετε αυτό το σφάλμα, το πρώτο βήμα θα πρέπει να είναι να διαβάσετε προσεκτικά την περιγραφή σφάλματος. Περιέχει συνήθως κάποιες βασικές και εξοικονόμηση χρόνου συμβουλές. Για παράδειγμα, τα ακόλουθα στιγμιότυπα οθόνης εμφανίζουν την εντολή "apt-get install", η οποία ρίχνει παρόμοια σφάλματα αναζήτησης.

Ωστόσο, αν κοιτάξετε πιο προσεκτικά, θα παρατηρήσετε ότι το κείμενο εντός αγκυλών στην πρώτη γραμμή και το κείμενο μετά το κόμμα στη δεύτερη γραμμή είναι διαφορετικά και στα δύο σενάρια, καθιστώντας σαφές ότι το σφάλμα στο πρώτο σενάριο έχει κάτι να να κάνετε με δικαιώματα χρηστών, ενώ στο δεύτερο σενάριο σχετίζεται με το προσωρινά μη διαθέσιμο αρχείο κλειδώματος.

Αν αντιμετωπίζετε ένα σφάλμα που σχετίζεται με δικαιώματα (όπως φαίνεται στην πρώτη εικόνα παραπάνω), είναι πιθανότερο επειδή ο χρήστης που χρησιμοποιεί την εντολή "apt-get" ή "apt" δεν διαθέτει επαρκή προνόμια και η εντολή εκτελέστηκε χωρίς sudo . Μόλις εκτελεστεί η εντολή με προνόμια root, το σφάλμα θα πάει μακριά.

Ωστόσο, εάν πρόκειται για σφάλμα που σχετίζεται με κλειδαριά, τότε απαιτείται περαιτέρω διερεύνηση.

Τι είναι / var / lib / dpkg /?

Το αρχείο "/ var / lib / dpkg /" μπορεί να θεωρηθεί ως ο κατάλογος εργασίας για τον φάκελο "dpkg", ο οποίος με τη σειρά του είναι ο μηχανισμός πίσω από τα εργαλεία "apt-get" . Κάθε φορά που χρησιμοποιείτε αυτά τα εργαλεία για να εγκαταστήσετε ή να αφαιρέσετε λογισμικό, κλειδώνουν τη βάση δεδομένων πακέτων (δημιουργώντας ένα αρχείο "κλειδώματος") πριν εκτελέσετε την πραγματική λειτουργία, κάτι που πραγματικά γίνεται κάνοντας το κλείδωμα για το "/ var / lib / dpkg / " Ευρετήριο. Αυτό το βήμα βοηθά στην αποφυγή καταστροφής δεδομένων ή διακοπής μιας τρέχουσας λειτουργίας που εκτελείται από κάποια άλλη διαδικασία.

Αν υποθέσουμε ότι έχετε κατανοήσει την παραπάνω εξήγηση, ας συζητήσουμε τώρα τα βήματα της έρευνας.

Βήμα 1: Δείτε αν υπάρχει κάποια άλλη διαδικασία που κρατάει την κλειδαριά

Αυτό θα πρέπει τώρα να φαίνεται λογικό, σωστά; Και για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε τη βοήθεια της καλής παλιάς εντολής ps και να διοχετεύσετε την έξοδο της στην εντολή grep, ώστε να ξοδεύετε λιγότερο χρόνο ψάχνοντας για αυτό που θέλετε. Παραδείγματος χάριν, εδώ είναι μια εντολή που σας επιτρέπει να βρείτε εάν έχει ήδη εκτελείται οποιαδήποτε διαδικασία "apt", "apt-get" ή "aptitude":

 ps aux | grep apt 

Βήμα 2: Περιμένετε λίγο και στη συνέχεια να ενεργήσετε

Αν πράγματι υπάρχει μια εντολή που έχει ήδη αποκτήσει την κλειδαριά, θα πρέπει ιδανικά να περιμένετε να ολοκληρωθεί και να απελευθερωθεί η κλειδαριά. Ωστόσο, εάν η εντολή λαμβάνει περισσότερο από τον αναμενόμενο χρόνο και είστε βέβαιοι ότι έχει κολλήσει κάπου, μπορείτε να προχωρήσετε και να την σκοτώσετε χρησιμοποιώντας τις διαθέσιμες εντολές kill ή killall (περισσότερες πληροφορίες για αυτές εδώ). Αυτό θα λύσει το πρόβλημα που αντιμετωπίζετε.

Ένα πράγμα που αξίζει να αναφερθεί εδώ είναι ότι η άμεση θανάτωση μιας διαδικασίας "dpkg" δεν συνιστάται ποτέ - μπορεί να καταστρέψει τη βάση δεδομένων πακέτων. Υπογραμμίζω αυτό το σημείο γιατί τώρα γνωρίζετε ότι εργαλεία όπως "apt" και "apt-get" επικαλούνται εσωτερικά το "dpkg", οπότε είναι πολύ πιθανό να σκεφτείτε τη θανάτωση της διαδικασίας "dpkg" αν το εντοπίσετε στο "ps "Εξόδου εντολών.

Οι διαδικασίες θανάτωσης που ξεκινούν με την εκτέλεση εντολών apt, apt-get ή aptitude γενικά είναι πολύ πιο ασφαλείς.

Βήμα 3: Όταν η έξοδος εντολών "ps" δεν βοηθήσει

Λάβετε υπόψη ότι εκτός από εργαλεία γραμμής εντολών όπως apt και apt-get, ορισμένες εφαρμογές που βασίζονται σε GUI, όπως το Κέντρο Λογισμικού ή το Update Manager, αποκτούν επίσης αυτό το κλείδωμα.

Σημείωση : εάν λαμβάνετε το σφάλμα που σχετίζεται με κλειδαριά αμέσως μετά την εκκίνηση στο Ubuntu, είναι πολύ πιθανό η λειτουργία σας να επικαλύπτεται με την αυτόματη ψηφοφορία που ξεκίνησε από τον διαχειριστή ενημερώσεων. Η αναμονή λίγο θα πρέπει να λύσει το πρόβλημα στην περίπτωση αυτή.

Επιστρέφοντας στις εφαρμογές που βασίζονται σε GUI για τις οποίες μιλούσαμε, μια άλλη χρήσιμη και εξοικονόμηση χρόνου είναι να χρησιμοποιήσετε την εντολή fuser .

Με το "fuser" πρέπει να γνωρίζετε μόνο το αρχείο στο οποίο έχετε πρόσβαση ("/ var / lib / dpkg / lock" στην περίπτωση μας) και μπορείτε να σκοτώσετε τη διαδικασία πρόσβασης στο συγκεκριμένο αρχείο ακόμα και αν δεν ξέρετε ποια διαδικασία είναι. Για παράδειγμα:

 sudo fuser -cuk / var / lib / dpkg / κλειδώματος 

Λάβετε υπόψη ότι η εντολή fuser δεν θα απελευθερώσει την κλειδαριά που αποκτήθηκε από τη διαδικασία που μόλις σκοτώσατε, οπότε θα πρέπει να το κάνετε αυτό χειροκίνητα:

 sudo rm -f / var / lib / dpkg / κλειδώματος 

Σημείωση : για να " απελευθερώσετε την κλειδαριά " σημαίνει απλά να διαγράψετε το αρχείο "κλειδώματος", έτσι ώστε άλλες διαδικασίες να " αποκτήσουν την κλειδαριά " αναδημιουργώντας την.

Μπορεί επίσης να χρειαστεί να εκτελέσετε τις ακόλουθες δύο εντολές:

 sudo fuser -cuk / var / cache / apt / αρχεία / κλείδωμα; sudo rm -f / var / cache / apt / αρχεία / κλείδωμα 

Σημαντική συμβουλή : ποτέ να μην διαγράψετε ποτέ τα αρχεία κλειδώματος ως πρώτο βήμα - αυτό θα πρέπει να είναι μόνο η τελευταία λύση.

συμπέρασμα

Σε γενικές γραμμές, είναι πάντα καλό να κατανοούμε τον λόγο πίσω από το πρόβλημα προτού να προχωρήσουμε και να το λύσουμε. Οι τυφλά προσπαθώντας λύσεις για την επίλυση ενός προβλήματος δεν θα σας βοηθήσουν ποτέ - μπορεί να πετύχετε σε μερικές περιπτώσεις, αλλά πιο συχνά θα βρείτε έναν ακόμα μεγαλύτερο χάος, ειδικά αν το λειτουργικό σύστημα είναι το Linux.

Έχετε αντιμετωπίσει ποτέ το λάθος που συζητήσαμε εδώ; Πώς το διαλέξατε; Αφήστε την απάντησή σας στα σχόλια.