1004 votes

Comment mettre à niveau un seul package en utilisant apt-get ?

Comment puis-je mettre à jour un seul package? Autant que man apt-get dit que apt-get upgrade ne prend pas de package/liste de packages comme paramètre :

upgrade

upgrade est utilisé 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 à jour ; en aucun cas, les packages actuellement installés ne sont supprimés, ou les packages non encore installés ne sont récupérés et installés. Les nouvelles versions de packages actuellement installés qui ne peuvent pas être mises à jour sans changer le statut d'installation d'un autre package seront laissées à leur version actuelle. Une mise à jour doit être effectuée d'abord afin que apt-get sache que de nouvelles versions de packages sont disponibles.

1255voto

eibrahim Points 1500

Vous avez juste besoin de faire apt-get install --only-upgrade . 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 à jour s'il existe, vous pouvez omettre --only-upgrade.

2 votes

@Raphink : Votre commentaire concernant la mise à niveau est juste, mais l'installation est considérée comme un équivalent de la mise à niveau d'un package; install est suivi **d'un ou** de plusieurs packages souhaités pour l'installation ou la mise à niveau , Si vous avez une meilleure réponse, vous pouvez répondre à la question. Ce serait génial.

98 votes

apt-get install --only-upgrade ne installera aucun nouveau paquet

12 votes

Le install command mettra également à jour les dépendances de ce package individuel si nécessaire ?

149voto

Ian Points 1507

Pour mettre à jour un seul paquet en utilisant l'interface de ligne de commande :

sudo apt-get install --only-upgrade 

par exemple, sudo apt-get install --only-upgrade ack

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
Le paquet **ack** est ignoré, il n'est pas installé et seules les mises à jour sont demandées.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

12 votes

Je reçois une erreur avec cette commande: E: Sens seul n'est pas compris, essayez true ou false.

1 votes

Pour ceux qui rencontrent l'erreur du commentateur précédent, consultez ma réponse ci-dessous.

4 votes

Downvoted car il n'a pas ajouté de nouvelles informations des réponses précédentes

66voto

Peeja Points 2406

Il existe deux façons possibles que je peux penser :

  1. sudo apt-get install nomdupaquet

    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. Utiliser Gestionnaire de packages Synaptic : Cliquez avec le bouton droit et Marquez pour mise à niveau :

    entrer la description de l'image ici

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

1 votes

Oui, c'est ça, et sudo apt-get install whatever devrait se mettre à jour tout seul.

4 votes

upgrade ne prend pas un argument de package.

0 votes

sudo apt-get install nameofpackage va mettre à jour le package, mais également le définir comme "installé manuellement" au cas où il aurait été installé uniquement en tant que dépendance. Ce n'est pas toujours souhaitable, car cela limite l'utilité de sudo apt autoremove plus tard.

29voto

Patrick Points 426

Dans mon expérience sur Ubuntu 12.04 LTS, l'utilisation de la commande ci-dessous ne mettra pas à jour le paquet si une PPA séparée est utilisée -

sudo apt-get --only-upgrade install 

De la même manière, 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 PHP 5.3 installé et j'ai ajouté le PPA ondrej à mes sources apt en utilisant -

sudo add-apt-repository ppa:ondrej/php5

Si j'exécute

sudo apt-get install php5

cela réinstallera simplement PHP 5.3.

Je dois d'abord déterminer le numéro de version auquel je veux mettre à jour, en utilisant

sudo apt-cache policy php5

Cela affichera tous les numéros de version disponibles. Vous devriez trouver le numéro de version auquel vous souhaitez mettre à jour, puis copier la chaîne complète qui le réfère. 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 voilà !

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

J'ai ajouté ceci car je n'ai pas réussi à trouver cette information ailleurs !

0 votes

Je suppose que ceci est évident pour certains, mais si la commande apt-get install ci-dessus échoue avec un message tel que Impossible de récupérer certains fichiers, vous devrez peut-être exécuter d'abord apt update, puis relancer apt-cache policy pour identifier la bonne version de la dernière commande install.

17voto

golem Points 271

Sous Ubuntu 9.04 Jaunty,

apt-get --only-upgrade install 

donne :

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

La commande

apt-get --only-upgrade true install 

a fonctionné dans mon cas.

9 votes

Vous devez passer --only-upgrade à la sous-commande install, et non directement à apt-get, puis vous n'aurez pas à ajouter true.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X