J'ai téléchargé et compilé le dernier python 3.5 et je l'ai installé avec checkinstall. Maintenant, je reçois une tonne de paquets qui ont des dépendances manquantes dans apt.
apt-xapian-index : Depends: python (< 2.8) but 3.5.0-1 is to be
installed
duplicity : Depends: python (< 2.8) but 3.5.0-1 is to be installed
gconf2 : Depends: python:any
.
.
.
totem-plugins : Depends: python:any (>= 2.6.6-7~)
ubuntu-system-service : Depends: python (< 2.8) but 3.5.0-1 is to be installed
Depends: python:any (>= 2.7.1-0ubuntu2)
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Mais j’ai toujours python installé, y compris 2.7.9.
$ which python
/usr/bin/python
$ python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
$ which python3
/usr/local/bin/python3
$ python3
Python 3.5.0 (default, Sep 13 2015, 19:47:21)
[GCC 4.9.2] on linux
Comment puis-je supprimer le paquet que j'ai installé ou réparer les dépendances ne voyant pas que python3 est installé?
De plus, python3.4 est toujours à /usr/bin/python3
EDIT: Je vois qu'il veut que je fasse apt-get -f install
mais cela enlève une tonne de choses et je ne pense vraiment pas que ce soit la bonne façon de le réparer.
Dieu merci, j'ai pu le réparer. J'avais peur de devoir réinstaller Ubuntu.
Je suis allé et manuellement édité /var/lib/dpkg/status
et supprime l'entrée qui a été faite par le checkinstall
.
Une fois que cela a été supprimé, je suis allé dans /usr/local/bin
et j'ai supprimé tous les éléments python 3.5. Je me suis également assuré que python3-4 était toujours dans /usr/bin/
. Ensuite, j'ai fait un Sudo dpkg-reconfigure -a
et finalement un apt-get -f install
et il n'y avait qu'une seule chose "manquante", à savoir le python.
Ensuite, j'ai réussi à le faire installer correctement en suivant les instructions du README, puis en supprimant simplement le lien symbolique vers python3.4 et en créant un nouveau lien vers python3.5.
J'ai eu le même problème après avoir installé python3.4 avec checkinstall
(au lieu de python3.5 pour electrometro
)
J'ai découvert pourquoi ce problème s'est produit à la première place.
Lors de la création du fichier .deb à partir de la source Python 3.4 avec checkinstall
qui l'installe ensuite, le nom de package par défaut défini par checkinstall est " python ".
Par conséquent, checkinstall
désinstalle le paquet nommé python avant d'installer le nouveau en utilisant dpkg
!! Ce paquet existe déjà dans Ubuntu. Il est fondamentalement lié à python2! Pour une raison quelconque, je pense que dpkg
essaie de supprimer la version de python que vous installez, c'est-à-dire python3.4 dans mon cas mais échoue. C'est pourquoi python2 est toujours installé. Mais dpkg
croit toujours que le paquet " python " a été supprimé et remplacé par le nouveau paquet installé (python3.4). Le fichier/var/lib/dpkg/status a été modifié en conséquence. Dans mon cas, voici la mise à jour liée à cette installation:
Paquetage: python
Statut: deinstall ok installé
Priorité: extra
Section : Checkinstall
Taille installée: 167520
Mainteneur: root @ laptop
Architecture: AMD64
Version: 3.4.3-1
Fournit: python
Description: Package créé avec checkinstall 1.6.2`
Comme vous pouvez le voir en gras, le nom du paquet est " python " et le paquet a été " deinstall "avant d’être installé à nouveau.
Ainsi, dpkg
pense que " python " (python2!) N'existe plus et vous suggère de supprimer tout ce qui en dépend lorsque vous appelez apt-get -f install
!
Choisissez simplement un nom de "Package" et un nom "Fournis" différents lorsque vous utilisez checkinstall! Par exemple, python3.4-checkinstall pour les deux.
Pour résoudre ce gâchis, j'ai une solution qui vous permet de ne pas avoir à supprimer manuellement tous les fichiers binaires installés, comme le suggère electrometro
, ce qui pourrait être dangereux.
Suivez ces étapes:
python
dans /var/lib/dpkg/status
de python
à python-3.4-checkinstall
par exemple. Faites attention. Le nouveau nom ne doit pas avoir déjà été utilisé! Remplacez également "Fournit" par le nouveau nom.Sudo dpkg-reconfigure python-3.4-checkinstall
. (Remarque: dpkg-reconfigure -a
comme suggéré electrometro
n'existe plus dans Ubuntu 16.04. De toute façon, il n'est pas nécessaire).apt-get -f install
pour installer à nouveau le package python
d'origine! A ce stade, vous pouvez vous arrêter ici, mais si vous essayez Sudo dpkg-query -L python3.4-checkinstall
: dpkg ne sait plus quels fichiers ont été installés !!! Parce que le fichier /var/lib/dpkg/info/python3.4-checkinstall.list n'existe pas! Le fichier /var/lib/dpkg/info/python.list a été remplacé par apt-get -f install
. Voir le documentation Debian pour plus d’informations sur dpkg
. Pour résoudre ce problème, vous devez effectuer l’étape 4.Et c'est tout! Tout devrait être propre maintenant. En fait, j'ai exécuté l'étape 3 avant l'étape 2, mais il devrait être plus propre de le faire de cette façon.
Pour info, l'étape que j'ai utilisée pour installer python3.4 à partir du paquet source en utilisant checkinstall est la suivante:
./configure
.make
Sudo checkinstall
J'espère que ça aide!
A bientôt, Nicolas