60

我已经检查了所有其他类似的答案,没有一个与我的完全一样,这些解决方案也没有对我有用。

gem environmentsudo gem environment给出相同的结果:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.5.3
  - RUBY VERSION: 1.8.7 (2011-12-28 patchlevel 357) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.8
     - /home/ava/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

rvm -vrvm 1.22.3

ruby -vruby 1.8.7

OSX 10.8.4

echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/ava/.rvm/bin:/home/ava/bin

gem install <gem-name>

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/local/lib/ruby/gems/1.8 directory.

而我可以通过 sudo 安装相同的。我究竟做错了什么?

更新:

根据评论和这篇文章,我运行了以下内容:

rvm implode然后重新安装稳定版。 rvm install 1.9.3或任何其他红宝石安装失败

Error running '__rvm_make -j24',
please read /home/ava/.rvm/log/log/1378418790_ruby-1.9.3-p194/make.log
There has been an error while running make. Halting the installation.

make.log

    [2013-09-05 22:06:48] make
current path: /home/ava/.rvm/src/ruby-1.9.3-p194
command(2): make -j24
        CC = gcc
        LD = ld
        LDSHARED = gcc -shared
        CFLAGS = -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Werror-implicit-function-declaration  -fPIC
        XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
        CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I.
        DLDFLAGS = -Wl,-soname,libruby.so.1.9
        SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
compiling main.c
compiling dmydln.c
compiling dmyencoding.c
compiling version.c
compiling miniprelude.c
compiling array.c
compiling bignum.c
compiling class.c
compiling compar.c
compiling complex.c
compiling dir.c
compiling dln_find.c
compiling enum.c
compiling enumerator.c
compiling error.c
compiling eval.c
compiling load.c
compiling proc.c
compiling file.c
:
:
:
In file included from ossl.h:213,
                 from ossl_pkcs5.c:5:
openssl_missing.h:71: error: conflicting types for ‘HMAC_CTX_copy’
/usr/local/include/openssl/hmac.h:102: error: previous declaration of ‘HMAC_CTX_copy’ was here
openssl_missing.h:95: error: conflicting types for ‘EVP_CIPHER_CTX_copy’
/usr/local/include/openssl/evp.h:459: error: previous declaration of ‘EVP_CIPHER_CTX_copy’ was here
make[2]: *** [ossl_pkcs5.o] Error 1
In file included from ossl.h:213,
                 from ossl_x509req.c:11:
:
:
:
4

15 回答 15

70

错误:执行 gem 时 ... (Gem::FilePermissionError) 您没有 /Library/Ruby/Gems/2.3.0 目录的写入权限。

  1. 安装 RVM
  2. 在 shell 资源文件中设置 gem 文件夹。即等.zshrc_.bashrc
export GEM_HOME="$HOME/.gem"
  1. 安装你的宝石gem i LIBRARY_NAME
于 2018-06-24T18:50:23.013 回答
62

要解决错误:

错误:执行 gem ... (Gem::FilePermissionError) 您没有写入 /usr/local/lib/ruby/gems/1.8 目录的权限。

以下解决方案对我有用:

sudo gem install -n /usr/local/bin cocoapods
于 2016-02-27T04:59:30.443 回答
38

您的全局(系统范围)配置文件可能--no-user-install设置了标志。创建/编辑您的本地~/.gemrc文件并附加以下行:

:gemdir:
    - ~/.gem/ruby
install: --user-install

注意
gemdir选项的实际目录将根据您的系统/需求而有所不同;它可能需要也可能不需要,但最好在home文件夹 ( gemdir) 中指定所需的安装目录,而不是假设它会自行处理。

ArchLinux Wiki有一些与此相关的有用/组织良好的信息。


邋遢

或者,类似于rvm已经建议的解决方案,您可以尝试使用chruby来维护、配置和使用ruby. 但是,要安装其他版本ruby,您需要使用ruby​​-install

$ brew install chruby ruby-install
$ ruby-install ruby 2.4.0

$ echo "source /usr/local/opt/chruby/share/chruby/chruby.sh" >> ~/.bash_profile
$ echo "chruby ruby" >> ~/.bash_profile

# Do this to select the default alternative ruby installation, assuming
# there is no other version installed.
$ chruby ruby

## Otherwise, list the available ruby versions installed, and select
$ chruby
ruby-2.3.0
ruby-2.4.0

$ chruby ruby-2.4.0

从项目的自述文件中:

更改当前的 Ruby。特征

Updates $PATH.
    Also adds RubyGems bin/ directories to $PATH.
Correctly sets $GEM_HOME and $GEM_PATH.
    Users: gems are installed into ~/.gem/$ruby/$version.
    Root: gems are installed directly into /path/to/$ruby/$gemdir.
Additionally sets $RUBY_ROOT, $RUBY_ENGINE, $RUBY_VERSION and $GEM_ROOT.
Optionally sets $RUBYOPT if second argument is given.
Calls hash -r to clear the command-lookup hash-table.
Fuzzy matching of Rubies by name.
Defaults to the system Ruby.
Optionally supports auto-switching and the .ruby-version file.
Supports bash and zsh.
Small (~100 LOC).
Has tests.

反特征

Does not hook cd.
Does not install executable shims.
Does not require Rubies be installed into your home directory.
Does not automatically switch Rubies by default.
Does not require write-access to the Ruby directory in order to install gems.

要求

bash >= 3 or zsh
于 2014-09-08T01:08:54.397 回答
26

如果您rvm以 root 用户身份安装,那么您必须sudo安装任何东西。

