Μόλις πρόσθεσα ένα αποθετήριο PPA για την έκδοση ανάπτυξης του GIMP, αλλά λαμβάνω αυτό το σφάλμα:
$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
gimp gimp-data libgegl-0.0-0 libgimp2.0
Γιατί και πώς μπορώ να το λύσω ώστε να μπορώ να χρησιμοποιήσω την τελευταία έκδοση αντί για αυτή που έχω τώρα;
Σύμφωνα με ένα άρθρο στο debian-administration.org,
Αν οι εξαρτήσεις έχουν αλλάξει σε ένα από τα πακέτα που έχετε εγκαταστήσει, έτσι ώστε να πρέπει να εγκατασταθεί ένα νέο πακέτο για να γίνει η αναβάθμιση, τότε αυτό θα αναφέρεται ως "kept-back".
Προσεκτική λύση 1:
Σύμφωνα με την απάντηση του Pablo's, μπορείτε να εκτελέσετε το sudo apt-get --with-new-pkgs upgrade
, και θα εγκαταστήσει τα πακέτα που κρατήθηκαν πίσω.
Αυτό έχει το πλεονέκτημα ότι τα πακέτα που κρατήθηκαν πίσω δεν χαρακτηρίζονται ως "χειροκίνητα εγκατεστημένα," που θα μπορούσε να αναγκάσει περισσότερη παρέμβαση του χρήστη στη συνέχεια (βλ. σχόλια).
Αν η λύση του Pablo σας βολεύει, παρακαλώ δώστε της ένα upvote. Εάν όχι, παρακαλούμε σχολιάστε τι πήγε στραβά.
Προσεκτική λύση 2:
Η προσεκτική λύση είναι να εκτελέσετε το sudo apt-get install <list of packages kept back>
. Στις περισσότερες περιπτώσεις αυτό θα δώσει στα πακέτα που κρατήθηκαν πίσω ό,τι χρειάζονται για την επιτυχή αναβάθμιση.
Επιθετική λύση:
Μια πιο επιθετική λύση είναι να εκτελέσετε το sudo apt-get dist-upgrade
, το οποίο θα εξαναγκάσει την εγκατάσταση αυτών των νέων εξαρτήσεων.
Αλλά το dist-upgrade
μπορεί να είναι αρκετά επικίνδυνο. Σε αντίθεση με την αναβάθμιση μπορεί να αφαιρέσει πακέτα για να επιλύσει πολύπλοκες καταστάσεις εξαρτήσεων. Σε αντίθεση με εσάς, το APT δεν είναι πάντα αρκετά έξυπνο ώστε να γνωρίζει αν αυτές οι προσθήκες και οι αφαιρέσεις θα μπορούσαν να προκαλέσουν χάος.
Έτσι, αν βρεθείτε σε μια θέση όπου η "προσεκτική λύση" δεν λειτουργεί, το dist-upgrade
μπορεί να λειτουργήσει... αλλά μάλλον είναι καλύτερα να μάθετε λίγα περισσότερα για το APT και να επιλύσετε τα θέματα εξαρτήσεων "με το χέρι" εγκαθιστώντας και αφαιρώντας πακέτα κατά περίπτωση.
Σκεφτείτε το σαν να φτιάχνετε ένα αυτοκίνητο... αν έχετε χρόνο και είστε επιδέξιοι με το κλειδί, θα έχετε κάποια ηρεμία διαβάζοντας και κάνοντας την επισκευή μόνοι σας. Αν αισθάνεστε τυχεροί, μπορείτε να αφήσετε το αυτοκίνητό σας στην ξαδέρφη σας dist-upgrade
και να ελπίζετε ότι ξέρει τη δουλειά της.
Συνήθως υπάρχουν δύο λόγοι για τους οποίους μπορεί να δείτε αυτό το μήνυμα.
Αν η αναβάθμιση του προγράμματος (μέσω του sudo apt-get upgrade
) θα προκαλέσει την προσθήκη ή αφαίρεση πακέτων, τότε το πρόγραμμα θα καθυστερήσει. Μπορείτε να χρησιμοποιήσετε το sudo apt-get dist-upgrade
σε αυτή την περίπτωση, το οποίο στη συνέχεια θα προσφερθεί να προσθέσει ή να αφαιρέσει τα πρόσθετα προγράμματα.
Αυτό είναι αρκετά συνηθισμένο και συνήθως δεν αποτελεί πρόβλημα. Περιστασιακά (ιδιαίτερα κατά τη διάρκεια ενός Ubuntu alpha) ένα dist-upgrade
θα προσφερθεί να αφαιρέσει πολλά άλλα προγράμματα, οπότε μάλλον θα πρέπει να το ακυρώσετε.
Αν το πρόγραμμα εξαρτάται από πακέτα ή εκδόσεις που δεν είναι διαθέσιμες, τότε το πρόγραμμα θα καθυστερήσει. Πραγματικά δεν μπορείτε να κάνετε τίποτα άλλο από το να περιμένετε σε αυτή την περίπτωση, αφού το πακέτο είναι ουσιαστικά απεγκαταστάσιμο. Αυτό μπορεί να συμβεί όταν τα πακέτα προστίθενται στο αποθετήριο εκτός σειράς, όταν ένα πακέτο μετονομάζεται ή όταν ένα πακέτο παύει να παρέχει ένα εικονικό πακέτο.
Πιθανότατα αυτά τα πακέτα παραμένουν πίσω επειδή η εγκατάστασή τους θα δημιουργούσε ασυνέπειες εξαρτήσεων. Αυτό μπορεί να συμβεί είτε επειδή χρησιμοποιείτε αρχεία υπό ενεργή ανάπτυξη, ppas, είτε επειδή ο καθρέφτης που χρησιμοποιείτε δεν είναι πλήρως ενημερωμένος.
Στην τελευταία περίπτωση, απλά περιμένετε, όταν επιλυθούν οι εξαρτήσεις θα εγκατασταθούν την επόμενη φορά.
Επεξεργασία:
Υπάρχει και μια άλλη πιθανότητα, τα πακέτα μπορεί να καθυστερήσουν αν υπάρχει μια αναμονή σε αυτά, ή αν είναι καρφιτσωμένα.