Domanda Come aggiornare un singolo pacchetto usando apt-get?


Come aggiorno un singolo pacchetto? Fino a man apt-get dice apt-get upgrade non accetta un pacchetto / elenco di pacchetti come parametro:

aggiornamento

l'aggiornamento viene utilizzato per installare le versioni più recenti di tutti i pacchetti   attualmente installato sul sistema dalle fonti enumerate in    /etc/apt/sources.list. Pacchetti attualmente installati con nuovi   le versioni disponibili sono recuperate e aggiornate; in nessuna circostanza   vengono attualmente rimossi i pacchetti installati oi pacchetti non sono già stati installati   installato recuperato e installato. Nuove versioni di attualmente installate   pacchetti che non possono essere aggiornati senza modificare lo stato dell'installazione   di un altro pacchetto rimarrà nella versione attuale. Un aggiornamento   deve essere eseguito prima in modo che apt-get sappia che le nuove versioni di   i pacchetti sono disponibili.


714
2018-05-20 16:36


origine




risposte:


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 lo fa, si può lasciare fuori --only-upgrade.


901
2018-05-20 16:41



@Raphink: il tuo commento sull'aggiornamento è corretto, ma l'installazione è considerata equivalente all'aggiornamento di un pacchetto; install is followed **by one** or more packages desired for installation or upgrading , Se hai una risposta migliore, puoi rispondere alla domanda. Sarebbe fantastico. - Binarylife
apt-get install --only-upgrade <packagename> non installerà nuovi pacchetti - taneli
Sarà il install comando aggiorna anche le dipendenze di quel singolo pacchetto se necessario? - Pino
@Pino Lo farà, ha senso farlo. Cosa succede se la versione che si sta aggiornando dipende da una versione più recente di un altro pacchetto? Tieni a calci se non aggiorni entrambi. Ecco perché installè il comando giusto per questo, anche se sembra contro-intuitivo. - Matt Dodge
Rimuove il segno "auto"? A volte quando si installano le librerie in modo specifico il pacchetto viene contrassegnato come installato manualmente. Non mi piace eseguire 'install' nelle librerie per questo motivo. - isaaclw


Per aggiornare un singolo pacchetto utilizzando la CLI:

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.

116
2017-10-15 11:22



Ottengo un errore con questo comando: E: Sense only is not understood, try true or false. - Michael
Per coloro che incontrano l'errore del commentatore precedente, vedere la mia risposta qui sotto. - golem
downvoted in quanto non ha aggiunto nuove informazioni dalle risposte precedenti - gokul_uf
Dovresti passare --only-upgrade a install sottocomando, non direttamente a apt-get, quindi non dovrai aggiungere true. - Ruslan


Ci sono due modi possibili a cui posso pensare:

  1. sudo apt-get install nameofpackage

    Questo 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. utilizzandoSynaptic Package Manager: Fare clic con il pulsante destro del mouse → Seleziona per l'aggiornamento:

    enter image description here

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


48
2018-05-20 16:39



Sì, dovrebbe, e sudo apt-get install whatever dovrebbe fare l'aggiornamento da solo. - Binarylife
upgrade non accetta un argomento di pacchetto. - ℝaphink
Bene, grazie, aggiorna tutti i pacchetti. - Binarylife


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

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

Analogamente, non volevo eseguire il comando di aggiornamento, che aggiornerebbe tutti i pacchetti sul mio server -

sudo apt-get dist-upgrade

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

sudo add-apt-repository ppa:ondrej/php5

Se corro

sudo apt-get install php5

sarà solo reinstallare PHP 5.3.

Devo, prima, determinare il numero di versione da aggiornare, usando

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 che fa riferimento a esso. 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

Ho solo aggiunto questo perché non sono riuscito a trovare queste informazioni da nessun'altra parte!


22
2017-09-18 16:14





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.


15
2018-04-13 18:21



Dovresti passare --only-upgrade a install sottocomando, non direttamente a apt-get, quindi non dovrai aggiungere true. - Ruslan


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

9
2018-05-22 07:58