【问题标题】:Can't install Ruby Compass on Mac Big Sur 11.5.2无法在 Mac Big Sur 11.5.2 上安装 Ruby Compass
【发布时间】:2021-12-29 18:52:00
【问题描述】:

我正在尝试在运行 Big Sur (11.5.2) 的 2020 Mac Book Pro 上安装 Compass。

当我尝试运行时:

gem install compass

我得到错误:

You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory

如果我尝试运行:

sudo gem install compass

我得到错误:

ERROR:  Error installing compass:
    ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.4/ext/ffi_c

我已经尝试安装和更新 Ruby。 我已尝试更新系统 Ruby,但系统不允许使用比以下更新的版本:

Updating rubygems-update
Fetching rubygems-update-3.3.3.gem
Successfully installed rubygems-update-3.3.3
Parsing documentation for rubygems-update-3.3.3
Installing ri documentation for rubygems-update-3.3.3
Installing darkfish documentation for rubygems-update-3.3.3
Done installing documentation for rubygems-update after 206 seconds
Parsing documentation for rubygems-update-3.3.3
Done installing documentation for rubygems-update after 0 seconds
Installing RubyGems 3.3.3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem

 % ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]

不确定下一步该做什么或尝试。

有人对如何安装 Compass 有任何想法吗?

【问题讨论】:

  • 首先,使用 sudo 安装 gem 并不常见。由于这个原因,许多 ruby​​ 专家避免使用系统 (OS) ruby​​,而是使用像 rbenv 这样的 ruby​​ 版本管理器。您可以尝试一下,或者您可以专注于为什么 ffi 无法安装。 sudo gem install ffi -v "1.15.4" 会产生什么错误?
  • 你是否安装了开发者工具?
  • @JaredBeck 我收到错误:ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.
  • @pjs 我相信我会。如果我输入 xcode-select --install 响应说命令行工具已经安装 - 这就是你的意思吗?
  • 另外,请注意compass 似乎不再维护:github.com/Compass/compass。我会切换到不同的图书馆,但如果这是不可能的,我会同情你。

标签: ruby gruntjs compass


【解决方案1】:

正如您在调用 sudo 时注意到的那样,这实际上分解为两个问题。

(1) 您正在尝试将 gem 写入系统 Ruby 的受保护目录。

在大多数开发环境中,最好安装一个 Ruby 版本管理器,它允许您为不同的项目并排安装多个 Ruby。纯粹主观地,我建议rbenv 来管理only Ruby,或者asdf 来管理Ruby 版本和其他语言版本。但是,使用哪个 Ruby 版本管理器的问题是very well tread already,因此您可以根据现有信息选择最适合您需求的解决方案。

(2) 您正在安装一个带有本机扩展的 gem,这意味着您需要在系统上安装底层 C 库才能正确构建(假设您使用的是 CRuby,默认的 Ruby 实现)。您需要在您的机器上安装 libffi-dev 才能正确构建该 gem。基于this question,似乎一个简单的brew install libffi 应该可以解决这个问题。

最后,我建议使用bundler gem 来使用Ruby 管理每个项目的gem 是惯用的。我会重新考虑您是否真的想在整个系统范围内运行这个 gem,或者它是否可能会在多个项目中改变版本。

【讨论】:

  • 谢谢。使用rbenv 对我有用。专门使用 shell 命令切换到本地版本的 ruby​​。然后使用gem install compass 安装 Compass。以防万一其他人正在寻找相同的解决方案。 libffi 不会安装,因为 Ruby 的受保护系统 2.6 版本相同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 2021-06-29
相关资源
最近更新 更多