Por que este programa foi instalado em ~ / .local / bin… foi a primeira vez que vi isso acontecer?

4

Por que esse programa foi instalado em ~/.local/bin ... foi a primeira vez que vi isso acontecer?

Quando eu instalo este programa "Taurus Blazemeter 'bzt'", ele acaba sendo instalado na pasta ~/.local/bin . Eu nunca vi isso acontecer com qualquer instalador antes. Alguém sabe para que serve essa pasta ~/.local e por que um programa em Python como esse seria instalado lá?

Quando instalei, criei a pasta: ~/bzt e, a partir dessa pasta, executei estes comandos:

sudo apt-get install python default-jre-headless python-tk python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
sudo pip install bzt
    
por djangofan 01.11.2015 / 00:51

1 resposta

0

A resposta curta é que ~/.local/bin é o valor padrão do Diretório de Scripts de Usuário do Python e que pip pode instalar executáveis nesse diretório se executar uma instalação local do usuário. Ele também pode instalar arquivos em outros subdiretórios de ~/.local , que é o valor padrão do Diretório base do usuário. Mais detalhes abaixo.

Não tenho certeza se essa é sua primeira introdução, mas o diretório ~/.local aparece na especificação de hierarquia do sistema de arquivos do sistema init systemd , onde ele define vários subdiretórios de ~/.local :

~/.local/bin

Executables that shall appear in the user's $PATH search path. It is recommended not to place executables in this directory that are not useful for invocation from a shell; these should be placed in a subdirectory of ~/.local/lib instead. Care should be taken when placing architecture-dependent binaries in this place, which might be problematic if the home directory is shared between multiple hosts with different architectures.

~/.local/lib

Static, private vendor data that is compatible with all architectures.

~/.local/lib/arch-id

Location for placing public dynamic libraries. The architecture identifier to use is defined on Multiarch Architecture Specifiers (Tuples) list.

~/.local/share

Resources shared between multiple packages, such as fonts or artwork. Usually, the precise location and format of files stored below this directory is subject to specifications that ensure interoperability. If an application finds $XDG_DATA_HOME set, it should use the directory specified in it instead of this directory.

A adoção do diretório ~/.local pelo Python parece ter sido introduzida no Python 2.6 e está documentada em PEP (Python Enhancement Proposal) 370:

A especificação inclui as seguintes definições para sistemas Unix (incluindo o Mac OS X).

  • Diretório base do usuário

    ~/.local

  • Diretório de script de usuário:

    ~/.local/bin

  • Diretório de sites do usuário:

    ~/.local/lib/python2.6/site-packages

  • Diretório de dados do usuário:

    ~/.local/lib/python2.6

A partir disso, podemos concluir que o Python tem o conceito de um "Diretório de Usuários Base" e que seu valor padrão é ~/.local . O Diretório de Usuários Base é discutido na documentação do Python para o módulo site . Em particular, ele fornece métodos para determinar os valores do seu Diretório base do usuário e do Diretório de sites do usuário, os sinalizadores --user-base e --user-site options. Você poderia usá-los assim:

user@host:~$ python -m site --user-base

/home/user/.local

user@host:~$ python -m site --user-site

/home/user/.local/lib/python2.7/site-packages

Há várias perguntas postadas nos sites do StackExchange relacionadas ao diretório ~/.local , que usei como referências:

por 25.11.2017 / 20:47

Tags