我想在我的debian jessie服务器上安装一个系统范围的virtualenv,每个用户都可以使用,无需sudo(无论如何应该工作)或用户特定的安装。
这是我从头开始输入的内容:
$ sudo apt-get install python3
#Install OK
$ sudo apt-get install python3-pip
#Install OK
$ pip3 install virtualenv
#Fails with "error: could not create '/usr/local/lib': Permission denied"
$ sudo pip3 install virtualenv
#Install OK, but it appears that '/usr/local/bin' now has 'drwxr-s---'
#permissions instead of 'drwxrwsr-x' (users can't list files in the directory...)
$ virtualenv env1
#Fails with "Command not found" (virtualenv is in '/usr/local/bin')
$ sudo virtualenv env1
#OK, but that's not the way it should work
我可以使用特定于用户的安装(pip3 install --user virtualenv
)和“〜/ .bashrc”中的一些$ PATH初始化,但每个用户必须安装和重新配置virtualenv才有点费力。< / p>
我确定我错过了一些东西,但是当我运行命令安装virtualenv时,似乎pip3没有正确设置它在'/ usr / local'中创建的文件和文件夹的权限。
答案 0 :(得分:1)
解决了它。
问题出在我的'/etc/logins.def'文件中,我将所有用户(包括root用户)的默认UMASK设置为007(非所有者的新文件或文件夹没有读/写/执行权限或非团体成员)。因此,sudo pip3 install virtualenv
行在'/ usr / local'中创建文件夹和可执行文件,权限过于严格。
为了解决这个问题,我在'/root/.bashrc'中更改了root的umask(如果有人使用sudo su
安装包),并在'/ etc / sudoers'中添加以下行visudo命令:
#UMASK is not unioned with the one set in the PAM module
Defaults umask_override
#Default UMASK is 007 for non-root users (for some reason I can't use 'Defaults>!root')
Defaults umask=0007
#Root UMASK is 022, to overcome permission problems when installing packages
Defaults>root umask=0022
现在我可以在重复这些步骤后执行virtualenv:
$ sudo apt-get install python3
#Install OK
$ sudo apt-get install python3-pip
#Install OK
$ sudo pip3 install virtualenv
#Install OK
$ virtualenv env1
#OK