web-dev-qa-db-fra.com

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

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.

788
lurscher

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.

988
Josh

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.
122
Ian

Je peux penser à deux façons:

  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. UsingSynaptic Package Manager: clic droit → Marquer pour la mise à nivea:

    enter image description here

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

52
Binarylife

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!

24
chopsuei3

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.

15
golem

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
10
Shane