您可以rvm作为普通用户以用户模式安装,在这种情况下,所有内容都存储在您的主目录中,不需要任何sudo内容​​。

如果您不致力于此特定安装,请键入sudo rvm implode并重新开始。

于 2013-09-03T19:29:02.997 回答
6

如果您已安装 rbenv 并遇到此错误,以下答案将有所帮助(这对我来说是这样的)

问题:

$ gem install bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

不要使用须藤

  1. 检查 rbenv 版本
$ rbenv versions
* system (set by /Users/user/.rbenv/version)
  2.3.8

在这里,您可以看到,默认情况下它选择了系统。将其更改为您的红宝石版本。

$ rbenv global 2.3.8
$ rbenv versions
  system
* 2.3.8 (set by /Users/user/.rbenv/version)

然后尝试安装捆绑器,它将起作用:

$gem install bundler -v 1.17.3
Fetching: bundler-1.17.3.gem (100%)
Successfully installed bundler-1.17.3
Parsing documentation for bundler-1.17.3
Installing ri documentation for bundler-1.17.3
Done installing documentation for bundler after 5 seconds
1 gem installed
于 2020-08-21T14:11:28.047 回答
6

此处提到的“写入权限”错误Gem::FilePermissionError是由于 Ruby 环境配置不正确造成的。sudo无论您在 Stack Overflow 上将其视为已接受的答案多少次,您都不需要使用它来安装 gem。这就是为什么

概括地说,在 Mac 上设置合适的 Ruby 开发环境包括六个步骤:

  1. 安装 Homebrew(它还安装了必备的 Apple 命令行工具)
  2. 安装一个 Ruby 管理器(例如 chruby、rbenv、asdf、RVM)——其中大部分都可以使用 Homebrew 安装
  3. 通过将适当的行添加到您的 shell 文件(~/.bash_profile~/.zshrc)来配置 Ruby 管理器 - 每个管理器都会有执行此操作的说明,这是人们错过的典型步骤
  4. 重新启动终端(或打开一个新选项卡)以使 shell 更改生效 - 另一个经常被忽略的步骤
  5. 使用 Ruby 管理器安装特定版本的 Ruby
  6. 使用 Ruby 管理器切换到该版本的 Ruby

我个人的偏好是chrubyruby ​​-install 。有关更多详细信息和可以自动化整个过程的脚本,请在此处查看我的答案: https ://stackoverflow.com/a/54873916/928191

于 2020-11-02T15:37:57.717 回答
4

假设已安装 rvm,您可以执行以下操作:

$ rvm install 2.1.1
$ rvm @global do gem install compass

无需执行 sudo。

于 2014-10-23T04:36:04.087 回答
0

如果您刚刚安装rvm,并且您收到这样的错误

错误:执行 gem 时 ... (Gem::FilePermissionError) 您没有 /Library/Ruby/Gems/2.6.0 目录的写入权限。

记得打电话

source ~/.bash_profile

确保 gem 安装在 ~/.rvm

然后你可以简单地

rvm use 2.6.6
gem install yourgem:2.0.1
于 2021-02-23T14:04:43.193 回答
0

请注意,如果您选择执行 rvm 的多用户安装,则必须通过以下方式将每个用户添加到 rvm 组

usermod -a -G rvm <USERNAME>

来自 rvm's FAQ的相关信息

于 2016-04-19T16:55:50.180 回答
0

我试图将我的 ruby​​ 更新到最新版本,使用 brew ruby​​ install

在我获得最新的 ruby​​ 版本后,gem install rails 将工作

于 2021-11-29T23:18:57.137 回答
0

好的,在尝试了上述所有不同的解决方案后,它们都不适合我。因此,对于那些将来会遇到它的人来说,请知道这一点。该解决方案可能与可可豆荚无关,而与 Xcode 新版本有关。当您更新新版本时,您需要同意新的条款和条件。您可以直接在终端中执行此操作。运行: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 然后: sudo xcodebuild -license 比按空格键,直到您到达按钮,最后键入同意 From ,然后可以再次尝试添加 cocoapods,只需:gem安装 cocoapods

于 2020-12-06T01:26:18.883 回答
0

如果您使用rbenv,您可能忘记启用它,例如:

> rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"
于 2021-04-15T20:37:58.460 回答
0

我在尝试安装 watchr 包时在我的 Mac 上遇到了类似的问题

错误:执行 gem 时 ... (Gem::FilePermissionError)

每次我需要安装一个包时,不知何故运行 sudo 感觉有点过分了。我已经安装了 rbenv,所以我设置了这样的全局 ruby​​ 版本

rbenv global 2.6.5

然后简单地安装我想要的包。在我的情况下,命令是

gem install watchr
于 2020-02-15T01:32:11.267 回答
0

昨天当我尝试使用以下命令安装 rails 时遇到了同样的错误。

$ gem install rails -v 4.2.3

在此之前,我已经安装了 Ruby Environment Manager (rbenv),但以下命令未能将 if-eval 添加到 bash 配置文件。

$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> -/.bash_profile

因此,我对此进行了调查,发现当前目录引用 - 是上述命令失败的问题。我将其更改为 ~ 并成功运行以下命令

$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

在此之后,我能够成功安装 rails gem(无需执行 sudo)

于 2019-12-10T01:23:32.903 回答
-1

您可能没有对该路径某处的写入权限(很可能是 /usr/local/lib),您需要更改 RVM 存储的位置以便不需要 sudo

于 2013-09-03T19:27:07.400 回答