web-dev-qa-db-ja.com

Ubuntu 16.04 LTS python-minimalパッケージエラーのアップグレードエラー

Ubuntu 16.04.16.04.4にアップグレードすることにした今日まで、すべてが非常にスムーズに進んでいました。

ダウンロードした更新プログラムをインストールする最終段階にあるとき、python-minimal packagedは、次のエラーでインストールに失敗しました。

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)

pythonと適切なパッケージを再インストールすると役立つと思いました。しかし、残念ながら、gimp、mplayer、kde、kicad、pycharmなどのpythonに依存していたpythonパッケージとソフトウェアをすべてアンインストールすることで終了しました。

これで、pythonをインストールしようとするたびに、以下のエラーが発生します。

$ 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)

Pythonを必要とするソフトウェアもインストールできません。

アップグレードに失敗した後の私の現在のバージョンのubuntu:

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

誰かが同様の問題に直面し、それを解決できましたか?どんな助けも大歓迎です。

6
Saurav Kumar

数時間の苦労と数百時間のpythonパッケージのインストール/アンインストールの後、python-minimalを含むpythonパッケージをインストールできたようです。私の成功の話を聞かせてください。

  1. 最初は、python-minimalをアンインストールすることさえできませんでした。インストール/アンインストール中に質問で言及したエラーが表示されるたびに。 Sudo apt-get -f installを試しましたが、何の利益もありませんでした。どういうわけか、他のいくつかのパッケージを一緒にしないとアンインストールできないことがわかりました。次のコマンドを使用して、壊れたpython-minimalパッケージと残りのパッケージを削除しました。

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

    これにより、pythonパッケージとpythonに依存するソフトウェアがすべて削除されます。私はこれが極端であることを知っていますが、私には選択肢がなかったと信じています。

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

    残りのパッケージおよび破損したパッケージがある場合は、残りを削除します。

    この手順で削除されたパッケージのリストをコピーしました。再び必要になることはわかっていました!

  2. 次に、python2.7がインストールされているすべての場所を検索し、default pythonのすべてのファイルとディレクトリを削除しました。私はそれらを手動で削除する必要はなかったが、選択肢がなかったことを望みました。

    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
    

    上記のすべてのファイル/ディレクトリを削除する必要はなく、デフォルトバージョンのみを削除しました。

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

    pythonには他のバージョンがあり、問題を引き起こしていませんでした。検索はユーザーごとに異なる場合があり、whereis pythonコマンドを使用して、インストールされているデフォルトのpythonのパスを取得できると思います。

  3. 次に、pythonをインストールしましたが成功しました:

    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) ...
    

    注:これは、非常に必要で最小限のpythonパッケージのみをインストールします。最初のステップでアンインストールされた他のすべてのpythonパッケージをインストールする必要がある場合があります。

いくつかの特記事項:

2番目の手順では、pipを使用してグローバルにインストールされたサードパーティpythonパッケージも削除されました。残念ながら、私はリストを持っていませんでしたが、それを必要とする私のプロジェクトでいくつかのトラブルが発生しました。しかし、私のプロジェクトはすべて独自のpython requirements.txtファイルを持っているため、それは大したことではありませんでした。それでも、最初のステップを開始する前に、pythonパッケージをファイルに保存することをお勧めします。次のコマンドが役立ちます。

pip freeze > python_pip_packages.txt

また、pipファイルとディレクトリを削除する必要があり(pythonデフォルトのファイルとディレクトリを削除したのと同様)、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.

他の人が私のように苦しんでいないことを願って:)

8
Saurav Kumar

コマンドを実行している間(pythonまたは他のパッケージについて常に不平を言う)行き詰まっている人のために、私は同じことを経験し、その情報を

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

その後、インストール/アップグレード/更新を続行できるようにします

2
Diogo Santo