Pythonのアップデート代替を使用すると、apt-getは正しいPythonバージョンを検出できません。

Pythonのアップデート代替を使用すると、apt-getは正しいPythonバージョンを検出できません。

私のLinux Mint DEに別のPythonバージョンがインストールされています。私はこのupdate-alternatives --setステートメントを使用して他のバージョン間で簡単に切り替えます。

残念ながら、時には正しいPythonパスを識別するのに問題があるかもしれませんapt-get installupgrade正しい代替設定がありますが、python2.7を使用したいようです。それが何を指しているのか、何を指しているのかをapt-get理解する方法がないと思います。/usr/bin/python/etc/alternatives/python/usr/bin/python2.7

/usr/bin/python完了から直接シンボリックリンクを手動で作成すると、/usr/bin/python2.7 apt-getエラーは発生しません。

apt-getオーバーライドオプションを使用して設定されたPythonバージョンを正しく検出して使用するにはどうすればよいですか?

ベストアンサー1

問題は、シェルが実行可能ファイルを呼び出すときにパスをハッシュする方法に関連している可能性があると思います。

から抜粋バッシュのマニュアルページ

Bashは、実行可能ファイルのフルパス名を記憶するためにハッシュテーブルを使用します(以下のSHELL BUILTIN COMMANDSの下のハッシュを参照)。ハッシュテーブルでコマンドが見つからない場合にのみ、PATHのディレクトリ全体の検索が行われます。

hash次のコマンドを使用してハッシュを要求できます。

$ hash -l
builtin hash -p /usr/sbin/update-alternatives update-alternatives
builtin hash -p /usr/bin/man man
builtin hash -p /bin/ls ls

スイッチを使用すると、ハッシュがすべてを「忘れる」ことができます-r

$ hash -r
manny@manny:~$ hash -l
hash: hash table empty

hash -rこのプログラムを実行する前にapt-get問題が解決するかどうかを確認するために実行してみましょう。

また、出力を見て、update-alternatives --query <command>あなたが考える値が含まれていることを確認します。私のjava例は次のとおりです。

$ update-alternatives --query java
Name: java
Link: /usr/bin/java
Slaves:
 java.1.gz /usr/share/man/man1/java.1.gz
Status: auto
Best: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Value: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

Alternative: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
Priority: 1071
Slaves:
 java.1.gz /usr/lib/jvm/java-7-openjdk-amd64/jre/man/man1/java.1.gz

おすすめ記事