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

Comment mettre à jour un seul package? Dans la mesure où man apt-get dire apt-get upgrade ne prend pas un paquet / liste de paquets comme paramètre:

mise

la mise à niveau est utilisée pour installer les versions les plus récentes de tous les packages actuellement installés sur le système à partir des sources énumérées dans /etc/apt/sources.list. Les packages actuellement installés avec de nouvelles versions disponibles sont récupérés et mis à niveau; en aucun cas, les packages actuellement installés ne sont supprimés ou les packages non déjà installés ne sont récupérés et installés. Les nouvelles versions des packages actuellement installés qui ne peuvent pas être mises à niveau sans modifier le statut d'installation d'un autre package resteront à leur version actuelle. Une mise à jour doit d'abord être effectuée pour qu'apt-get sache que de nouvelles versions de paquets sont disponibles.

Tu as juste besoin de faire apt-get install --only-upgrade <packagename>. Cela ne mettra à niveau que ce package unique, et uniquement s'il est installé.

Si vous souhaitez installer le package s'il n'existe pas, ou le mettre à niveau s'il existe, vous pouvez laisser de côté --only-upgrade.

Afin de mettre à jour un paquet simple utilisant le CLI:

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

par ex., sudo apt-get install --only-upgrade ack

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

Il y a deux façons possibles auxquelles je peux penser:

  1. sudo apt-get install nameofpackage

    Cela mettra à niveau le package même s'il est déjà installé:

    ~$ sudo apt-get install emeseneReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following packages will be upgraded:  emesene1 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. UtiliserSynaptic Package Manager: Clic droit→Marquer pour la mise à niveau:

    Note: Parfois, il peut demander des packages ou des dépendances supplémentaires, c'est normal.

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

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

De même, je ne voulais 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 installé PHP 5.3 et j'ai ajouté le PPA ondrej à mon apt.sources utilisant -

sudo add-apt-repository ppa:ondrej/php5

Si je cours

sudo apt-get install php5

il va juste réinstaller PHP 5.3.

Je dois d'abord déterminer le numéro de version vers lequel effectuer la mise à niveau, en utilisant

sudo apt-cache policy php5

Cela listera tous les numéros de version disponibles. Vous devez trouver le numéro de version vers lequel vous souhaitez effectuer la mise à 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~précis+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

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

Sur Ubuntu 9.04 Jaunty,

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

rendement:

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

Commande

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

ça a marché dans mon cas.

Pour une solution en 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 script, par ex.:

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

Pour mettre à niveau un seul paquet sur Ubuntu 18.04 LTS:

sudo apt update && sudo apt install --only-upgrade <packagename>

Pour mettre à niveau plusieurs packages:

sudo apt update && sudo apt install --only-upgrade <package1> <package2> <package3>