Dites à aptitude d'ignorer un paquet cassé


9

J'ai installé un Amsynth de Lucid dans Karmic en utilisant:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

La raison de l'installation de la version Lucid est que la version Karmic a 3 ans et se bloque sur ma machine. Le paquet Lucid Amsynth dépend de versions plus récentes de libatk1 et libjack0 que Karmic, mais j'ai pensé que je prendrais un risque et il s'avère qu'Amsynth fonctionne bien.

Cependant, aptitude essaie de désinstaller Amsynth chaque fois que je fais une mise à niveau. Je pense que j'ai réussi à le suspendre mais maintenant l'aptitude avorte. Comment puis-je dire à aptitude d'ignorer le paquet cassé et de continuer.


Pour le moment, je viens de le désinstaller. Je vais simplement réinstaller chaque fois que j'en ai besoin, cela ne prend pas trop de temps, jusqu'à ce qu'il me dérange suffisamment pour essayer de le compiler à nouveau.

Si vous avez besoin de quelque chose d'une version plus récente et qu'elle a besoin de bibliothèques plus récentes, vous pouvez généralement soit les retirer, soit télécharger le package source et le reconstruire sur votre système. Cependant, je suis tombé sur cela en essayant d'utiliser un package tiers et que les hacks sont nécessaires.
Jan Hudec

Réponses:


7

Si vous avez installé le programme via un fichier deb et dpkg, vous pouvez également modifier manuellement les dépendances du fichier .deb installé. J'ai été poussé à cette mesure extrême une fois ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

et dpkg ne connaît plus les dépendances de foo. Dans vim, vous devez sélectionner ./control (j'utilise vim pour lire les fichiers compressés - décompresser et utiliser un autre éditeur et reconditionner si vous le souhaitez) et supprimer les dépendances indésirables de la ligne

Depends: foo bar

1
Il vaut mieux utiliser dpkg-debplutôt que ar. arest un détail d'implémentation de dpkg qui pourrait changer à l'avenir.
jmtd

Merci, cette solution a fonctionné pour moi mais lorsque je fais la mise à niveau apt-get, je reçois le message "Les packages suivants ont été conservés: numptyphysics: i386" (apt-get dist-upgrade ne dit rien). Ce message est-il normal et ne peut-on pas s'en débarrasser?
baptx

7

Il y a une solution piratée sur les Ubuntuforums . La solution de ~ quack est meilleure, mais plus de travail.

Je n'ai rien trouvé sur Google à ce sujet, sauf la compilation de votre propre «paquet factice» (impossible sans désinstaller le ou les paquets cassés. Sauf si vous avez la chance d'avoir déjà les outils), mais la recherche sur mon propre disque dur m'a donné la réponse finalement!

Pour tous ceux qui voudraient savoir, voici comment "décompresser" un paquet dans synaptic / aptitude / apt-get, sans le désinstaller.

Tout d'abord, notez le package que vous avez installé, et le ou les packages dont il dépend qui lui donnent un statut cassé. Disons que j'ai forcé une installation de pommes, qui dépend du paquet obsolète qui n'est pas dans le référentiel:

Dans un code de type terminal:

sudo gedit /var/lib/dpkg/status

recherchez des pommes dans le fichier jusqu'à ce que vous trouviez quelque chose comme:

Code:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Supprimez obsolète de la ligne Depends:, enregistrez le fichier et vous avez terminé. J'espère que cela aide certaines personnes.


ick. bonne trouvaille, mais je ne suis pas fan de mentir au gestionnaire de paquets (ce qui est essentiellement ce que fait ce hack). mieux vaut ne pas utiliser APT du tout que de courir en le cassant bon gré mal gré. c'est pourquoi la compilation de vos propres packages est une bonne chose - pas de dépendances cassées et pas de mensonge à votre gestionnaire de packages.
Quack Quichotte

Je n'ai aucun problème à mentir au gestionnaire de paquets, d'autant plus que dans quelques mois je réinstallerai le système d'exploitation, mais je n'ai pas trouvé le fichier référencé dans le fil.

Bizarre. Ça devrait être là. Essayez de faire "cd / var / lib / dpkg" puis "sudo nano status".
Iain

1
Le lien ne fonctionne plus. C'est la raison exacte pour laquelle les réponses uniquement liées aux liens sont mal vues ici. Si vous avez expliqué ici, ce serait la bonne réponse.
Jan Hudec

Je ne sais pas si cela est permanent ou non, mais cela semble être une solution décente jusqu'à présent pour l'installation de packages ayant des dépendances matérielles sur des versions de Java qui ne sont plus disponibles.
krispy

2

Dans la section Préférences d'aptitude (Ctrl-T pour accéder au menu; sous Options), décochez l'option dans la section "Gestion des dépendances" qui dit "Réparer automatiquement les paquets cassés avant d'installer ou de supprimer" . Cela devrait empêcher aptitude d'essayer de corriger le package chaque fois que vous modifiez d'autres packages.

En tant que correctif plus permanent, vous devez récupérer les packages source pour le package Lucid Amsynth que vous avez installé, ainsi que les packages source pour libatk1 et libjack0 , et créer votre propre package mis à jour. En fonction de ce qui utilise ces bibliothèques, vous devrez peut-être également mettre à jour d'autres packages, mais vous pouvez probablement vous en sortir avec seulement ceux-ci. (Il s'agit essentiellement de rétroporter ces packages de Lucid vers Karmic - vous devriez vérifier le référentiel Karmic-backports ou les PPA pour voir si quelqu'un l'a déjà fait. Si vos nouveaux packages fonctionnent, envisagez de les envoyer à Karmic-backports pour que d'autres puissent les utiliser. )


Merci, j'ai essayé votre première suggestion, mais cela ne semble pas faire de différence. Les mises à jour seraient simplement abandonnées. J'ai également essayé de le compiler avant d'essayer d'installer le paquet Lucid mais je n'ai pas eu de chance avec. Je pourrais réessayer à l'avenir.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.