apt-get não pode detectar a versão correta do python ao usar update-alternatives para python

2

Eu instalei diferentes versões do python no meu Linux Mint DE. Eu usei a instrução update-alternatives --set para alternar facilmente entre as diferentes versões.

Infelizmente, às vezes, apt-get install ou upgrade ou algo semelhante tem problemas em reconhecer o caminho correto do python. Parece querer usar python2.7, embora eu tenha definido a alternativa correta. Eu acho que apt-get não pode descobrir que /usr/bin/python aponta para /etc/alternatives/python e isso para /usr/bin/python2.7 .

Se eu criar manualmente um link simbólico diretamente de /usr/bin/python para /usr/bin/python2.7 apt-get , acabará sem um erro.

Como posso usar a opção alternatives para que apt-get possa detectar e usar corretamente a versão configurada do python?

    
por user42280 02.07.2013 / 16:14

1 resposta

2

Estou a pensar que este problema pode ter algo a ver com o modo como o shell (Bash) hashes os caminhos para executáveis quando são chamados.

trecho da página man do bash

Bash uses a hash table to remember the full pathnames of executable files (see hash under SHELL BUILTIN COMMANDS below). A full search of the directories in PATH is performed only if the command is not found in the hash table.

Você pode interrogar o hash usando o comando hash da seguinte forma:

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

Você pode fazer com que o hash "esqueça" tudo com a opção -r :

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

Eu tentaria executar um hash -r antes de executar apt-get para ver se isso resolve o problema.

Além disso, dou uma olhada na saída de update-alternatives --query <command> para ter certeza de que ela contém os valores que você acha que deveria. Aqui está o meu para java apenas para um exemplo:

$ 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
    
por 03.07.2013 / 16:28