Πώς μπορώ να ενημερώσω ένα μεμονωμένο πακέτο; Σύμφωνα με το man apt-get
το apt-get upgrade
δεν δέχεται ένα πακέτο/μια λίστα πακέτων ως παράμετρο:
upgrade >, Η αναβάθμιση χρησιμοποιείται για την εγκατάσταση των νεότερων εκδόσεων όλων των πακέτων που είναι εγκατεστημένες αυτή τη στιγμή στο σύστημα από τις πηγές που απαριθμούνται στο
/etc/apt/sources.list
. Τα πακέτα που είναι εγκατεστημένα σήμερα με νέες διαθέσιμες εκδόσεις ανακτώνται και αναβαθμίζονται. αφαιρούνται τα τρέχοντα εγκατεστημένα πακέτα ή τα πακέτα που δεν έχουν ήδη εγκατεστημένα ανακτήθηκαν και εγκαταστάθηκαν. Νέες εκδόσεις των επί του παρόντος εγκατεστημένων πακέτα που δεν μπορούν να αναβαθμιστούν χωρίς να αλλάξει η κατάσταση εγκατάστασης ενός άλλου πακέτου θα παραμείνουν στην τρέχουσα έκδοσή τους. Μια ενημέρωση πρέπει να πραγματοποιηθεί πρώτα, έτσι ώστε το apt-get να γνωρίζει ότι οι νέες εκδόσεις των πακέτων είναι διαθέσιμες.
Απλά πρέπει να κάνετε apt-get install --only-upgrade <packagename>
. Αυτό θα αναβαθμίσει μόνο το συγκεκριμένο πακέτο, και μόνο αν είναι εγκατεστημένο.
Αν θέλετε να εγκαταστήσετε το πακέτο αν δεν υπάρχει, ή να το αναβαθμίσετε αν υπάρχει, μπορείτε να παραλείψετε το --only-upgrade
.
Υπάρχουν δύο πιθανοί τρόποι που μπορώ να σκεφτώ:
sudo apt-get install nameofpackage
Αυτό θα αναβαθμίσει το πακέτο ακόμα και αν είναι ήδη εγκατεστημένο:
~$ sudo apt-get install emesene
Ανάγνωση λιστών πακέτων... Έγινε
Δημιουργία δέντρου εξαρτήσεων
Ανάγνωση πληροφοριών κατάστασης... Έγινε
Τα ακόλουθα πακέτα θα αναβαθμιστούν:
emesene
1 αναβαθμισμένο, 0 πρόσφατα εγκατεστημένα, 0 προς αφαίρεση και 5 μη αναβαθμισμένα.
Πρέπει να λάβετε 1.486 kB αρχείων.
Μετά από αυτή την ενέργεια, θα απελευθερωθούν 696 kB χώρου στο δίσκο.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
Synaptic Package Manager
: Δεξί κλικ→Μαρκάρισμα για αναβάθμιση:Σημείωση: Μερικές φορές μπορεί να ζητάει επιπλέον πακέτα ή εξαρτήσεις, αυτό είναι φυσιολογικό.
Για μια λύση γραμμής εντολών που δεν εγκαθιστά το πακέτο αν δεν υπάρχει ήδη:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Αυτό μπορεί εύκολα να μετατραπεί σε ένα σενάριο, π.χ:
upgrade-package.sh:
#!/bin/bash
[[ -z $1 ]] && { echo "Usage: $(basename $0) package"; exit 1; }
if dpkg -s "$1" 2>/dev/null | grep -q Status.*installed; then
echo "Attempting to upgrade $1"
sudo apt-get install "$1"
else
echo "Package $1 is not installed"
fi