Comment mettre à jour un seul paquet? Pour autant que man apt-get
indique apt-get upgrade
ne prend pas un paquet/liste de paquets comme paramètre:
mise à nivea
la mise à niveau est utilisée pour installer les dernières versions 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 les 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 des paquets sont disponibles.
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 paquet s'il n'existe pas ou le mettre à niveau s'il le fait, vous pouvez laisser --only-upgrade
.
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.
Je peux penser à deux façons:
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]
UsingSynaptic Package Manager
: clic droit → Marquer pour la mise à nivea:
Note: Parfois, il peut demander des paquets supplémentaires ou des dépendances, c'est normal.
D'après mon expérience sur Ubuntu 12.04 LTS, utiliser 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 voulais pas exécuter la commande upgrade, qui mettrait à jour tous les paquets sur mon serveur -
Sudo apt-get dist-upgrade
Par exemple, j’ai installé PHP 5.3 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 ne fera que réinstaller PHP 5.3.
Je dois d’abord déterminer le numéro de version à utiliser, en utilisant
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
J'ai seulement ajouté ceci parce que je ne pouvais pas trouver cette information ailleurs!
Sur Ubuntu 9.04 Jaunty,
apt-get --only-upgrade install <package>
rendements:
E: Sense only is not understood, try true or false.
La commande
apt-get --only-upgrade true install <package>
travaillé dans mon cas.
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 script, par exemple:
pgrade-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