$GEM_HOME is ignored by `gem install`

£可爱£侵袭症+ 提交于 2019-12-08 07:21:12

问题


I have $GEM_HOME set, but gem install is still installing to the default ~/.gem directory.

This rubygems issue says to remove the --user-install option in .gemrc, but I don't have a .gemrc file.

How can I get gem install to honour the value of $GEM_HOME?


Here I firstly remove ~/.gem, and then show that it is automatically created:

% rm -rf ~/.gem
% find ~ -name '*gemrc*'    
% # No output, so .gemrc doesn't exist
% echo $GEM_HOME
/home/ravi/.local/share/gem
% gem install neovim
Building native extensions. This could take a while...
Successfully installed msgpack-1.2.7
Successfully installed multi_json-1.13.1
Successfully installed neovim-0.8.0
Parsing documentation for msgpack-1.2.7
Installing ri documentation for msgpack-1.2.7
Parsing documentation for multi_json-1.13.1
Installing ri documentation for multi_json-1.13.1
Parsing documentation for neovim-0.8.0
Installing ri documentation for neovim-0.8.0
Done installing documentation for msgpack, multi_json, neovim after 0 seconds
3 gems installed
% ls -ld ~/.gem
drwxr-xr-x 1 ravi ravi 8 Mar  9 12:34 /home/ravi/.gem/

Environment information:

% gem --version
3.0.2
% gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 3.0.2
  - RUBY VERSION: 2.6.1 (2019-01-30 patchlevel 33) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/ravi/.local/share/gem
  - USER INSTALLATION DIRECTORY: /home/ravi/.gem/ruby/2.6.0
  - RUBY EXECUTABLE: /usr/bin/ruby
  - GIT EXECUTABLE: /usr/bin/git
  - EXECUTABLE DIRECTORY: /home/ravi/.local/share/gem/bin
  - SPEC CACHE DIRECTORY: /home/ravi/.cache/gem
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/ravi/.local/share/gem
     - /usr/lib/ruby/gems/2.6.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--user-install"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/ravi/.gem/ruby/2.6.0/bin
     - /home/ravi/bin
     - /home/ravi/.local/share/npm/bin
     - /home/ravi/.local/share/go/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/local/sbin
     - /usr/lib/jvm/default/bin
     - /usr/bin/site_perl
     - /usr/bin/vendor_perl
     - /usr/bin/core_perl
     - /usr/lib/systemd
     - /home/ravi/.local/share/miniconda3/bin
     - /home/ravi/.cabal/bin
     - /usr/lib/jvm/default/bin
     - /usr/bin/site_perl
     - /usr/bin/vendor_perl
     - /usr/bin/core_perl
%

回答1:


As Casper pointed out in the comment, my configuration was still getting --user-install from somewhere.

While my ~/.gemrc didn't exist, I checked in /etc/gemrc and found the following:

# --user-install is used to install to $HOME/.gem/ by default since we want to separate
#                pacman installed gems and gem installed gems
install: --user-install

To override this, I added to my ~/.gemrc:

install: --no-user-install

And now $GEM_HOME is respected.



来源:https://stackoverflow.com/questions/55074420/gem-home-is-ignored-by-gem-install

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!