Comment mettre à jour un seul paquet en utilisant apt-get?

742

Comment mettre à jour un seul paquet? Pour autant que man apt-get dit que apt-get upgrade ne prend pas un paquet / liste de paquets en paramètre:

upgrade

upgrade is used to install the newest versions of all packages currently installed on the system from the sources enumerated in /etc/apt/sources.list. Packages currently installed with new versions available are retrieved and upgraded; under no circumstances are currently installed packages removed, or packages not already installed retrieved and installed. New versions of currently installed packages that cannot be upgraded without changing the install status of another package will be left at their current version. An update must be performed first so that apt-get knows that new versions of packages are available.

    
posée lurscher 20.05.2011 - 18:36
la source

6 réponses

930

Vous devez juste faire apt-get install --only-upgrade <packagename> . Cela ne mettra à jour que ce seul paquet, et seulement s'il est installé.

Si vous souhaitez installer le package s'il n'existe pas ou le mettre à niveau si tel est le cas, vous pouvez omettre --only-upgrade .

    
réponse donnée Josh 20.05.2011 - 18:41
la source
120

Pour mettre à jour un seul package à l'aide de la CLI:

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

Par exemple, 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.
    
réponse donnée Ian 15.10.2012 - 13:22
la source
50

Il y a deux façons dont je peux penser:

  1. sudo apt-get install nameofpackage

    Ceci mettra à jour le paquet même s'il est déjà installé:

    ~$ 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. Utilisation de Synaptic Package Manager : Cliquez avec le bouton droit de la souris → Marquer pour la mise à niveau :

    Remarque : il est parfois normal de demander des packages ou des dépendances supplémentaires, cela est normal.

réponse donnée Binarylife 20.05.2011 - 18:39
la source
22

D'après mon expérience sur Ubuntu 12.04 LTS, l'utilisation de la commande ci-dessous ne mettra pas à jour le paquet si vous utilisez un PPA séparé -

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

De même, je ne souhaitais pas exécuter la commande de mise à niveau, qui mettrait à niveau tous les packages sur mon serveur -

sudo apt-get dist-upgrade

Par exemple, j'ai PHP 5.3 installé et j'ai ajouté le PPA ondrej à mes apt.sources en utilisant -

sudo add-apt-repository ppa:ondrej/php5

Si je cours

sudo apt-get install php5

il va simplement réinstaller PHP 5.3.

Je dois d’abord déterminer le numéro de version vers lequel effectuer la mise à niveau, à l’aide de

.
sudo apt-cache policy php5

Ceci listera tous les numéros de version disponibles. Vous devriez trouver le numéro de version que vous souhaitez mettre à niveau, puis copier la chaîne entière qui y fait référence. Par exemple, la chaîne pour PHP 5.5 sur Ubuntu est "5.5.16 + dfsg-1 + deb.sury.org ~ precise + 2".

Maintenant, vous pouvez exécuter la commande apt-get install avec le numéro de version spécifique, et le tour est joué!

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

Je n'ai ajouté ceci que parce que je n'ai pas pu trouver cette information ailleurs!

    
réponse donnée chopsuei3 18.09.2014 - 18:14
la source
15

Sur Ubuntu 9.04 Oui,

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

donne:

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

La commande

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

a travaillé dans mon cas.

    
réponse donnée golem 13.04.2015 - 20:21
la source
9

Pour une solution de ligne de commande qui n'installe pas le package s'il n'existe pas déjà:

dpkg -s <package> 2>/dev/null | grep -q Status.*installed && sudo apt-get install <package>

Cela peut facilement être transformé en un script, par exemple:

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
    
réponse donnée Shane 22.05.2012 - 09:58
la source

Lire d'autres questions sur les étiquettes