いくつかの前文が通常尋ねられます...
OS: Ubuntu 14.04 (AMD64)
Python2: /usr/bin/python -V -> Python 2.7.12
Python2default: which python -> /usr/local/bin/python
/usr/local/bin/python -V -> Python 2.7.12
dpkg: dpkg --version -> Debian `dpkg' package management program version 1.17.5 (AMD64).
apt: Sudo apt --version -> apt 1.0.1ubuntu2 for AMD64 compiled on Apr 12 2018 10:14:36
c: gcc --version -> gcc (Ubuntu 4.8.5-4ubuntu8~14.04.2) 4.8.5
llvm: clang --version -> clang version 3.9.1-4ubuntu3~14.04.3 (tags/RELEASE_391/rc2)
ここまでは順調ですね。考えられる原因の理論:
どちらが問題を引き起こしたのかはわかりませんが、ある時点で何か間違ったことをしていた可能性があります。私は自分の問題を修正し、パッケージシステムを回復するために多くのことを試みました(多くの同様の問題を調査しました)。
途中で、UbuntuはPythonに非常に依存しているため、これは驚異的であることがわかりました。そして、私はそれから可能な方法を夢見ています:
OK。十分な理論!
ステップ1:依存関係で何かが壊れている場合の修正を試みる:
$ Sudo apt-get -f install
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
python-distlib
The following NEW packages will be installed:
python-distlib
0 upgraded, 1 newly installed, 0 to remove and 13 not upgraded.
9 not fully installed or removed.
Need to get 0 B/2,120 kB of archives.
After this operation, 559 kB of additional disk space will be used.
Do you want to continue? [Y/n]
dpkg: error processing package dpkg (--configure):
package is in a very bad inconsistent state; you should
reinstall it before attempting configuration
Errors were encountered while processing:
dpkg
E: Sub-process /usr/bin/dpkg returned an error code (1)
Step2:dpkgの回復を提案しました。
$ Sudo apt-get install dpkg
Reading package lists... Done
Building dependency tree
Reading state information... Done
dpkg is already the newest version.
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
python-pip : Depends: python-distlib but it is not going to be installed
Recommends: python-dev-all (>= 2.6) but it is not installable
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
ステップ3:ステップ1を繰り返します-同じ結果が得られます
ステップ4:dpkgを強制的に再インストールしてみる
$ Sudo apt-get install --reinstall dpkg
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
python-pip : Depends: python-distlib but it is not going to be installed
Recommends: python-dev-all (>= 2.6) but it is not installable
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Step5:OK OKこの厄介なpython-distlibを最初にインストールする必要があります...
$ Sudo apt-get install --reinstall python-distlib
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
python-distlib
0 upgraded, 1 newly installed, 0 to remove and 13 not upgraded.
9 not fully installed or removed.
Need to get 0 B/2,120 kB of archives.
After this operation, 559 kB of additional disk space will be used.
dpkg: error processing package dpkg (--configure):
package is in a very bad inconsistent state; you should
reinstall it before attempting configuration
Errors were encountered while processing:
dpkg
E: Sub-process /usr/bin/dpkg returned an error code (1)
ステップ6:今、私は非常に悪い状態です。推奨されるのは、ステップ2、3、および4で試したdpkgシステムの(再)インストールです(結果はイライラします)
今何ができますか?
/ var/lib/dpkg/statusへのハッキングを試み、リポジトリリスト/ etc/aptを再作成しようとしました。次からコンパイルすることにより、Python 12、14および15の代替インストールを試みました。公式pythonソース(何も助けなかったので、12のままにしました)。
実際、修正が必要な壊れたパッケージが他にもあることは知っています(例にはリストされていません)。ある瞬間、システムが非常に壊れたため、グラフィカル環境を失い、端末で作業しなければなりませんでした(幸いなことに、lin-unixはウィンドウやosxのようなグラフィックスに依存していません)。少なくともグラフィカルモードに戻るには、Unity-Desktopを再インストールする必要がありました(壊れたpythonは影響力が大きかったため、ubuntuのグラフィカルUIの依存関係でも簡単に取り消されました)
最後の手段は、CDからUbuntuの同じバージョンまたは新しいバージョン(14.04またはubuntu 16)をインストールすることです。いくつかのテストを終了したいので、この特定のハードウェアでうまく動作するため、14のままにしておきます。
最後に-質問:
代替パッケージのインストールシステムを使用したり、一部のパッケージを取得/ダウンロードしたり、最終的に手動でコンパイルおよび/またはインストールしたりすることで、パッケージシステムを合理的に機能する状態に回復することができます。
私は修正する必要があります:
後世では、2018年7月です。
すべてのヒントを歓迎します。現在よりも事態を悪化させることはほとんどできません。
編集1:
Python 2.7を2.xの最新バージョンに更新 に関連している可能性が高いppa jonathoffを発見しました
ppaリポジトリから2.7.12が自動的に取得される可能性があります。このPPAをレポのリストに追加したときのことは思い出せませんが、このレシピを使用したことを覚えています。
現在、python27
パッケージファイルを取得できない理由について確立しようとしています。
編集2:
はい。これは現在私の仕事の理論です:
https://launchpad.net/~jonathonf ppaをリストに追加しました。やがて、システムpythonを2.6から2.7に移動しました。 py 2.7.12までは問題ありませんでした。 python27が2.7.14に移行すると、問題が発生しました。
pythonバージョンが移動したことに気づくでしょうが、これは通常のUbuntuのアップグレードだと思いました。
今、Jonのプロジェクトを調べると、現在のpython2.7が実際には2.7.14であることがわかります(ubuntu 16向けの彼のページによると、おそらく https://launchpad.net/~jonathonf/ + archive/ubuntu/python-2.7 )python27が私にとって機能していない場合、このバージョン。
私は2.7.12をソースからビルドして自分でインストールすることで問題を解決しようとしたと思いますが、そのバージョンはそれ自体と同じくらい良いです、それはユーザー/プログラミング用に作られており、システムのubuntuバージョンとは異なりますpython(ここには微妙な違いがありますが、他で読んだことがありますが、これが機能することを願っています。機能しませんでした。絶望的な時期には必死の対策が必要ですが、それは悪い選択でした).
元のubuntuアーカイブシステムでは、Ubuntu14のpythonはまだ2.7.6であると予想されるため、ubuntuリリースアーカイブでpython27を見つけようとしても、見つからない可能性があります。 (誰かがこれについて間違っていることを証明し、異なるリビジョンでpython27を入手できる場所を教えてください)
ここで質問は、このppaの以前のアーカイブを見つけて、pythonを作業バージョンに復活させることです。
私にとってaptでうまく機能した最後のバージョンは2.7.12でした。
問題は、その特定のアーカイブをどこで入手するかです。時間内に失われない場合。
dpkg
を手動で修復することができます(ダウンロードしてファイルシステムに抽出します)。
wget http://mirrors.kernel.org/ubuntu/pool/main/d/dpkg/dpkg_1.17.5ubuntu5.8_AMD64.deb
ar x dpkg_1.17.5ubuntu5.8_AMD64.deb
Sudo tar -xvf data.tar.gz -C /
その後、再インストールします。
Sudo apt-get install dpkg --reinstall
ローカルPythonを削除するには
Sudo rm /usr/local/bin/python*
Python関連のPPAを削除します。
Sudo ppa-purge ppa:jonathonf/python-2.7
リポジトリから通常のpythonをインストールします
Sudo apt-get install --reinstall libpython-stdlib python-minimal python2.7 \
python-apt python-distlib libpython2.7-minimal libpython2.7-stdlib
システム全体を修正します。
Sudo apt-get install -f
Sudo dpkg --configure -a
最終段階で、apt-get
およびdebsums
を使用してシステムの整合性を確認します。
Sudo apt-get check
# debsums
Sudo apt-get install debsums
Sudo debsums_init
Sudo debsums --changed --silent
# afterwards reinstall listed packages with
# Sudo apt-get install --reinstall package-name