Ubuntu18.04虚拟机使用Ruby2.5.9+Rails5.0.7.2配置PostgreSQL时报Errno::EPERM错误
错误产生原因
你当前执行rails new的工作路径为/mnt/c,属于WSL环境下自动挂载的Windows NTFS文件系统分区,NTFS本身不兼容Linux的权限控制机制,而Rails创建项目的过程中默认会调用chmod命令修改项目bin目录下可执行文件的权限,该操作在NTFS挂载分区上会被系统禁止,因此抛出Errno::EPERM报错。
解决方法
- 方案一(最推荐):将Rails项目创建到WSL的Linux原生文件系统路径下,比如你的用户家目录
/home/kundan,执行如下命令即可:
该方案除了能解决权限报错外,还能大幅提升Rails项目的文件读写性能,避免后续开发过程中出现其他兼容问题。cd ~ rails new testapp -d postgresql - 方案二:如果必须将项目存放在Windows挂载分区,可以在创建项目时添加参数跳过
chmod操作:rails new testapp -d postgresql --skip-chmod - 方案三:修改WSL挂载配置,让NTFS分区支持Linux权限操作:
- 编辑WSL内的
/etc/wsl.conf文件,添加以下配置:[automount] options = "metadata,umask=22,fmask=11" mountFsTab = false - 保存文件后关闭WSL,在Windows终端执行
wsl --shutdown重启WSL,后续在挂载分区执行chmod类操作就不会报错。
- 编辑WSL内的
内容的提问来源于stack exchange,提问作者Kundan Singh
相关产品推荐
相关产品推荐

