Commonmarker gem无法安装(需要用于jekyll)macOS

11

我需要做什么,依赖关系有问题吗?我该如何解决这些问题?我正在使用catalina系统。

我一次又一次地收到这个错误,并且已经查找了目录...但它不存在。

sudo bundle update
Password:
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies.......
Bundler found conflicting requirements for the Ruby
version:
  In Gemfile:
    github-pages was resolved to 1, which depends on
      Ruby (~> 1.9.3)

jekyll-feed (~> 0.12) was resolved to 0.13.0, which
depends on
      Ruby (>= 2.3.0)

Bundler could not find compatible versions for gem
"commonmarker":
  In Gemfile:
    commonmarker (~> 0.21.0)

    github-pages was resolved to 203, which depends on
jekyll-commonmark-ghpages (= 0.1.6) was resolved
to 0.1.6, which depends on
        commonmarker (~> 0.17.6)
➜  blog git:(gh-pages) ✗ sudo gem install commonmarker
Building native extensions. This could take a while...
ERROR:  Error installing commonmarker:
    ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.6.0/gems/commonmarker-0.21.0/ext/commonmarker
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20200903-9124-19bmbh8.rb extconf.rb
creating Makefile

current directory: /Library/Ruby/Gems/2.6.0/gems/commonmarker-0.21.0/ext/commonmarker
make "DESTDIR=" clean

current directory: /Library/Ruby/Gems/2.6.0/gems/commonmarker-0.21.0/ext/commonmarker
make "DESTDIR="
make: *** No rule to make target `/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h', needed by `arena.o'.  Stop.

make failed, exit code 2

Gem files will remain installed in /Library/Ruby/Gems/2.6.0/gems/commonmarker-0.21.0 for inspection.
Results logged to /Library/Ruby/Gems/2.6.0/extensions/universal-darwin-19/2.6.0/commonmarker-0.21.0/gem_make.out

构建本地扩展存在问题。您是否已安装Xcode和命令行附加组件,并接受了最终用户许可协议? - Todd A. Jacobs
1
“github-pages was resolved to 1, which depends on Ruby (~> 1.9.3)” 是另一个主要问题。版本1于2013年发布 - 请使用更新的gem版本。 - anothermh
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h, in my case universal-darwin19 didn't exist but universal-darwin20 did. Make a symbolic link to universal-darwin20 named universal-darwin19 - chepe263
5个回答

19

Sam的评论是正确的。XCode的ruby框架已损坏。一个解决方法是创建一个符号链接:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
ln -sf universal-darwin20 universal-darwin19

有了这个,我能够成功地构建所有的本机扩展。

注意:根据您本地Xcode SDK的安装情况,您应该更改路径段MacOSX11.1.sdk


2
这是正确的,但应该是 cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 ln -sf universal-darwin20 universal-darwin19 - sgg
原回答中universal-darwin19的拼写有误。 - sgg
修正了拼写错误,感谢您指出。 - Jongwook Choi
适用于 MacOS Monterey,只需稍作更改:cdMacOSX13.1.sdk 而不是 cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/,然后运行 sudo ln -sf universal-darwin22 universal-darwin21(没有 sudo 不起作用)。 - jonashackt

6

对于那些在MacOS上没有安装XCode,只安装了命令行工具的用户:

cd /Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0
sudo ln -sf universal-darwin20 universal-darwin21

如果需要,可以通过调整路径中的MacOSX11.3.sdk段来进行微调。


这个答案对我有用,因为它创建了符号链接。目标期望universal-darwin21,但只存在universal-darwin19MacOSX10.15.sdk - dcampb

4

我曾遇到一个相同的宝石问题; 我发现

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h

不存在,但是

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin20/ruby/config.h

存在 - 即 universal-darwin20 而不是 universal-darwin19

如果使用新版本的 Ruby 运行安装命令,则可以解决此问题。

如何操作会因设置而异。我使用的是rbenv,所以在运行安装命令之前运行了rbenv local 2.6.6

您可以在此处阅读有关运行多个 Ruby 版本的更多信息,或者您可以尝试将 Ruby 的单个版本升级到较新的版本(例如,如果您使用 Homebrew,则运行brew upgrade ruby)。


0

我也需要一个符号链接,但我的Ruby安装在不同的位置(/Library/Developer/... vs /Applications/Xcode.app/...),因此,我用于修复本地github页面安装的命令是:

cd /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/

sudo ln -sf universal-darwin19 universal-darwin20

-1

cd路径类似于您的日志错误 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0

然后复制并重命名文件夹,将universal-darwin20复制到universal-darwin19

现在它可以工作了。
您可以尝试更高版本的Ruby或Rails。gem支持它


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接