digitalocean で Ubuntu を起動: pip が「権限が拒否されました」で失敗する

digitalocean で Ubuntu を起動: pip が「権限が拒否されました」で失敗する

私はWindowsユーザーで、UbuntuとDigitalOceanの初心者です。

https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-12-04

そして、私は経験しています

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn

しかし、それは失敗しているpip install django

OSError: [Errno 13] Permission denied: '/opt/myenv/build'

トレースバック:

(myenv)jeffy@originaldjangster:~$ pip install django
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/basecommand.py", line 1                         22, in main
    status = self.run(options, args)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/commands/install.py", l                         ine 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundl                         e=self.bundle)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1153, in                          prepare_files
    location = req_to_install.build_location(self.build_dir, not self.is_downloa                         d)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 218, in b                         uild_location
    _make_build_dir(build_dir)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1527, in                          _make_build_dir
    os.makedirs(build_dir)
  File "/opt/myenv/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/opt/myenv/build'

Storing debug log for failure in /home/jeffy/.pip/pip.log

デバッグログ:

jeffy@originaldjangster:~$ more /home/jeffy/.pip/pip.log
------------------------------------------------------------
/opt/myenv/bin/pip run on Tue Aug  5 14:45:38 2014
Downloading/unpacking django
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1153, in prepare_files
    location = req_to_install.build_location(self.build_dir, not self.is_download)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 218, in build_location
    _make_build_dir(build_dir)
  File "/opt/myenv/local/lib/python2.7/site-packages/pip/req.py", line 1527, in _make_build_dir
    os.makedirs(build_dir)
  File "/opt/myenv/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/opt/myenv/build'
jeffy@originaldjangster:~$

visudo:

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
jeffy   ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

問題のステップをスキップして、 まで正常に進みましたがpip install gunicorn、その時点で同じエラーが発生しました。

OSError: [Errno 13] Permission denied: '/opt/myenv/build'

参考までに: 指示に従って、アクティブ化された仮想環境内でこれを実行しています。

何が間違っているのでしょうか? ご協力ありがとうございます。


上記が私の主な問題です。以下の質問に簡単に答えられる場合は、ぜひ答えてください。上記がわかったらすぐに実行する必要がある手順は次のとおりです。

また、Python 2.7.6 から Python 3.4.1 (または利用可能な最新の Ubuntu 互換リリース) にアップグレードする方法も知る必要があります。Python はすでにインストールされていましたが、私がインストールしたわけではありません。

3.4.1 のみを希望します。2.7 と 3.4 を並べて使用することは望んでいません。

jeffy@originaldjangster:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty
jeffy@originaldjangster:~$ python --version 
Python 2.7.6

答え1

Digital Oceanのサポート:

したがって、ユーザーが visudo ですべてのコマンドを実行できるように設定されているかどうかに関係なく、すべてのコマンドに「sudo」を追加する必要があります。

Python に関しては、バージョン 2.7 は削除できません。Python バージョン 3.xx を使用する場合は、python3 コマンドを使用する必要があります。


自分:

どうやらこれで終わりのようです。「インストール方法」ガイド https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-django-with-postgres-nginx-and-gunicorn 「pip」コマンドの前に「sudo」プレフィックスがありませんが、あるべきだと思います。3.4 もすでにインストールされているようです。すばらしい。


アップデート

上記は十分ではないことがわかりました。ipythonはインストールされますが、仮想環境で--ipythonディレクトリは/opt/jenv/binまったく作成されません。このようにインストールすると、少なくとも私の環境では、IPython の起動時に Python 3.4 ではなく 2.7 が使用されます (起動時にそう表示されます)。

解決策は、virtualenvをアクティブにして、virtualenvのピップ:

sudo /opt/jenv/bin/pip install ipython

( がないと、これは機能しないことに注意してsudoください。質問を参照してください。) IPython は bin ディレクトリに正しくインストールされ、起動すると、Python 3.4 を使用していると表示されます (virtualenv が で作成されている限り-p /usr/bin/python3.4)。

そうみたいですこれらの指示変更する必要があります。

関連情報