Comment simuler une version de paquet installée?

19

Étant un des premiers utilisateurs et utilisant les versions quotidiennes 11.04, je rencontre parfois une situation où certains paquets nécessitent des versions antérieures d’autres packages que ceux que j’ai installés. Généralement, les versions plus récentes (mais refusées) des packages nécessaires fournissent toutes les fonctionnalités de leurs anciennes versions.

Si j'utilise dpkg -i --force-depends-version pour installer des paquets dépendants, tout fonctionne correctement, je n'ai jamais vu de problème.

Au lieu de télécharger et d’installer manuellement chaque paquet, puis-je simplement faire en sorte que le système prétende qu’une version de package spécifique est installée en cas de nouvelle? Ou existe-t-il un équivalent de --force-depends-version pour apt-get ?

    
posée Ivan 20.12.2010 - 02:44
la source

2 réponses

15

Vous pouvez utiliser le équivs pour créer un paquet factice afin de simuler un paquet en cours d'installation. Quelques instructions ici .

    
réponse donnée frabjous 20.12.2010 - 02:49
la source
16

Bien qu’une réponse soit déjà acceptée, l’insertion de l’accepté traduit mieux le processus:

Il existe un paquet Debian appelé equivs capable de créer des paquets factices. Installez-le en exécutant sudo apt-get install -y equivs

Une fois installé, vous générez un modèle de fichier "control" à l'aide de la commande suivante: equivs-control postfix (remplacez postfix par le nom de votre package). Dans mon cas, je pourrais utiliser un autre nom de package, par ex. postfix-custom ou autre chose, mais mon package personnalisé remplit ou Provides la dépendance d'installation de postfix (en remplaçant encore postfix pour le package de votre choix).

Une fois le fichier de contrôle de modèle généré, je supprime généralement une grande partie des déclarations commentées (instructions commençant par # ). Ce que j'aime garder en particulier, c'est la déclaration Provides: où je peux dire que mon paquet fournit la capacité offerte par l'autre paquet que j'essaie de simuler, par ex. Provides: postfix indique au mécanisme de résolution des dépendances Debian / Ubuntu que mon paquet, quel que soit son nom, offre les mêmes capacités que le paquet cible, encore une fois postfix ou autre. Cela me permet de nommer mon package indépendamment du package cible pour éviter toute confusion. Erlang Factory le fait avec ses affaires, par ex. esl-erlang fournit erlang .

Enfin, une fois le fichier de contrôle de modèle créé, vous utilisez equivs-build pour générer le faux package, par ex. equivs-build /path/to/generated/control/file . La compilation du paquet prend quelques secondes et vous pouvez alors exécuter sudo dpkg -i my_package_name*.deb

Pour les utilisateurs avancés, si votre fichier de contrôle de modèle comporte une ligne de dépendance Requires: , vous pouvez utiliser un outil tel que gdebi pour installer votre package, ainsi que les différents packages qu'il déclare comme dépendances.

    
réponse donnée Jonathan Oliver 03.08.2015 - 20:41
la source

Lire d'autres questions sur les étiquettes