奇妙なコピーなどで修正する方法をみんなが言っているのを見ますが、なぜ問題が発生するのか実際には誰も言いませんでした。
それで、私が好きな人のために、SOの誰かがそう言ったという理由だけでシステムファイルをいじりたくないという人のために説明させてください。
問題はそれです:
- 多くのシステムスクリプトには、python3シバンがハードコードされています。あなたはそれを自分でチェックすることができます:
~$ grep -R "\#\!/usr/bin/python3" /usr/lib/*
/usr/lib/cnf-update-db:#!/usr/bin/python3
/usr/lib/command-not-found:#!/usr/bin/python3
/usr/lib/cups/filter/pstotiff:#!/usr/bin/python3
/usr/lib/cups/filter/rastertosag-gdi:#!/usr/bin/python3 -u
grep: /usr/lib/cups/backend/cups-brf: Permission denied
/usr/lib/cups/backend/hpfax:#!/usr/bin/python3
/usr/lib/language-selector/ls-dbus-backend:#!/usr/bin/python3
/usr/lib/python3/dist-packages/language_support_pkgs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/installdriver.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/openprinting.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/xmldriverprefs.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/smburi.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/ppds.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/cupshelpers/debug.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/DistUpgrade/dist-upgrade.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/creator.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/CommandNotFound/db/db.py:#!/usr/bin/python3
/usr/lib/python3/dist-packages/Quirks/quirkreader.py:#!/usr/bin/python3
grep: /usr/lib/ssl/private: Permission denied
/usr/lib/system-service/system-service-d:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release-gtk:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/do-partial-upgrade:#!/usr/bin/python3
/usr/lib/ubuntu-release-upgrader/check-new-release:#!/usr/bin/python3
/usr/lib/update-notifier/package-data-downloader:#!/usr/bin/python3
/usr/lib/update-notifier/backend_helper.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt_check.py:#!/usr/bin/python3
/usr/lib/update-notifier/apt-check:#!/usr/bin/python3
- python apt package
python-apt
/python3-apt
はシステムパッケージなので、デフォルトのシステムpython用です
したがって、スクリプトは常に現在リンクされているバージョンを取得しpython3
ますが、aptパッケージが存在しないため失敗します。
一般的な解決策:デフォルトpython3
のリンクは絶対に変更しないでください。これまで。これはpython
リンクにも当てはまります。アプリがPython3で機能しない古い構文要素を使用してPython2で記述されている場合、そのアプリは機能しません。
[ターミネーターを使用しているため、端末がそのように壊れました。ターミネーターは、Python3と互換性のないPython2.7で記述されているようです。]
ここで紹介する解決策は、aptパッケージファイルをコピー/リンクするか、python3
リンクを変更することを提案します。
両方を分析してみましょう:
- aptパッケージのコピー/リンク
Python3.4前後から、すべてのPythonスクリプトが新しいバージョンでも機能するため、これは問題にはなりません。
ここのところ。ただし、システムを十分に長く保つと、将来的に機能しなくなる可能性があります。
- リンク
python3
を元に戻す
「リンクを変更しない」に戻ることができるため、これは優れたソリューションです。
「でも、タイプするだけでいいのpython
!」- 私も好きです!そもそもこうしてこの問題にたどり着きました!
一般に、システムリンクを手動で変更することは避けてください。update-alternatives
代わりに、異なるバージョンをリンクするために使用してください。これは、多くのバージョンを持つすべてのアプリに適用されます。これでもこれらのシステムスクリプトは壊れますが(リンクが変更されるため)、リンクと宛先を正しい順序に配置するか、タイプミスをするかを気にすることなく、簡単に切り替えることができます。
リンクまたはエイリアスにpython
/以外の名前を使用することを検討してください。python3
または、システムリンクを変更せずに、(仮想環境と同じように)独自のpython
/リンクをPATHに追加します。python3