2017-08-03 7 views
0

非sudoは私が生地を使用してファブリック - 別のユーザーとして実行されますが、

sudo su - some_user 
source virtualenv/bin/activate 
pip install psycopg2 gunicorn django-modeltranslation 

をしたいです。

私は

with sudo_settings(sudo_user="some_user"): 
    with prefix("source virtualenv/bin/activate"): 
     sudo("pip install psycopg2 gunicorn django-modeltranslation") 

をすれば、私はディレクトリ「/home/coby/.cache/pip/http」またはその親ディレクトリが現在のユーザーとによって所有されていない

を取得キャッシュが無効になっています。そのディレクトリの権限と所有者を確認してください。 sudoでpipを実行している場合、sudoの-Hフラグが必要な場合があります。pip install psycopg2 gunicorn --no-cache-dir作品:

Traceback (most recent call last): 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/basecommand.py", line 215, in main 
status = self.run(options, args) 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/commands/install.py", line 324, in run 
requirement_set.prepare_files(finder) 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/req/req_set.py", line 380, in prepare_files 
ignore_dependencies=self.ignore_dependencies)) 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/req/req_set.py", line 554, in _prepare_file 
require_hashes 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/req/req_install.py", line 281, in populate_link 
self.link = self._wheel_cache.cached_wheel(self.link, self.name) 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/wheel.py", line 68, in cached_wheel 
self._cache_dir, link, self._format_control, package_name) 
File "/<home>/some_user/virtualenv/lib/python3.5/site-packages/pip/wheel.py", line 129, in cached_wheel 
wheel_names = os.listdir(root) 
PermissionError: [Errno 13] Permission denied: '/<home>/<sudo_user>/.cache/pip/wheels/cd/07/05/fa31adf8c1d71f5979e4329601d36c883f063ed0e99e5e29fa' 

UPDで例外が続く

+0

に相当しているのですか? –

+0

はい、SSH経由でサーバー上の最初のコマンドセットを実行することができました。 – Howdedo

答えて

0

シェルではsourceの後にsudoが実行されます。これは、現在の環境に影響するシェル組み込みコマンドであるためです。sourceは現在の環境に影響します。

ファブリックでも同じことを実行する必要があります。sudo()を実行し、外側にはsourceを呼び出します。あなたはFABことなく、サーバにコマンドの最初のセットを実行することができました

あなたの現在の工場のコードでは、

source virtualenv/bin/activate 
sudo su - some_user 
pip install psycopg2 gunicorn 
関連する問題