#ruby #macos #rubygems #jekyll #bundler
#ruby #macos #rubygems #jekyll #пакет
Вопрос:
что мне нужно делать, есть ли проблема с зависимостями? Как мне это исправить? Я на Каталине.
Я неоднократно получаю эту ошибку и уже искал каталог .. не существует.
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
Комментарии:
1. Это проблема с созданием собственных расширений. Установлены ли у вас Xcode и надстройка командной строки с принятым лицензионным соглашением?
2.
github-pages was resolved to 1, which depends on Ruby (~> 1.9.3)
еще одна серьезная проблема. версия 1 была выпущена в 2013 году — используйте более новую версию gem.3.
/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
в моем случаеuniversal-darwin19
не существовало, ноuniversal-darwin20
было. Создайте символическую ссылку наuniversal-darwin20
с именемuniversal-darwin19
Ответ №1:
Комментарии Сэма верны. Платформа ruby в XCode не работает. Обходной путь заключается в создании символической ссылки:
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
С помощью этого я смог успешно создать все собственные расширения.
Примечание: Вы должны изменить свой сегмент пути MacOSX11.1.sdk
в соответствии с вашей локальной установкой Xcode SDK.
Комментарии:
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 ln -sf universal-darwin20 universal-darwin19
2. ^ universal-darwin19 написан с ошибкой в исходном ответе
3. Исправлена опечатка, спасибо, что указали на это.
4. Работает, с небольшим изменением в macOS Monterey:
cd
вMacOSX13.1.sdk
вместо:cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/
и затем запускаетсяsudo ln -sf universal-darwin22 universal-darwin21
(без sudo это не работает).
Ответ №2:
Для тех, кто работает на 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
сегмент в пути.
Комментарии:
1. Этот ответ сработал для меня вместо приведенного выше из-за создания символической ссылки. Цель ожидала,
universal-darwin21
но толькоuniversal-darwin19
существовала.MacOSX10.15.sdk
Ответ №3:
У меня была такая же проблема с другим драгоценным камнем; я обнаружил, что
/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, но попробуйте обновить ее до более новой версии (например, brew upgrade ruby
если вы используете Homebrew).
Ответ №4:
Мне также нужна была символическая ссылка, но моя установка ruby была в другом месте ( /Library/Developer/...
vs /Applications/Xcode.app/...
), по этой причине команды, которые я использовал для исправления моей локальной установки github-pages, были:
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
Ответ №5:
путь к компакт-диску, подобный ошибке вашего журнала /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 для него