LINUX.ORG.RU

Установка pyenv и стеснительный bash

 , ,


0

2

Здравствуйте.
Я бегу Ubuntu 14.04 LTS.
Хочу иметь возможность содержать много разных питонов у себя на несистемном ntfs-разделе (называется Data). На сколько я понимаю, проблему удобства манипуляции проектами на python решает virtualenv и virtualenvwrapper. Также они дают возможность удобно хранить это всё как раз на несистемном диске, да и вообще, где угодно. Задачу установки питона любой пароды и версии где угодно — решает pyenv.
В чём собсвтенно проблема: после установки pyenv на мою Data, при попытке оболочкой исполнить бинайрный файл pyenv bash говорит, что у него нет прав на это.
Перед тем как сюда писать, я достаточно много порылся в инете, особенно на stackoverflow.com (на рунет я вообще забил). Но потом, мне посоветовали написать сюда.
В чём собственно задача: возможность содержать питонистый lamp со всеми проектами у себя на несистемном разделе; чтобы всё файлы непосредственно продукта, который я разрабатываю, хранились на несистемном разделе, и минимизировать настройку доступа программами к этим файлам при переустановке Ubuntu.

Итак, в результате усвоения прочитанной мной информации о том, как может решатся эта проблема, я предпринимал следующие действия:

1. Устанавливаю свежую Ubuntu 14.04 LTS
2. Подключаю свой раздел Data через рута с масками 0000 для файлов и для директорий

$ sudo mkdir --mode=777 -p '/media/kukubuntu/Data'
$ sudo mount -o auto,user,fmask=0000,dmask=0000 /dev/sda2 '/media/kukubuntu/Data'


3. Устанавливаю пакет python-pip

$ sudo apt-get install python-pip


4. Устанавливаю с пом. него virtualenvwrapper

$ sudo pip install virtualenvwrapper


5. Настраиваю virtualenvwrapper в файле .bashrc

$ echo '' >> ~/.bashrc
$ echo '# virtualenvwrapper' >> ~/.bashrc
$ echo 'export WORKON_HOME=/media/kukubuntu/Data/prfiles/virtualenvwrapper/.virtualenvs' >> ~/.bashrc
$ echo 'export PROJECT_HOME=/media/kukubuntu/Data/prfiles/virtualenvwrapper/vwrapperhome' >> ~/.bashrc
$ echo 'source /usr/local/bin/virtualenvwrapper.sh' >> ~/.bashrc
$ echo '' >> ~/.bashrc
$ source ~/.bashrc
$ exec $SHELL


6. Устанавливаю git и необходимые для него пакеты

$ sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
$ sudo apt-get install git


7. Устанавливаю pyenv на Data

~$ cd '/media/kukubuntu/Data/prfiles/pyenv'
/media/kukubuntu/Data/prfiles/pyenv$ git clone git://github.com/yyuu/pyenv.git .pyenv
/media/kukubuntu/Data/prfiles/pyenv$ cd ~


8. Настраиваю pyenv в .bashrc

$ echo '# pyenv' >> ~/.bashrc
$ echo 'export PYENV_ROOT="/media/kukubuntu/Data/prfiles/pyenv/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ echo '' >> ~/.bashrc


9. Добавляю путь к ".pyenv/bin/" в переменную $PATH

$ echo "# kuk: set PATH so it includes my python's bin if it exists" >> ~/.profile
$ echo 'if [ -d "/media/kukubuntu/Data/prfiles/pyenv/.pyenv/bin" ] ; then' >> ~/.profile
$ echo '    PATH="/media/kukubuntu/Data/prfiles/pyenv/.pyenv/bin:$PATH"' >> ~/.profile
$ echo 'fi' >> ~/.profile
$ echo '' >> ~/.profile


10. Перелогинился (где-то прочитал что это необходимо после настройки .profile и $PATH)
11. bash всёравно думает, что у него нет прав

$ source ~/.profile
bash: /media/kukubuntu/Data/prfiles/pyenv/.pyenv/bin/pyenv: Permission denied
$ source ~/.bashrc
bash: /media/kukubuntu/Data/prfiles/pyenv/.pyenv/bin/pyenv: Permission denied
$ exec $SHELL
bash: /media/kukubuntu/Data/prfiles/pyenv/.pyenv/bin/pyenv: Permission denied


Что за дела? Я чего-то не сделал или где-то допустил ошибку? Или может мою задачу можно удобно решить и без pyenv?

Ответ на: комментарий от Kukuster

сам файл bin/pyenv это символьная ссылка на libexec/pyenv. При проверке обоих говорит, что права на него - 777.

Kukuster ()

Или может мою задачу можно удобно решить и без pyenv?

use Docker, Luke

anonymous ()

Проблема может быть в ntfs. У меня с ней virt-manager не работал, например, хотя самой qemu было насрать. Попробуй шутки ради повторить действия с каким-нибудь каталогом из хомяка.

Stil ★★★★★ ()

вообще плюсую docker
хардкорное решение этой, аналогичных и ещё кучу всяких проблем в любом стеке технологий

Debasher ★★★★★ ()

Но потом, мне посоветовали написать сюда

Наконец-то, вот оно - признание (плачет)

Что-бы написать что-нибудь по теме скажу vagga

zolden ★★★★★ ()

Держать исполняемые файлы на NTFS изначально плохая идея, но попробуй изменить команду mount таким образом:

sudo mount -o auto,user,fmask=0000,dmask=0000,exec /dev/sda2 '/media/kukubuntu/Data'

Важно, чтобы опция exec стояла последней.

cdslow ()
Ответ на: комментарий от cdslow

Лол, это дерьмо заработало. Не смотря на то, что судя по многим источникам опция exec у mount стоит поумолчанию, не говоря уже о масках 0000 поставленных рутом, этот pyenv не работал пока я не попробовал exec. Спасибо большое, но читая про docker он мне уже успел понравиться, так что попробую его, но всёравно большое спасибо.

Kukuster ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.