O Ubuntu não pode encontrar um arquivo executável em ~ / .local / bin

9
after installation with

pip3 install --user steem-piston
you will get a new executable piston installed in ~/.local/bin

Eu instalei a ferramenta usando a instalação do pip, mas não consigo encontrar o arquivo executável.

Não tenho certeza se entendi o que este diretório é: ~ / .local / bin.

É apenas root / local / bin?

    
por TabulaSmaragdina 16.07.2016 / 13:25

3 respostas

9

~/ é uma abreviação de shell para sua pasta pessoal, geralmente /home/USERNAME/ , em que USERNAME é o nome do usuário. É o mesmo que $HOME

~/.local/bin é uma subpasta denominada bin na subpasta denominada .local em sua pasta pessoal.

Você pode usar

~/.local/bin/pip3

para chamar seu novo executável pip3 . Pode ser mais fácil adicionar ~/.local/bin à variável de ambiente $PATH , consulte Como adicionar um diretório ao meu caminho? para que você não precise digitar ~/.local/bin/ o tempo todo.

Certifique-se de adicioná-lo antes do valor antigo de $PATH , como

PATH="$HOME/.local/bin/:$PATH"
    
por Florian Diesch 16.07.2016 / 13:40
5

~/.local/bin foi adicionado ao PATH no Ubuntu 16.10 e backportado para 16.04. Consulte o link

Se você estiver executando o Ubuntu > = 16.04 com todas as atualizações, ele já deve estar bem. Caso contrário, você pode adicioná-lo manualmente:

Para um único usuário, edite o arquivo ~/.profile e adicione no final:

PATH="$HOME/.local/bin:$PATH"

Se você quiser que algum usuário recém-criado tenha isso, adicione essa mesma linha ao final de /etc/skel/.profile

    
por Mossroy 24.04.2017 / 19:52
0

Eu estava fazendo isso hoje, parece que a documentação clara é escassa para pessoas que querem manter algum controle sobre o que está instalado e onde.

Supondo que você tenha executado o pip3 install whatever, o padrão é colocar as coisas em ~ / .local, como você sabe. É costume no Unix dividir os tipos de arquivos, colocar os "executáveis" em ~ / .local / bin.

Em um terminal, digite isso para ver seu caminho agora:

$ echo $PATH

Verifique se você tem o material python instalado em ~ / .local

$ ls -la ~/.local/bin

Isso confirma que os arquivos executáveis estão lá ou são para mim. Se essas permissões de arquivo mostrarem "x", elas serão executáveis.

Agora, adicione esse diretório ao caminho dentro do terminal

$ export PATH=~/.local/bin:$PATH

Verifique seu caminho novamente para ver a alteração. Por favor, lembre-se que é uma configuração temporária apenas para aquela sessão de terminal. Não se aplica a outros terminais ao mesmo tempo ou no futuro. É um bom lugar para testar as coisas.

Depois disso, todos os executáveis do programa dentro de ~ / .local / bin devem ser executados se você digitar seu nome na linha de comando. Não há necessidade de executar "~ / .local / bin / jupyter", por exemplo. Apenas digite "jupyter". Não há necessidade do "./" que você vê algumas vezes, é quando você inicia um programa a partir do diretório de trabalho que não está no caminho.

Se mais tarde você decidir que quer tornar essa permanente, de modo que ~ / .local / bin esteja sempre em seu PATH, você pode fazer isso editando alguns arquivos de configuração do ambiente. Dependendo da sua configuração, por exemplo, no arquivo ".bashrc" da minha pasta pessoal, a última linha é "export PATH = $ PATH: $ HOME / bin". Então eu poderia colocar $ HOME / local / bin na frente disso. Note que eu escrevi $ HOME, não "~" lá dentro. Então, toda vez que eu usar um shell BASH, o PATH seria corrigido. Se você puder usar outros shells, acho que a coisa certa é editar o arquivo ~ / .profile. Eu acho que todas as shells no Ubuntu irão fornecer esse arquivo.

No meu caso, instalei vários programas com o pip3, como o jupyter. Uma maneira de ter certeza de onde isso foi instalado é rodar

$ pip3 list

mostra todos os pacotes disponíveis, não apenas aqueles instalados pelo pip3.

$ pip3 show jupyter

No meu caso, por exemplo:

---
Metadata-Version: 2.0
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: [email protected]
Installer: pip
License: BSD
Location: /home/pauljohn/.local/lib/python3.5/site-packages
Requires: nbconvert, ipykernel, ipywidgets, notebook, jupyter-console, qtconsole
Classifiers:
  Intended Audience :: Developers
  Intended Audience :: System Administrators
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

Eu não quero que isso soe como uma chama, mas pode parecer um ataque. Eu avisá-lo para não seguir avidamente o conselho que algumas pessoas aqui vão oferecer, para executar "sudo pip3 xxx". Geralmente, você preferiria executar instalações de raiz apenas com pacotes Debian, não com pip3. Se você executar sem o sudo, estará limitando o perigo à conta do usuário. Se você goof enquanto estiver executando um script como root, você pode espalhar arquivos em todo o seu disco rígido e se arrepender. Especialmente se outras pessoas fizerem login e usarem esse computador, evite fazer qualquer coisa como raiz, a menos que você esteja confiante.

Também vale a pena notar que o padrão pip3 é instalar em ~ / .local, mas isso não é necessário. Leia "man pip3", procure por "-t" (--target). Você pode especificar o diretório de instalação. Eu acho que é legal porque você pode limitar qualquer dano a outro diretório e deletá-lo quando quiser. ~ / .local pode ter outras coisas valiosas nele instaladas por outros programas e você preferiria não obliterá-las. Eu penso em ~ / .local como um lugar mais para configurações do que programas de qualquer maneira.

    
por pauljohn32 31.08.2016 / 07:07