Come aggiornare un singolo pacchetto usando apt-get?


827

Come aggiorno un singolo pacchetto? Per quanto si man apt-getdice apt-get upgradenon accetta un pacchetto / elenco di pacchetti come parametro:

aggiornamento

L'aggiornamento viene utilizzato per installare le versioni più recenti di tutti i pacchetti attualmente installati sul sistema dalle fonti elencate in /etc/apt/sources.list. I pacchetti attualmente installati con le nuove versioni disponibili vengono recuperati e aggiornati; in nessun caso vengono attualmente rimossi i pacchetti installati, oppure i pacchetti non già installati vengono recuperati e installati. Le nuove versioni dei pacchetti attualmente installati che non possono essere aggiornati senza modificare lo stato di installazione di un altro pacchetto verranno lasciate alla loro versione corrente. È necessario prima eseguire un aggiornamento in modo tale che apt-get sappia che sono disponibili nuove versioni dei pacchetti.

Risposte:


1027

Devi solo fare apt-get install --only-upgrade <packagename>. Questo aggiornerà solo quel singolo pacchetto, e solo se è installato.

Se desideri installare il pacchetto se non esiste, o aggiornarlo se lo fa, potresti lasciarlo fuori --only-upgrade.


88
apt-get install --only-upgrade <packagename>non installerà alcun nuovo pacchetto
taneli,

9
Il installcomando aggiornerà anche le dipendenze di quel singolo pacchetto, se necessario?
Pino,

7
@Pino Lo sarà, ha senso farlo. Cosa succede se la versione a cui si sta eseguendo l'aggiornamento dipende da una versione più recente di un altro pacchetto? Ti perdi se non aggiorni entrambi. Ecco perché installè il comando giusto per questo, anche se sembra controintuitivo.
Matt Dodge,

6
Questo rimuove il segno "auto"? A volte, quando si installano librerie in modo specifico, il pacchetto viene contrassegnato come installato manualmente. Non mi piace eseguire 'installa' sulle librerie per questo motivo.
Isaaclw,

3
Ho appena testato, poiché tutte le informazioni sono piuttosto vaghe; su Ubuntu 16.04 ( apt 1.0.1), l'aggiornamento di un pacchetto usando apt installnon influenza il autosegno, sia che --only-upgradesia fornito o meno. Anche se ovviamente è --only-upgradelogico se non si desidera installare accidentalmente qualcosa di nuovo. Aggiornerà anche tutte le dipendenze richieste .
raddoppiato il

129

Per aggiornare un singolo pacchetto utilizzando l'interfaccia della riga di comando:

sudo apt-get install --only-upgrade <packagename>

per esempio, sudo apt-get install --only-upgrade ack

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Skipping **ack**, it is not installed and only upgrades are requested.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

11
Ottengo un errore con questo comando:E: Sense only is not understood, try true or false.
Michael,

1
Per coloro che riscontrano l'errore del commentatore precedente, vedere la mia risposta di seguito .
Golem,

3
ridimensionato in quanto non ha aggiunto nuove informazioni dalle risposte precedenti
gokul_uf

1
Dovresti passare --only-upgradeal installsottocomando, non direttamente a apt-get, quindi non dovrai aggiungere true.
Ruslan,

55

Ci sono due modi possibili a cui posso pensare:

  1. sudo apt-get install nameofpackage

    Ciò aggiornerà il pacchetto anche se è già installato:

    ~$ sudo apt-get install emesene
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following packages will be upgraded:
      emesene
    1 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.
    Need to get 1,486 kB of archives.
    After this operation, 696 kB disk space will be freed.
    Get:1 http://il.archive.ubuntu.com/ubuntu/ natty-updates/universe emesene all 2.11.4+dfsg-0ubuntu1 [1,486 kB]
    
  2. Utilizzo Synaptic Package Manager: tasto destro → Seleziona per l'aggiornamento :

    inserisci qui la descrizione dell'immagine

    Nota : a volte può richiedere pacchetti aggiuntivi o dipendenze, è normale.


1
Sì, dovrebbe e sudo apt-get install whateverdovrebbe fare l'aggiornamento da solo.
Binarylife

4
upgradenon accetta un argomento pacchetto.
inkaphink

25

Nella mia esperienza su Ubuntu 12.04 LTS, l'utilizzo del comando seguente non aggiorna il pacchetto se si utilizza un PPA separato -

sudo apt-get --only-upgrade install <packagename>

Allo stesso modo, non volevo eseguire il comando upgrade, che avrebbe aggiornato tutti i pacchetti sul mio server -

sudo apt-get dist-upgrade

Ad esempio, ho installato PHP 5.3 e ho aggiunto ondrej PPA al mio apt.sources usando -

sudo add-apt-repository ppa:ondrej/php5

Se corro

sudo apt-get install php5

reinstallerà semplicemente PHP 5.3.

Devo, innanzitutto, determinare il numero di versione da aggiornare, utilizzando

sudo apt-cache policy php5

Questo elencherà tutti i numeri di versione disponibili. Dovresti trovare il numero di versione che desideri aggiornare e quindi copiare l'intera stringa a cui fa riferimento. Ad esempio, la stringa per PHP 5.5 su Ubuntu è "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2".

Ora puoi eseguire il comando apt-get install con il numero di versione specifico e voilà!

sudo apt-get install php5=5.5.16+dfsg-1+deb.sury.org~precise+2

L'ho aggiunto solo perché non sono riuscito a trovare queste informazioni altrove!


16

Su Ubuntu 9.04 Jaunty,

apt-get --only-upgrade install <package>

rendimenti:

E: Sense only is not understood, try true or false.

Il comando

apt-get --only-upgrade true install <package>

ha funzionato nel mio caso.


4
Dovresti passare --only-upgradeal installsottocomando, non direttamente a apt-get, quindi non dovrai aggiungere true.
Ruslan,

10

Per una soluzione da 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 esempio:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.