cpan / perl desarrumada

2

Lubuntu Xenial. Eu pareço ter estragado o meu sistema perl. cpan retorna:

bash: /usr/local/bin/cpan: no such file or directory

(Eu criei uma nova versão do perl a partir do código-fonte nesse diretório, mas removi-a novamente).

apt-get install perl --reinstall

pareceu fazer a coisa certa, mas não resolveu o problema. Eu não ouso depurar o perl primeiro e reinstalá-lo, já que o apt pode depender dele.

O que posso fazer?

    
por Kris Van Bruwaene 23.11.2017 / 12:50

1 resposta

0

TL; DR: Executar hash -r ou apenas iniciar um novo shell geralmente corrige esse problema.

Se o arquivo está realmente acabado, então o shell provavelmente ainda está com hash.

Primeiro, sugiro que você verifique se /usr/local/bin/cpan desapareceu:

ls -l /usr/local/bin/cpan

Se houver algo lá, você não desinstalará completamente. Se não houver nada lá, você receberá esta mensagem:

ls: cannot access '/usr/local/bin/cpan': No such file or directory

Supondo que você recebeu essa mensagem, mas bash está tentando executar /usr/local/bin/cpan quando você digita cpan e pressiona Enter , o problema é mais provável que bash ainda tem esse caminho hash . Em vez de pesquisar onde os comandos externos estão sempre, os shells normalmente dividem seus locais. Assim, você pode corrigir o problema informando bash para "rehash" executando:

hash -r

Ou inicie um novo shell.

Se isso não funcionar, verifique se é uma função de alias ou shell.

Se o arquivo ainda não estiver presente ou ainda estiver com hash, é provável que cpan seja um alias ou função shell que atue como um wrapper para /usr/local/bin/cpan . Para verificar isso, execute:

type -a cpan

Se for uma função de alias ou shell, isso mostrará a definição. Então você pode desanexá-lo com unalias cpan se for um alias ou unset -f cpan se for uma função shell.

Por fim, você desejará remover a definição de qualquer script de inicialização que a contenha. Geralmente, ele estará no arquivo .bashrc em seu diretório inicial. Os aliases são às vezes definidos em .bash_aliases . (Ocasionalmente, as pessoas definem aliases e funções de shell em .profile , .bash_profile ou .bash_login , embora essa não seja uma prática muito boa.)

Se isso não funcionar, pense em como você está executando cpan ou em qual shell você está.

Se o arquivo sumiu, ainda não foi hash, não é um alias ou função shell, e type -a não revela o problema , então provavelmente você está (a) não executando cpan diretamente por meio desse comando ou (b) usando um shell diferente de bash . No primeiro caso, não há como responder sem mais detalhes.

O último caso parece improvável, já que seu shell chama a si mesmo bash , embora de vez em quando alguém faça um symlink chamado bash para um shell que não é (o que não é aconselhável). A verdade é que estou mencionando principalmente isso para o benefício de outros leitores. Com base nessa mensagem, você está quase certamente usando bash .

No entanto, caso você não seja ou não seja, execute echo "$BASH_VERSION" para ver se você está executando bash - isso deve ser definido em outros shells - e echo "$SHELL" para ver o que é seu < em> padrão shell é. Rehashing funciona de forma diferente - ou é pelo menos alcançado de forma diferente - em outros shells.

Alguns outros shells do estilo Bourne, como zsh , têm um comando rehash que você executaria em vez de hash -r . Também é assim que você faria com que ocorria novamente em csh e tcsh .

    
por Eliah Kagan 23.11.2017 / 13:10