Installer une version de package spécifique avec la commande Apt dans Ubuntu


  • FrançaisFrançais


  • Vous voulez installer une version spécifique d’un paquet dans Ubuntu ? Vous pouvez le faire “facilement” de la manière suivante :

    sudo apt install package_name=package_version

    Comment savez-vous quelles versions sont disponibles pour un certain package ? Utilisez cette commande :

    apt list --all-versions package_name

    Dans la capture d’écran ci-dessous, vous pouvez voir que j’ai deux versions de VLC disponibles et j’utilise la commande pour installer l’ancienne version :

    installer des versions spécifiques d'apt ubuntu
    Installer des versions spécifiques avec Ubuntu

    Cela ressemble à une tâche simple, non ? Mais les choses ne sont pas aussi simples qu’elles en ont l’air. Il y a plusieurs si et mais impliqués ici.

    Ce didacticiel couvrira tous les aspects importants de l’installation d’une version spécifique du programme à l’aide des commandes apt ou apt-get.

    Ce qu’il faut savoir sur l’installation d’une version spécifique d’un programme

    Vous devez savoir quelques éléments sur le fonctionnement d’APT et des référentiels dans les distributions basées sur Ubuntu et Debian.

    Aucune version plus ancienne de la même source

    Ubuntu ne conserve pas les anciennes versions des packages dans le référentiel. Vous pouvez voir plus d’une version dans des cas spécifiques, temporairement. Par exemple, vous exécutez la mise à jour apt (mais pas la mise à niveau) et une nouvelle version est disponible. Vous pouvez voir deux versions pour le même paquet dans le cache apt. Mais dès que le package est mis à niveau vers la nouvelle version, l’ancienne version est supprimée du cache ainsi que des référentiels.

    Utiliser plusieurs sources pour différentes versions

    Pour obtenir plusieurs versions du même package, vous devrez ajouter plusieurs sources. Par exemple, VLC est en version 3.x. Ajout de la PPA de construction quotidienne de VLC donnera la version (instable) 4.x.

    De la même manière, vous pouvez télécharger un fichier DEB avec une version différente et l’installer.

    La version supérieure a toujours la priorité

    Si vous avez le même package disponible à partir de plusieurs sources, par défaut, Ubuntu installera la version disponible la plus élevée.

    Dans l’exemple précédent, si j’installe VLC, il installera la version 4.x, pas la 3.x.

    L’ancienne version est mise à niveau vers la nouvelle version disponible

    C’est un autre problème potentiel. Même si vous installez l’ancienne version d’un package, il est mis à niveau vers la version la plus récente (si disponible). Vous devez conserver le package et l’empêcher de se mettre à niveau.

    Les dépendances doivent également être installées

    Si le package a des dépendances, vous devrez également installer la version requise des packages dépendants.

    Maintenant que vous connaissez quelques problèmes potentiels, voyons comment les résoudre.

    Installation d’une version spécifique d’un package

    Je prends l’exemple de VLC dans ce tutoriel. VLC version 3.0.16 est disponible dans les dépôts d’Ubuntu. J’ai ajouté le PPA de construction quotidienne et cela me donne la version candidate de VLC version 4.0.

    Comme vous pouvez le voir, j’ai actuellement deux versions de VLC disponibles dans le système :

    installer des versions spécifiques d'apt ubuntu
    Plusieurs versions du même package
    [email protected]:~$ apt list -a vlc
    Listing... Done
    vlc/jammy 4.0.0~rc1~~git20220516+r92284+296~ubuntu22.04.1 amd64
    vlc/jammy 3.0.16-1build7 amd64
    vlc/jammy 3.0.16-1build7 i386

    Étant donné que la version supérieure est prioritaire, l’utilisation de ‘apt install vlc’ entraînera l’installation de VLC 4.0. Mais je veux installer l’ancienne version 3.0.16 pour les besoins de ce tutoriel.

    sudo apt install vlc=3.0.16-1build7

    Mais voici la chose. Le package vlc a plusieurs dépendances et ces dépendances nécessitent également des versions spécifiques. Cependant, Ubuntu essaie d’installer les versions supérieures disponibles pour eux et, par conséquent, vous obtenez l’erreur classique “vous avez conservé des packages cassés”.

    problème d'installation d'une version spécifique d'apt ubuntu

    Pour résoudre ce problème, vous devez fournir des versions spécifiques de tous les packages dépendants dont il se plaint. Donc cette commande devient quelque chose comme ça :

    sudo apt install vlc=3.0.16-1build7 \
    		 vlc-bin=3.0.16-1build7 \
    		 vlc-plugin-base=3.0.16-1build7 \
    		 vlc-plugin-qt=3.0.16-1build7 \
    		 vlc-plugin-video-output=3.0.16-1build7 \
    		 vlc-l10n=3.0.16-1build7 \
    		 vlc-plugin-access-extra=3.0.16-1build7 \
    		 vlc-plugin-notify=3.0.16-1build7 \
    		 vlc-plugin-samba=3.0.16-1build7 \
    		 vlc-plugin-skins2=3.0.16-1build7 \
    		 vlc-plugin-video-splitter=3.0.16-1build7 \
    		 vlc-plugin-visualization=3.0.16-1build7

    Au cas où vous vous poseriez la question, le \ à la fin de chaque ligne n’est qu’un moyen d’écrire une seule commande sur plusieurs lignes.

    Est-ce que ça marche? Dans de nombreux cas, ce sera le cas. Mais j’ai choisi un exemple compliqué de VLC, qui a beaucoup de dépendances. Même les dépendances mentionnées ont des dépendances sur d’autres packages. Ça devient désordonné.

    Une alternative consiste à spécifier la source lors de l’installation.

    Vous pouvez également spécifier la source du référentiel

    Vous avez ajouté plusieurs sources, vous devriez donc avoir une idée des sources d’où provient le paquet.

    Utilisez la commande ci-dessous et recherchez le dépôt :

    apt-cache policy | less

    Concentrez-vous sur les lignes qui suivent le nom du dépôt :

    500 http://security.ubuntu.com/ubuntu jammy-security/multiverse i386 Packages
         release v=22.04,o=Ubuntu,a=jammy-security,n=jammy,l=Ubuntu,c=multiverse,b=i386
         origin security.ubuntu.com

    Vous pouvez spécifier les paramètres o, l, a, etc.

    Dans mon exemple d’origine, je veux installer VLC à partir du référentiel d’Ubuntu (pour obtenir 3.16) au lieu du PPA (ce qui me donne 4).

    Ainsi, la commande ci-dessous installera VLC 3.16 avec toutes les dépendances :

    sudo apt install -t "o=ubuntu" vlc
    installer à partir de la source du référentiel

    Cela semble bon? Mais le problème survient lorsque vous devez mettre à jour le système. Ensuite, il se plaint de ne pas trouver la version spécifiée.

    Que peut-on faire d’autre ?

    Pour installer une version plus ancienne, supprimez la source de la version la plus récente de votre système (si possible). Cela aide à se débarrasser des problèmes d’enfer des dépendances.

    Si ce n’est pas possible, vérifiez si vous pouvez l’obtenir dans d’autres formats d’emballage comme Snap, Flatpak, AppImage, etc. En fait, Snap et Flatpak vous permettent également de choisir et d’installer parmi les versions disponibles. Les applications étant en bac à sable, il est plus facile de gérer les dépendances des différentes versions.

    Conservez le paquet et empêchez la mise à niveau

    Si vous parvenez à installer une version spécifique du programme, vous souhaiterez peut-être éviter une mise à niveau accidentelle vers la version la plus récente. Ce n’est pas trop compliqué pour y parvenir.

    sudo apt-mark hold package_name

    Vous pouvez supprimer la suspension afin qu’elle puisse être mise à jour ultérieurement :

    sudo apt-mark unhold package_name

    Notez que les dépendances d’un package ne sont pas automatiquement conservées. Ils doivent être mentionnés individuellement.

    Conclusion

    Comme vous pouvez le voir, il existe une disposition pour installer la version sélectionnée d’un programme. Les choses ne se compliquent que si le paquet a des dépendances. Ensuite, vous entrez dans l’enfer de la dépendance.

    J’espère que vous avez appris quelques nouvelles choses dans ce tutoriel. Si vous avez des questions ou des suggestions pour l’améliorer, n’hésitez pas à me le faire savoir dans la section des commentaires.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code