Por que não posso executar programas extraídos de um arquivo?

2

Tendo baixado os arquivos do Sage, Firefox, e Thunderbird de seus respectivos sites no Trisquel 6.0, nem clicar no script de shell apropriado nem executar um comando para executar os programas irá abri-los. Olhando para as permissões dos arquivos, elas são realmente executáveis.

Editar : Firefox e Thunderbird agora começaram a funcionar misteriosamente; Sage, no entanto, permanece inoperante. Depois de baixá-lo do primeiro link em esta página , extraí-lo para minha área de trabalho (onde Firefox e Thunderbird rodam muito bem), abri a pasta no terminal e execute o comando "sage" (como existe um executável por esse nome na pasta) recebo o erro: bash: sage: command not found . Ainda ls -l mostra que os arquivos são conhecidos como existentes e são executáveis.

Editar # 2 : Eu só pensava que o Firefox e o Thunderbird estavam funcionando. Eu estava realmente executando as versões que eu já instalei. Rodar o Firefox e / ou o Thunderbird com ./[executable] dá o erro libxul.so: cannot open shared object file: No such file or directory Couldn't load XPCOM.

    
por Lee Sleek 12.06.2013 / 20:01

2 respostas

5

A primeira coisa a verificar depois de extrair um programa de um arquivo é as permissões ( chmod a+x ./sage ), mas se esse era o problema, a mensagem de erro seria "permissão negada" e não "comando não encontrado".

Dê sua descrição "abriu a pasta no terminal e execute o comando", é provável que você tenha executado o comando sage esperando executar o programa com este nome no diretório atual. O Unix não funciona assim: o shell só procura por programas nos diretórios listados na PATH variável de ambiente. Ele não pesquisa o diretório atual implicitamente primeiro. Para executar um programa no diretório atual, você precisa digitar seu caminho:

./sage

Se você quiser executar o programa sem especificar um caminho, será necessário instalá-lo em um diretório em $PATH (geralmente /usr/local/bin ou ~/bin ). Geralmente é conveniente deixar o executável com os outros arquivos do aplicativo e criar um link simbólico em um diretório em $PATH :

ln -s /path/to/sage-5.9/sage ~/bin/

ou se você já estiver no diretório que contém o sage binary:

ln -s $PWD/sage ~/bin/

Se você acabou de adicionar um programa a um diretório em seu PATH e seu shell ainda reclamar que o comando não foi encontrado, pode ser porque você tentou antes e seu shell manteve as informações "não encontradas" em um cache . Execute hash -r para reconstruir o cache e tente novamente. Da próxima vez que você iniciar um shell, isso não será mais um problema, porque o cache não é salvo entre as execuções do shell.

Se você executar um arquivo que esteja presente, com um caminho especificado, e receber a mensagem de erro "comando não encontrado", talvez seja porque você não tem o carregador correto . Isso pode acontecer se você baixou um binário que é suportado pelo seu processador e kernel, mas você não tem o suporte requerido para a userland (nenhuma biblioteca). Isso também pode acontecer se o programa for um script cuja linha shebang se refere a um intérprete que não está presente seu sistema (embora os shells típicos forneçam uma mensagem de "intérprete incorreto" em vez de "comando não encontrado" neste caso).

    
por 13.06.2013 / 01:48
0

Por favor, verifique os bits de permissão nos executáveis. Verifique também se os executáveis estão contidos em um diretório que esteja no seu PATH .

    
por 13.06.2013 / 00:50