[英]Is there a reliable way to avoid permission denied errors when installing Ruby gems with native extensions on Windows Subsystem for Linux?
我希望 WSL2 能够解决这些问题,并在接下来的 6 个月左右使这个问题过时,但与此同时,我对在我的主笔记本电脑上运行 Windows 的前沿或其他预览版本感到不舒服。
有时,当我在 WSL 中安装 Ruby gem( bundle install
或bundle install --path=vendor/bundle
)时,在安装带有本机扩展的 gem 时出现Permission denied
错误。
此错误的最新版本是:
Permission denied @ rb_file_s_rename - (./.gem.20191006-12131-11th7ub/byebug, /home/thomasowens/project/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0-static/byebug-11.0.1/byebug)
为了解决它,我只是删除/home/thomasowens/project/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0-static/byebug-11.0.1/byebug
,重新运行 bundle 命令,然后它成功了。 有时,我需要多次执行此操作,但通常可以。
最后,我可以正确安装所有的 gem,但是在设置一个新项目时很难,而且有很多带有本机扩展的 gem。 当我引入新的 gem 或更新导致需要更新本机依赖项的 gem 时也是如此。
关于这个问题我没有发现太多,但我想知道是否有什么办法可以减轻需要多次运行bundle install
才能在 WSL 下设置和运行项目的痛苦。
我遇到的问题可能与 Visual Studio Code 的文件监视有关。 它反映在针对 WSL- 1956和3395的两个 GitHub 问题中。 Visual Studio Code 有remote.WSL.fileWatcher.polling
,可以启用它来解决这个问题。 但是, 文档指出大型工作空间会对性能产生影响,并且可能还需要调整remote.WSL.fileWatcher.pollingInterval
设置。 WSL2 将解决这些问题。
启用此标志后,我在运行 VS Code 时没有看到该错误。
现在 WSL2 出来了,我可以禁用这个标志并且问题没有再次出现。 看来,如果您可以升级到 WSL2,那可能是首选解决方案。 但是,对于尚未升级或无法升级的任何人,切换remote.WSL.fileWatcher.polling
和remote.WSL.fileWatcher.pollingInterval
应该很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.