Permissões de arquivo ao instalar um módulo python

2

Eu gostaria de instalar sphinx-doc das fontes, então eu git clone o módulo então instalei com sudo python setup.py install .

Using /usr/local/lib/python2.7/dist-packages/pytz-2016.4-py2.7.egg
Searching for MarkupSafe==0.23
Best match: MarkupSafe 0.23
Removing MarkupSafe 0.18 from easy-install.pth file
Adding MarkupSafe 0.23 to easy-install.pth file

Using /usr/local/lib/python2.7/dist-packages
Finished processing dependencies for Sphinx==1.4b1.dev-20160423

Então percebi que não tenho permissão para usá-lo:

$ sphinx-quickstart
bash: /usr/local/bin/sphinx-quickstart: Permission denied
$ ls -al /usr/local/bin/sphinx-quickstart 
-rwxr-x--- 1 root root 357 Apr 23 16:56 /usr/local/bin/sphinx-quickstart

A questão é, como instalá-lo com as permissões corretas?

Muitas vezes tenho esse tipo de problema quando preciso usar sudo para criar uma pasta ou montar uma unidade em / media. Isso é um pouco fora do tópico, mas /media é 755 e, como usuário comum, não consigo montar minhas próprias unidades no meu próprio computador sem ser root . Isso é normal?

    
por nowox 23.04.2016 / 17:04

1 resposta

3

Se você deseja instalar pacotes Python a partir do código-fonte, você deve fazê-lo em um virtualenv. Dessa forma, você minimiza a chance de quebrar o python do seu sistema e torna possível apenas remover o pacote instalado sem medo de remover muito.

Para fazer isso, você deve primeiro instalar o virtualenv, por exemplo, usando

 sudo apt-get install python-virtualenv

depois que ele estiver instalado, crie um virtualenv em algum lugar e ative-o:

 sudo mkdir /opt/util
 sudo chown $USER /opt/util
 virtualenv /opt/util/sphinx-doc
 source /opt/util/sphinx-doc/bin/activate

depois disso, execute o seu

 python setup.py install

no diretório git cloned, você não precisa usar sudo .

Desde que o virtualenv esteja ativo, você deve ser capaz de executar sphinx-doc ou qualquer (outros) utilitários que o python setup.py install crie. Você também pode executá-los quando o virtualenv não estiver ativo usando /opt/util/sphinx-doc/bin/<UTILNAME> (para o qual você pode querer criar um alias).

/opt/util/sphinx-doc pode ser alterado para o que você quiser. Mas se você colocar esses virtualenvs próximos uns dos outros, você pode facilmente criar algum script para atualização automática de qualquer pip de pacotes instalados, para definir aliases, etc.

    
por 23.04.2016 / 17:26