最新のPython 3.5をダウンロードしてコンパイルし、checkinstallでインストールしました。今、私は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).
しかし、2.7.9を含むpythonはまだインストールされています。
$ 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
インストールしたパッケージを削除するか、python3がインストールされていないことを確認して依存関係を修正するにはどうすればよいですか?
また、python3.4はまだ/usr/bin/python3
にあります
編集:apt-get -f install
を実行したいのですが、大量のものを削除しているので、それを修正する正しい方法ではないと思います。
良かった、それを修正できた。 ubuntuを再インストールする必要があるのではないかと心配しました。
行って手動で/var/lib/dpkg/status
を編集し、checkinstall
によって作成されたエントリを削除しました。
それが削除されたら、/usr/local/bin
に移動し、python 3.5をすべて削除しました。また、python3-4がまだ/usr/bin/
にあることを確認しました。それからSudo dpkg-reconfigure -a
を実行し、最後にapt-get -f install
を実行しましたが、「欠落」していたのはpythonだけでした。
それからREADMEの指示に従って正しい方法でインストールし、python3.4へのシンボリックリンクを削除してpython3.5への新しいシンボリックリンクを作成しました。
python3.4をcheckinstall
でインストールした後、同じ問題が発生しました(electrometro
のpython3.5の代わりに)
この問題が最初に発生した理由を発見しました。
Python3.4ソースからcheckinstall
を使用して.debファイルを作成してからインストールする場合、checkinstallによって設定されるデフォルトのパッケージ名は "python」。
結果として、checkinstall
を使用して新しいパッケージをインストールする前に、dpkg
という名前のパッケージをpythonアンインストールします!!このパッケージはすでにUbuntuに存在します。基本的にpython2にリンクされています!何らかの理由で、dpkg
が、インストールしているpythonのバージョン、つまり私の場合はpython3.4を削除しようとすると思うが、失敗する。 python2がまだインストールされているのはこのためです。しかし、dpkg
は、「python」パッケージが削除され、インストールされた新しいパッケージ(python3.4)に置き換えられたとまだ信じています。ファイル/ var/lib/dpkg/statusは、それに応じて編集されています。私の場合、このインストールに関連する更新は次のとおりです。
パッケージ:python
ステータス:deinstallok installed
優先度:追加
セクション:checkinstall
インストール済みサイズ:167520
メンテナー:root @ laptop
アーキテクチャ:AMD64
バージョン:3.4.3-1
提供:python
説明:checkinstall 1.6.2`で作成されたパッケージ
太字で示すように、パッケージ名は「python」であり、パッケージは「deinstall」をインストールしてからをインストールします。
したがって、dpkg
は、「python(python2!)」はもう存在しないと考え、apt-get -f install
!を呼び出すときに、それに依存するすべてのものを削除することをお勧めします。
Checkinstallを使用するときは、単に別の「パッケージ」名と「提供」名を選択してください!たとえば、両方のpython3.4-checkinstall。
この混乱を解決するために、electrometro
が推奨するように、インストールされているすべてのバイナリを手動で削除する必要がないようにするソリューションがあります。
次の手順を実行します:
/var/lib/dpkg/status
のパッケージ名python
をpython
からpython-3.4-checkinstall
に手動で編集します。注意してください。新しい名前はすでに使用されていてはなりません!また、「Provides」を新しい名前に変更します。Sudo dpkg-reconfigure python-3.4-checkinstall
を使用します。 (注:推奨されるelectrometro
としてのdpkg-reconfigure -a
は、Ubuntu 16.04にはもう存在しません。とにかく必要ありません)。python
パッケージを再度インストールするapt-get -f install
を実行します!この時点でここで停止できますが、Sudo dpkg-query -L python3.4-checkinstall
を試しても、dpkgはどのファイルがインストールされたかを知りません!!!ファイル/var/lib/dpkg/info/python3.4-checkinstall.listが存在しないためです!ファイル/var/lib/dpkg/info/python.listは、apt-get -f install
によってオーバーライドされています。 dpkg
の詳細については、 Debianドキュメンテーション を参照してください。この問題を解決するには、手順4を実行する必要があります。以上です!すべてがきれいになりました。私は実際にステップ2の前にステップ3を実行しましたが、この方法で実行する方がきれいです。
詳細については、checkinstallを使用してソースパッケージからpython3.4をインストールするために使用した手順は次のとおりです。
./configure
を実行します。make
を実行しますSudo checkinstall
を実行しますそれが役に立てば幸い!
乾杯、ニコラス