Come faccio ad aggiornare un singolo pacchetto? Per quanto riguarda man apt-get
dice che apt-get upgrade
non prende un pacchetto/lista di pacchetti come parametro:
upgrade
upgrade è usato per installare le versioni più recenti di tutti i pacchetti attualmente installati sul sistema dalle fonti enumerate in
/etc/apt/sources.list
. I pacchetti attualmente installati con nuove versioni disponibili sono recuperati e aggiornati; in nessun caso vengono rimossi i pacchetti attualmente installati, o i pacchetti non ancora installati recuperati e installati. Le nuove versioni dei pacchetti attualmente installati pacchetti che non possono essere aggiornati senza cambiare lo stato di installazione di un altro pacchetto saranno lasciate alla loro versione corrente. Un aggiornamento deve essere eseguito prima in modo che apt-get sappia che nuove versioni di sono disponibili.
Devi solo fare apt-get install --only-upgrade <packagename>
. Questo aggiornerà solo quel singolo pacchetto, e solo se è installato.
Se si desidera installare il pacchetto se non esiste, o aggiornarlo se esiste, si può omettere --only-upgrade
.
Ci sono due modi possibili a cui posso pensare:
sudo apt-get install nameofpackage
Questo aggiornerà il pacchetto anche se è già installato:
~$ sudo apt-get install emesene
Lettura delle liste dei pacchetti... Fatto
Costruire l'albero delle dipendenze
Lettura delle informazioni sullo stato... Fatto
I seguenti pacchetti saranno aggiornati:
emesene
1 aggiornato, 0 appena installato, 0 da rimuovere e 5 non aggiornati.
È necessario ottenere 1.486 kB di archivi.
Dopo questa operazione, 696 kB di spazio su disco saranno liberati.
Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
Synaptic Package Manager
: Fare clic con il tasto destro del mouse→Segnalare per l'aggiornamento:Nota: A volte può chiedere ulteriori pacchetti o dipendenze, è normale.
Per una soluzione a riga di comando che non installa il pacchetto se non esiste già:
dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>
Questo può essere facilmente trasformato in uno script, ad es:
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