J'ai un certain nombre de packages mesa que j'avais mis à niveau vers une version PPA, avant de purger le PPA afin de pouvoir mettre à niveau mon système. Les différences dans les versions sont mineures (elles sont techniquement les mêmes, un seul ensemble de bibliothèques provient de git et les autres sont les versions finales).
Si j'essaie de rétrograder via Synaptic, apt-get ou aptitude, je suis jeté dans l'enfer des dépendances.
Existe-t-il un moyen de rétrograder manuellement les packages (peut-être un par un) et de marquer leurs packages dépendants comme inamovibles (si cela a du sens) jusqu'à ce que j'aie terminé?
PS cette question: comment rétrograder un package via apt-get? est un peu différent et n'aide pas cette situation.
apt
dpkg
dependencies
downgrade
RolandiXor
la source
la source
ppa-purge
abord?synaptic
, lorsque vous sélectionnez le package xyz, toutes les dépendances seront sélectionnées par défaut.Mais vous pouvez toujours désélectionner toutes les dépendances et simplement installer le package principal.Plus tard, vous pouvez installer toutes les dépendances.Mais encore une fois, cela ne fonctionne que si vous êtes prêt à réinstaller.Réponses:
Je n'ai jamais joué avec cela auparavant, mais je vous suggère
hold
(oulock
) la version des dépendances qui vous causent des problèmes. De cette façon, leapt
nombre de solutions possibles est plus limité et ne se confond peut-être pas lorsque vous essayez de rétrograder les autres packages.Si rien d'autre ne fonctionne, vous pouvez adopter l'approche manuelle suggérée dans cette réponse: Comment rétrograder un package via apt-get? . Fondamentalement, télécharger les nécessaires
.deb
paquets manuellement, les installer un par un à l' aide du niveau inférieurdpkg
et un de ses solides arguments:--ignore-depends
,--force-depends
,--force-depends-version
, ou même--force-all
.Dans le même esprit que ci-dessus, vous avez l'
--force-downgrade
argument:Mais cela suppose que vous avez lu
man dpkg
et que vous comprenez ce que vous faites:Voir Erreur: le numéro de version ne commence pas par chiffre et Comment installer une ancienne version de Java et Comment installer une ancienne version de package comme le liquide 2.2.2? pour des exemples de:
Et voir Comment puis-je installer un package sans installer certaines dépendances? pour un exemple (avec l'avertissement approprié) de:
Une autre approche serait de créer un
.deb
paquet factice en utilisant leequivs
paquet (et peut-être un nom légèrement différent). L'installation du package factice devrait alors vous permettre de supprimer le "vrai" package tout en conservant les dépôts appropriés, puis d'installer l'ancienne version. Je ne sais pas exactement comment cela fonctionnerait, mais consultez ce fil pertinent pour plus de détails: Comment supprimer un deb sans supprimer ses dépendances .la source
Vous pouvez d'abord utiliser
apt-mark
pour marquer toutes les dépendances du package cible (et peut-être aussi celles recommandées / suggérées) installées dans le système en tant qu'installations manuelles . Après cela, installez les versions précédentes du logiciel enapt-get
mentionnant explicitement la version.Pour répertorier les dépendances, les packages recommandés et suggérés pour le package cible:
Marquage des packages comme installés manuellement :
(utilisez ceci pour toutes les dépendances, recommande et suggère.)
Supprimez le package cible:
Pour afficher une liste des versions de packages que vous pouvez rétrograder / mettre à niveau, utilisez:
Installez la version cible du package requis:
ou
PS. Si la liste des dépendances / packages recommandés / suggérés , c'est-à-dire ceux qui doivent être marqués avec,
apt-mark
est grande, enregistrez la liste prévue de la sortie empaquetée parapt-cache show <target-package-name>
dans n'importe quel fichier/path/to/foo
et utilisez leapt-mark
dans un combo comme celui-ci:la source
apt-cache policy <target-package-name>
pour avoir une liste des versions de packages que vous pouvez rétrograder / mettre à niveau vers ..Je viens de traverser la douleur de la mise à niveau vers une version en amont d'un package, puis de décider de rétrograder. C'était via un référentiel privé des mainteneurs. Dans mon cas, il s'agissait d'essayer la dernière version de systemd 233 (encore inédite).
La clé est de comprendre que vous devez spécifier tous les packages qui doivent être rétrogradés. Si vous réussissez, les chances sont bonnes de faire ce que vous voulez. Si vous manquez quelque chose, apt vous indiquera que l'action entraînera la suppression de nombreux packages. Pour nous assurer que nous utilisons l'indicateur «-s» pour essayer la rétrogradation avant de le faire.
Les étapes à suivre sont donc les suivantes:
1) Énumérez toutes les dépendances qui ont été mises à niveau vers l'amont (utilisez un autre mot-clé si votre situation est différente):
Cela vous donne une liste de packages avec un numéro de version en amont.
2) Indiquez la version stable correcte pour chaque package:
3) Vérifiez que tout est bon:
(je ne sais pas si --reinstall était requis entre autres, mais c'est ce que j'ai fait)
4) Retirez le -s et faites-le.
la source