Comment simuler une version de package installée?

23

Étant un des premiers à adopter et à utiliser les versions quotidiennes 11.04, je rencontre parfois une situation où certains packages nécessitent des versions antérieures d'autres packages que ceux que j'ai installés. Habituellement, 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-versionpour installer des packages dépendants, tout fonctionne bien, je n'ai jamais vu de problème.

Au lieu de télécharger et d'installer manuellement chaque package, puis-je simplement faire croire au système qu'une version spécifique du package est installée lorsqu'il y en a une plus récente? Ou existe-t-il un --force-depends-versionéquivalent clé pour apt-get?

Ivan
la source

Réponses:

16

Vous pouvez utiliser le package equivs Installer equivs pour créer un package factice pour simuler un package donné en cours d'installation. Quelques instructions ici .

frabjous
la source
Bien que cela soit suffisant. Mais le lien risque de se rompre tôt ou tard. Mieux vaut avoir au moins repris l'instruction dans la réponse. Ma réponse peut aider ici askubuntu.com/a/1181415/26246 . Nous pouvons donc faire référence à cette question qui a le plus de voix concernant les équivs.
user.dz
23

Même si une réponse a déjà été acceptée, le fait de souligner que ce qui est accepté transmet mieux le processus:

  1. Il y a un paquet Debian appelé equivsqui est capable de créer des paquets factices. Installez-le en exécutantsudo apt-get install -y equivs

  2. Une fois installé, vous générez un modèle de fichier "contrôle" à l'aide de la commande suivante: equivs-control postfix(remplacez postfixpar le nom de votre package). Dans mon cas, je pourrais utiliser un autre nom de package, par exemple postfix-customou quoi que ce soit, mais faire remplir mon package personnalisé ou Providesla dépendance d'installation de postfix(remplacer à nouveau postfixpour le package que vous voulez.

  3. Une fois que le fichier de contrôle du modèle est généré, je supprime généralement un grand nombre des instructions commentées (instructions commençant par #). L'une que j'aime garder spécifiquement est la Provides:déclaration où je peux dire que mon paquet fournit la capacité offerte par l'autre paquet que j'essaie de simuler, par exemple, Provides: postfixindique au mécanisme de résolution de dépendances Debian / Ubuntu que mon paquet - de n'importe quel nom - fournit les mêmes capacités que le package cible, à nouveau postfixou autre. Cela me permet de nommer mon package indépendamment du package cible pour éviter toute confusion. Erlang Factory le fait avec ses trucs, par exemple esl-erlangfournit erlang.

  4. Enfin, une fois le fichier de contrôle du modèle créé, vous utilisez equivs-buildpour générer le faux package, par exemple equivs-build /path/to/generated/control/file.

  5. Il faut quelques secondes pour créer le package, puis vous pouvez exécuter sudo dpkg -i my_package_name*.deb

Pour les utilisateurs avancés, si votre fichier de contrôle de modèle a une Requires:ligne de dépendance, vous souhaiterez peut-être utiliser un outil comme gdebipour installer votre package ainsi que les différents packages qu'il déclare comme dépendances.

Jonathan Oliver
la source