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


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

améliorer

mise à niveau est utilisé pour installer les dernières versions de tous les packages   actuellement installé sur le système à partir des sources énumérées dans    /etc/apt/sources.list. Packages actuellement installés avec nouveau   les versions disponibles sont récupérées et mises à niveau; en aucun cas   Les packages actuellement installés ont-ils été supprimés ou les packages ne sont-ils pas déjà installés?   installé récupéré et installé. Nouvelles versions de actuellement installées   packages qui ne peuvent pas être mis à niveau sans modifier le statut de l'installation   d'un autre paquet sera laissé à leur version actuelle. Une mise à jour   doit être effectué en premier pour que apt-get sache que les nouvelles versions de   les forfaits sont disponibles.


714
2018-05-20 16:36


origine




Réponses:


Vous avez juste besoin de faire apt-get install --only-upgrade <packagename>. Cela mettra à niveau uniquement ce seul package, et seulement s'il est installé.

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


901
2018-05-20 16:41



@Raphink: Votre commentaire à propos de la mise à niveau est correct, mais l'installation est considérée comme équivalente à la mise à niveau d'un package; install is followed **by one** or more packages desired for installation or upgrading Si vous avez une meilleure réponse, vous pouvez répondre à la question. Ce serait génial. - Binarylife
apt-get install --only-upgrade <packagename> ne pas installer de nouveaux paquets - taneli
Sera le install commande mettre à niveau aussi les dépendances de ce paquet si nécessaire? - Pino
@Pino Ca va, il est logique de le faire. Que faire si la version que vous mettez à niveau dépend d'une version plus récente d'un autre package? Vous êtes arrosé si vous ne mettez pas à niveau les deux. C'est pourquoi installest la bonne commande pour cela, même si cela semble contre-intuitif. - Matt Dodge
Est-ce que cela enlève la marque "auto"? Parfois, lorsque vous installez des bibliothèques, le package est marqué comme installé manuellement. Je n'aime pas lancer 'install' sur les bibliothèques pour cette raison. - isaaclw


Afin de 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.

116
2017-10-15 11:22



J'ai une erreur avec cette commande: E: Sense only is not understood, try true or false. - Michael
Pour ceux qui rencontrent l'erreur du commentateur précédent, voir ma réponse ci-dessous. - golem
abaissé car il n'a pas ajouté de nouvelles informations des réponses précédentes - gokul_uf
Tu devrais passer --only-upgrade à install sous-commande, pas directement à apt-get, alors vous n'aurez pas à ajouter true. - Ruslan


Il y a deux façons possibles de penser à:

  1. sudo apt-get install nameofpackage

    Cela 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. En utilisantSynaptic Package Manager: Clic droit → Marquer pour la mise à niveau:

    enter image description here

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


48
2018-05-20 16:39



Oui, ça devrait et sudo apt-get install whatever devrait faire la mise à jour par lui-même. - Binarylife
upgrade ne prend pas d'argument de package. - ℝaphink
Bien, merci, il met à jour tous les paquets. - Binarylife


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

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

De même, je ne voulais pas exécuter la commande de mise à niveau, 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 à mon apt.sources en utilisant -

sudo add-apt-repository ppa:ondrej/php5

Si je cours

sudo apt-get install php5

il suffit de réinstaller PHP 5.3.

Je dois d'abord déterminer le numéro de version à mettre à 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 que vous souhaitez mettre à niveau, puis copier la chaîne entière qui le 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 d'installation apt-get 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é cela parce que je n'ai pas pu trouver cette information ailleurs!


22
2017-09-18 16:14





Sur Ubuntu 9.04 Jaunty,

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>

travaillé dans mon cas.


15
2018-04-13 18:21



Tu devrais passer --only-upgrade à install sous-commande, pas directement à apt-get, alors vous n'aurez pas à ajouter true. - Ruslan


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

9
2018-05-22 07:58