我想按照doc在WSL2上安装jekyll。但是得到错误。
gem update
Updating installed gems
Updating fiddle
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.5.0
directory.
--backtrace
之后
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.5.0 directory.
/usr/lib/ruby/2.5.0/rubygems/installer.rb:706:in `verify_gem_home'
/usr/lib/ruby/2.5.0/rubygems/installer.rb:854:in `pre_install_checks'
/usr/lib/ruby/2.5.0/rubygems/installer.rb:281:in `install'
/usr/lib/ruby/2.5.0/rubygems/resolver/specification.rb:97:in `install'
/usr/lib/ruby/2.5.0/rubygems/request_set.rb:168:in `block in install'
/usr/lib/ruby/2.5.0/rubygems/request_set.rb:156:in `each'
/usr/lib/ruby/2.5.0/rubygems/request_set.rb:156:in `install'
/usr/lib/ruby/2.5.0/rubygems/dependency_installer.rb:409:in `install'
/usr/lib/ruby/2.5.0/rubygems/commands/update_command.rb:213:in `update_gem'
/usr/lib/ruby/2.5.0/rubygems/commands/update_command.rb:225:in `block in update_gems'
/usr/lib/ruby/2.5.0/rubygems/commands/update_command.rb:224:in `each'
/usr/lib/ruby/2.5.0/rubygems/commands/update_command.rb:224:in `update_gems'
/usr/lib/ruby/2.5.0/rubygems/commands/update_command.rb:100:in `execute'
/usr/lib/ruby/2.5.0/rubygems/command.rb:313:in `invoke_with_build_args'
/usr/lib/ruby/2.5.0/rubygems/command_manager.rb:173:in `process_args'
/usr/lib/ruby/2.5.0/rubygems/command_manager.rb:143:in `run'
/usr/lib/ruby/2.5.0/rubygems/gem_runner.rb:59:in `run'
/usr/bin/gem:21:in `<main>'
我读过stackoverflow相关的que,但他们没有工作。
系统信息:
ruby -v
Ruby2.5.8p224(2020年3月31日修订版本67882)[x86_64-Linux-GNU]gem -v
网站 2.7.6.2
1.下载-Ubuntu 20.04.4 LTS- Winver-版本21H2(操作系统构建版本22000.556)
- 编辑:**
gem environment
的输出
/usr/lib/ruby/2.5.0/rubygems/commands/environment_command.rb:154: warning: Insecure world writable dir /mnt/c in PATH, mode 040777
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.6.2
- RUBY VERSION: 2.5.8 (2020-03-31 patchlevel 224) [x86_64-linux-gnu]
- INSTALLATION DIRECTORY: /var/lib/gems/2.5.0
- USER INSTALLATION DIRECTORY: /home/raghav/.gem/ruby/2.5.0
- RUBY EXECUTABLE: /usr/bin/ruby2.5
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /home/raghav/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /var/lib/gems/2.5.0
- /home/raghav/.gem/ruby/2.5.0
- /usr/lib/ruby/gems/2.5.0
- /usr/share/rubygems-integration/2.5.0
- /usr/share/rubygems-integration/all
- /usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /home/raghav/.local/bin
- /home/raghav/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /usr/lib/wsl/lib
- /mnt/c/Program Files (x86)/Common Files/Oracle/Java/javapath
- /mnt/c/WINDOWS/system32
- /mnt/c/WINDOWS
- /mnt/c/WINDOWS/System32/Wbem
- /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/
- /mnt/c/WINDOWS/System32/OpenSSH/
- /mnt/c/Users/Raghav/Downloads/cmake-3.20.3-windows-x86_64/cmake-3.20.3-windows-x86_64/bin
- /mnt/c/Program Files/dotnet/
- /mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn/
- /mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/170/Tools/Binn/
- /mnt/c/msys64/mingw64/bin"
- /mnt/c/Users/Raghav/.dotnet/tools
- /mnt/c/Users/Raghav/AppData/Local/Microsoft/WindowsApps
- /mnt/c/Program Files/Java/jre1.8.0_321/bin
- /mnt/c/Users/Raghav/AppData/Local/Programs/MiKTeX/miktex/bin/x64/
- /snap/bin
用户名:首页
root是文件的所有者。
1条答案
按热度按时间niknxzdl1#
你试图运行的程序试图用一个非特权帐户执行特权操作。
gem
将试图写入根拥有的目录,即使你是作为一个非特权用户运行它。还有另一个问题是bundler
,它将使用gem
,这将给你带来同样的问题,但这次你不能再使用--user-install
标志。要克服默认行为而不影响底层操作系统,可以强制gem使用用户帐户,强制bundler使用本地目录。靶病变; DR:
您需要做的是使用
gem install --user-install
而不是gem install
,这将把gems安装到~/.local/share/gem/
;和
bundle config set --local path 'vendor/bundle'
或类似的命令,或者,你可以使用bundle config set --global path ~/.local/share/gem/
,它将使用相同的文件夹,gem install --user-install
使用(在Ubuntu 22.04)。首先,该教程的当前说明建议打开power shell并运行
bash
。这已经过时了。如果你正在使用Windows商店中的Ubuntu应用程序,当你运行该应用程序时,你会在Ubuntu虚拟机中得到一个shell,这就是你应该使用的。从那里你可以按照ubuntu instructions操作。这是在此环境中工作的一步一步操作,它将只在不可避免的情况下使用
sudo
一次:这样你就可以像往常一样在Ubuntu中使用Jekyll了。如果你想在bundler中使用它,那么你必须再次安装webrick gem,因为jekyll会覆盖Gemfile。另外,默认情况下,bundler尝试在系统范围内安装,所以你必须配置它使用本地目录。
警告:只能在你的博客目录下运行这些命令,或者为将来的博客运行一个新的空目录。
用
bundle exec jekyll serve
测试一下如果您可以使用用户范围的gem文件夹,并且意识到更新jekyll会更新它所依赖的gem的版本,从而影响您的其他ruby项目,那么您可以使用用户范围的方法:
当然,你也可以使用系统范围的方法,这是最不推荐的,因为它会破坏你的ruby安装: