web-dev-qa-db-fra.com

Erreur lors de la mise à jour du paquet Ubuntu 16.04 LTS python-minimal

Tout se passait très bien jusqu'à aujourd'hui, lorsque j'ai décidé de mettre à jour Ubuntu 16.04. à 16.04.4

Lorsqu’il en était à la dernière étape de l’installation des mises à jour téléchargées, l’installation de python-minimal emballé a échoué avec l’erreur suivante:

Setting up python-minimal (2.7.12-1~16.04) ...
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/compileall.py", line 16, in <module>
    import struct
  File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: No module named _struct
dpkg: error processing package python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 python-minimal
E: Sub-process /usr/bin/dpkg returned an error code (1)

Je pensais que réinstaller python et les packages appropriés aideraient. Mais j’ai malheureusement fini par désinstaller tous les packages et logiciels python dépendant de python tels que gimp, mplayer, kde, kicad, pycharm, etc.

Maintenant, chaque fois que j'essaye d'installer python j'obtiens une erreur en dessous:

$ Sudo apt-get install python
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python-minimal python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc
The following NEW packages will be installed:
  libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal
0 upgraded, 7 newly installed, 0 to remove and 21 not upgraded.
Need to get 1,628 kB/3,877 kB of archives.
After this operation, 16.6 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu xenial-updates/main AMD64 libpython2.7-minimal AMD64 2.7.12-1ubuntu0~16.04.3 [340 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial-updates/main AMD64 python2.7-minimal AMD64 2.7.12-1ubuntu0~16.04.3 [1,261 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu xenial-updates/main AMD64 python-minimal AMD64 2.7.12-1~16.04 [28.1 kB]                 
Fetched 1,628 kB in 6s (248 kB/s)                                                                                                 
Selecting previously unselected package libpython2.7-minimal:AMD64.
(Reading database ... 250996 files and directories currently installed.)
Preparing to unpack .../libpython2.7-minimal_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
Unpacking libpython2.7-minimal:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python2.7-minimal.
Preparing to unpack .../python2.7-minimal_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
Unpacking python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python-minimal.
Preparing to unpack .../python-minimal_2.7.12-1~16.04_AMD64.deb ...
Unpacking python-minimal (2.7.12-1~16.04) ...
Selecting previously unselected package libpython2.7-stdlib:AMD64.
Preparing to unpack .../libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
Unpacking libpython2.7-stdlib:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package python2.7.
Preparing to unpack .../python2.7_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
Unpacking python2.7 (2.7.12-1ubuntu0~16.04.3) ...
Selecting previously unselected package libpython-stdlib:AMD64.
Preparing to unpack .../libpython-stdlib_2.7.12-1~16.04_AMD64.deb ...
Unpacking libpython-stdlib:AMD64 (2.7.12-1~16.04) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for desktop-file-utils (0.22-1ubuntu5.1) ...
Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
Processing triggers for mime-support (3.59ubuntu1) ...
Setting up libpython2.7-minimal:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
Setting up python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
Linking and byte-compiling packages for runtime python2.7...
Setting up python-minimal (2.7.12-1~16.04) ...
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/compileall.py", line 16, in <module>
    import struct
  File "/usr/local/lib/python2.7/struct.py", line 1, in <module>
    from _struct import *
ImportError: No module named _struct
dpkg: error processing package python-minimal (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 python-minimal
E: Sub-process /usr/bin/dpkg returned an error code (1)

Je ne peux pas non plus installer de logiciel nécessitant python.

Ma version actuelle d'ubuntu après une mise à niveau infructueuse:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.4 LTS
Release:    16.04
Codename:   xenial

Quelqu'un at-il rencontré un problème similaire et a-t-il pu le résoudre? Toute aide serait grandement appréciée.

6
Saurav Kumar

Après des heures de galère et des centaines de fois à installer/désinstaller les packages python, j'ai eu l’impression d’avoir pu installer python packages, y compris python-minimal. Permettez-moi de partager mon histoire de réussite.

  1. Au début, je n’étais même pas en mesure de désinstaller Python-minimal. Chaque fois, il a montré l'erreur que j'ai mentionné dans ma question lors de l'installation/désinstallation. Même essayé Sudo apt-get -f install mais sans aucun gain. D'une manière ou d'une autre, j'ai réalisé qu'il ne peut être désinstallé qu'avec quelques autres packages. Après les commandes, je finissais de supprimer les paquets cassés et résiduels python-minimal:

    Sudo apt-get autoremove libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python-minimal python2.7 python2.7-minimal
    

    Cela supprimerait tous les packages python et les logiciels dépendant de python. Je sais que c'était extrême, mais croyez-moi, je n'avais pas le choix.

    Sudo apt-get remove --purge $(Sudo dpkg -l | egrep "^(rc|iU)" | awk '{print $2}' | tr '\n' ' ')
    

    Supprimer le reste des paquets résiduels et borken, le cas échéant.

    Note: J'ai copié la liste des paquets qui ont été supprimés à cette étape. Je savais que j'en aurais encore besoin!

  2. Ensuite, j'ai cherché tous les endroits où python2.7 était installé et supprimé tous les fichiers et le répertoire de python par défaut. Je souhaitais ne pas devoir les supprimer manuellement mais je n'avais pas le choix:

    Sudo find / -iname python2.7
    /etc/python2.7
    /usr/local/bin/python2.7
    /usr/local/lib/python2.7
    /usr/lib/python2.7
    /usr/bin/python2.7.13/lib/python2.7
    /usr/bin/python2.7.13/bin/python2.7
    /usr/bin/python2.7.13/include/python2.7
    /usr/bin/python2.7
    /usr/include/x86_64-linux-gnu/python2.7
    /usr/include/python2.7
    /usr/share/doc/python2.7
    /usr/share/binfmts/python2.7
    /usr/share/lintian/overrides/python2.7
    /proc/sys/fs/binfmt_misc/python2.7
    /var/lib/binfmts/python2.7
    

    Je ne devais pas supprimer tous les fichiers/répertoires énumérés ci-dessus et ne supprimais que la version par défaut:

    Sudo rm -rf /etc/python2.7 /usr/local/bin/python2.7 /usr/local/lib/python2.7 /usr/lib/python2.7
    

    Il y avait d'autres versions de python et ne causaient aucun problème. Je pense que la recherche peut varier selon les utilisateurs et que la commande whereis python peut être utilisée pour obtenir le chemin d'accès par défaut python installé.

  3. Ensuite, j'ai installé python avec succès:

    Sudo apt-get install python
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following additional packages will be installed:
      libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python-minimal python2.7 python2.7-minimal
    Suggested packages:
      python-doc python-tk python2.7-doc
    The following NEW packages will be installed:
      libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python python-minimal python2.7 python2.7-minimal
    0 upgraded, 7 newly installed, 0 to remove and 21 not upgraded.
    Need to get 0 B/3,877 kB of archives.
    After this operation, 16.6 MB of additional disk space will be used.
    Do you want to continue? [Y/n] y
    Selecting previously unselected package libpython2.7-minimal:AMD64.
    (Reading database ... 250996 files and directories currently installed.)
    Preparing to unpack .../libpython2.7-minimal_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
    Unpacking libpython2.7-minimal:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
    Selecting previously unselected package python2.7-minimal.
    Preparing to unpack .../python2.7-minimal_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
    Unpacking python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
    Selecting previously unselected package python-minimal.
    Preparing to unpack .../python-minimal_2.7.12-1~16.04_AMD64.deb ...
    Unpacking python-minimal (2.7.12-1~16.04) ...
    Selecting previously unselected package libpython2.7-stdlib:AMD64.
    Preparing to unpack .../libpython2.7-stdlib_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
    Unpacking libpython2.7-stdlib:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
    Selecting previously unselected package python2.7.
    Preparing to unpack .../python2.7_2.7.12-1ubuntu0~16.04.3_AMD64.deb ...
    Unpacking python2.7 (2.7.12-1ubuntu0~16.04.3) ...
    Selecting previously unselected package libpython-stdlib:AMD64.
    Preparing to unpack .../libpython-stdlib_2.7.12-1~16.04_AMD64.deb ...
    Unpacking libpython-stdlib:AMD64 (2.7.12-1~16.04) ...
    Processing triggers for man-db (2.7.5-1) ...
    Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20180209-0ubuntu1) ...
    Rebuilding /usr/share/applications/bamf-2.index...
    Processing triggers for desktop-file-utils (0.22-1ubuntu5.1) ...
    Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
    Processing triggers for mime-support (3.59ubuntu1) ...
    Setting up libpython2.7-minimal:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
    Setting up python2.7-minimal (2.7.12-1ubuntu0~16.04.3) ...
    Linking and byte-compiling packages for runtime python2.7...
    Setting up python-minimal (2.7.12-1~16.04) ...
    Selecting previously unselected package python.
    (Reading database ... 251742 files and directories currently installed.)
    Preparing to unpack .../python_2.7.12-1~16.04_AMD64.deb ...
    Unpacking python (2.7.12-1~16.04) ...
    Processing triggers for doc-base (0.10.7) ...
    Processing 1 added doc-base file...
    Registering documents with scrollkeeper...
    Processing triggers for man-db (2.7.5-1) ...
    Setting up libpython2.7-stdlib:AMD64 (2.7.12-1ubuntu0~16.04.3) ...
    Setting up python2.7 (2.7.12-1ubuntu0~16.04.3) ...
    Setting up libpython-stdlib:AMD64 (2.7.12-1~16.04) ...
    Setting up python (2.7.12-1~16.04) ...
    

    NOTE: Cela n’a installé que les paquets nécessaires et minimaux python. Vous devrez peut-être toujours installer tous les autres python packages désinstallés à la 1ère étape.

Quelques notes supplémentaires:

La 2e étape a supprimé les packages tiers python également installés globalement à l'aide de pip. Malheureusement, je ne disposais pas de la liste et je me suis retrouvé avec peu de problèmes dont mes projets ont besoin. Mais ce n'était pas un gros problème car tous mes projets avaient leur propre fichier python Requirements.txt. Mais je vous suggère quand même à tous de sauvegarder les packages python dans un fichier avant de commencer la 1ère étape. La commande suivante peut être utile:

pip freeze > python_pip_packages.txt

De plus, j'ai dû supprimer les fichiers et les répertoires pip (de la même façon que j'ai supprimé _ les fichiers et les répertoires par défaut de python) et réinstallé le programme pip:

Sudo apt-get install python-pip  # installing pip
Sudo pip install --upgrade pip  # upgrading pip to latest version using pip itself
Sudo pip install -r python_pip_packages.txt  # re-installing all 3rd party python packages which were removed in 2nd step.

J'espère que les autres ne souffrent pas comme moi :)

7
Saurav Kumar

Pour ceux qui restent bloqués lors de l'exécution de commandes (où il se plaint constamment de python ou de tout autre paquet), j'ai suivi la même procédure et j'ai réglé ce problème en supprimant les informations de

/var/lib/dpkg/info/<the package giving you headache>

Après cela, devrait vous permettre de procéder aux installations/mise à niveau/mises à jour

2
Diogo Santo