Файл ruby ​​/ config.h для macOS Mojave не найден

Когда я пытаюсь собрать vim (8.1.0509) с поддержкой ruby ​​(- enable-rubyinterp) в macOS Mojave (10.14.1), я получаю сообщение об ошибке:

In file included from /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby.h:33:
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/include/ruby-2.3.0/ruby/ruby.h:24:10: fatal error:
      'ruby/config.h' file not found
#include "ruby/config.h"

Я установил Xcode 10.1.

xcode-select -p
/Applications/Xcode.app/Contents/Developer

Спасибо


person maksimr    schedule 03.11.2018    source источник


Ответы (14)


macOS Catalina

Проблема снова появилась в Catalina, и мне не удалось обнаружить этот пакет в Developer SDK. Пока не было найдено лучшее решение, я смог обойти это с помощью rubyenv: https://github.com/orta/cocoapods-keys/issues/198#issuecomment-510909030

brew install rbenv ruby-build
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile 
rbenv install 2.6.3
rbenv global 2.6.3

Мохаве и старше

Мне помог этот ответ: https://stackoverflow.com/a/53194299/2105993

xcode-select --install
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
person ReDetection    schedule 20.11.2018
comment
Это должен быть принятый ответ @maksimr, поскольку он делает именно то, что устраняет проблему, без полной переустановки macOS. - person ohcibi; 18.01.2019
comment
Я нахожусь на мохаве, и это исправило его для меня (тогда как xcode-select --install не сделал) - person Emile; 16.02.2019
comment
Кажется многообещающим, пока не появится предупреждение: этот пакет несовместим с этой версией macOS и может не установиться. [...] может повредить вашу систему [...]. Я просто собираюсь попробовать asdf (github.com/asdf-vm/asdf), который кажется, в списке модулей есть рубин. - person FooF; 31.03.2020
comment
С asdf ruby ​​gem хочет устанавливать пакеты в системную папку ruby ​​2.3, поэтому я перестал это делать. Это казалось неправильным, и я не хочу использовать sudo. У Homebrew есть рубин, и при запуске с использованием полного пути к его утилите gem, поскольку она по умолчанию не активирована, мой проблемный гем может быть установлен (без sudo, yay). - person FooF; 31.03.2020
comment
Только первый cmd устранил проблему в моем случае. Не уверен, связано ли это с тем, как в настоящее время работает 1-й cmd, но у меня не было файла .pkg, который я мог бы открыть после завершения установки. После выполнения 1 шага эта команда успешно сработала: sudo gem install cocoapods - Спасибо - person Gene Bo; 08.05.2020
comment
для меня brew install ruby, затем export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig" решил проблему (которая была sudo gem install eventmachine -v '1.2.7') - person kino1; 06.09.2020

Каталина, Биг-Сур и т. д. (по состоянию на 2020 и 2021 годы)

В последних версиях macOS и Xcode (например, Catalina 10.15 и Xcode 12.2) это определенно не работает. Переустановка Xcode и xcode-select --install мне совсем не помогла (уже опубликованные решения кажутся устаревшими). Я не хотел использовать rvm, потому что это может вызвать некоторые неприятные проблемы.

Я сделал обходной путь, вручную создав символическую ссылку:

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/ruby
ln -sf ../../../../Headers/ruby/config.h

где ruby/config.h можно найти по адресу: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/Headers/ruby/config.h.

Вы должны изменить версии SDK (например, 11.1 в приведенном выше примере) в соответствии с вашей текущей установкой xcode.

Также очень вероятно, что вы столкнетесь с другой ошибкой, где .../universal-darwin19/ruby/config.h не может быть найден (Невозможно установить гем Commonmarker (требуется для jekyll) macos). Быстро исправить это можно следующим образом:

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
person Jongwook Choi    schedule 28.12.2020
comment
Я вижу на своем пути только univeral-darwin20. Могу я еще бежать ln -sf universal-darwin20 univeral-darwin19 - person leeCoder; 05.01.2021
comment
Да, именно поэтому вам нужно запустить команду, чтобы создать символическую ссылку universal-darwin19 на universal-darwin20 (обратите внимание на опечатку вокруг universal-darwin19; спасибо Эвану за исправление в исходном ответе). - person Jongwook Choi; 06.01.2021
comment
Пробовал устанавливать rbenv. Пробовал удалить и переустановить xcode tools. Но только это решение сработало. Хотя, я серьезно подумываю о том, чтобы сделать резервную копию всего и перезагрузить мою машину после всего этого. - person Sylvan D Ash; 08.02.2021
comment
Я потратил 3 часа напрасно, прежде чем закончил на этом ответе! Большое спасибо! - person Pranjal; 29.05.2021

В macOS Catalina
После многократной установки и удаления инструментов разработчика это единственное, что у меня сработало:

Сначала установите Ruby Version Manager rvm:

curl -L https://get.rvm.io | bash -s stable

Затем установите последнюю версию ruby:

rvm install ruby-2.7.2

Наконец, попробуйте еще раз установить cocoapods:

sudo gem install cocoapods

(из этого ответа: https://stackoverflow.com/a/65033418/3605761)

изменить: на шаге 2 может потребоваться rvm reinstall ruby-2.7.2 вместо rvm install ruby-2.7.2.

person Eden    schedule 21.12.2020
comment
убедитесь, что вы используете правильную версию ruby ​​после установки: ruby --version для проверки версии и rvm use 2.7.2 для установки - person Jack Ng; 22.02.2021
comment
Работающий !. Спасибо - person Constantin N.; 23.03.2021

У меня была точно такая же проблема. Не удалось установить драгоценные камни с собственными расширениями. Бег

$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

не удалось, потому что файл не существует. Похоже, Мохаве может сломать инструменты командной строки.

Я исправил это, удалив инструменты командной строки Xcode, установив их снова, а затем установив недостающие заголовки:

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install
$ open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
person atamanroman    schedule 10.02.2019

Если вы столкнулись с этой проблемой в Mac Big Sur, переустановка CommandLineTools может решить эту проблему.

sudo rm -rf /Library/Developer/CommandLineTools

xcode-select --install
person Suraj Poddar    schedule 14.12.2020
comment
Да, это самое короткое решение, которое работает (Биг Сур) - person mojuba; 19.03.2021

В macOS Catalina. Если установлено несколько версий xcode, xcode12 / xcode12.4 и т. д., попробуйте изменить инструменты командной строки xcode в настройках xcode. Может сработает !!!

person iticle    schedule 19.03.2021
comment
работал у меня и на Биг-Суре. Спасибо. - person Eric Armstrong; 22.03.2021

Моя проблема отличалась от - Обновление Yosemite сломало ruby.h

Как видно из описания проблемы, это рубин System, а не рубин Xcode, поэтому переустановка Xcode или символическая ссылка здесь не помогли.

Ответ. Я переустановил macOS Mojave без потери данных. и это устранило проблему.

person maksimr    schedule 04.11.2018
comment
Я столкнулся с этой проблемой при попытке установить Command-T для macvim и беспокоился, что мне нужно сбросить большую бомбу переустановки Mojave. Вместо этого я обнаружил, что System ruby ​​на самом деле был Ruby 2.3.7 (Macvim был построен на основе этого System ruby ​​версии 2.3.7), и я установил Ruby 2.3.7 с помощью rbenv. После того, как он был установлен и установлен в качестве моего рубина по умолчанию, я мог установить Command-T как обычно. Возможно, позже придется подумать о переустановке Mojave, но установка Ruby 2.3.7 через rbenv помогла мне наладить работу, не делая этого сейчас. Надеюсь, это поможет кому-то еще в этой ситуации. - person Kyle Tolle; 15.11.2018
comment
Решение ReDetection сработало, и я также использовал Systems Ruby. Я имею в виду, что для этого нужна загрузка? Заголовки для Mac OS X. - person Logemann; 20.11.2018
comment
В моем случае / Library / Developer / CommandLineTools не содержит папки Packages. Как я уже писал выше, переустановка Mojave была решением (вы можете переустановить его без потери данных) - person maksimr; 20.11.2018

Я попробовал все вышеперечисленное, и в конце концов у меня получилось работать с этой маленькой «жемчужиной», простите за каламбур.

sudo gem install -n /usr/local/bin cocoapods -v 1.8.4

Из https://developer.apple.com/forums/thread/668456.

person JupiterT    schedule 27.02.2021

Совет от 2021 года
Если вы можете, обновление до macOS Big Sur и последующее обновление Xcode также решит проблему.

Только что протестировано при обновлении 10.15 - ›11.2.3 для macOS.
И 12.4 для Xcode.

person thalacker    schedule 28.03.2021


Я использую rbenv (на Catalina), и ни одно из решений, которые я нашел здесь (или где-либо еще), не помогло мне. В конечном итоге то, что исправило мою среду, указывало rbenv global на конкретную версию ruby ​​вместо system:

$ rbenv global 2.6.3

Это было состояние моего env, пока gem install не работал:

$ gem env home
=> /Users/ryanc/.gem

$ which gem
=> /Users/ryanc/.rbenv/shims/gem

$ which ruby
=> /Users/ryanc/.rbenv/shims/ruby

$ ruby -v
=> ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]

$ rbenv local
=> rbenv: no local version configured for this directory

$ rbenv global
=> system

$ rbenv which ruby
=> /usr/bin/ruby

Результат rbenv which ruby был ключевым. Я решил запустить rbenv global 2.6.3 и внезапно смог снова установить драгоценные камни. Вот новое положение вещей:

$ ruby -v
=> ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin19]

$ rbenv global
=> 2.6.3

$ rbenv which ruby
=> /Users/ryanc/.rbenv/versions/2.6.3/bin/ruby
person ryanc    schedule 17.12.2020

для меня это сработало rvm install ruby ​​(не с пивом), а затем выполнить шаги из здесь:

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install

а потом

export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig" 

После всего этого все заработало.

person Mihaela Romanca    schedule 21.12.2020

У меня была аналогичная проблема с установкой eventmachine 1.2.7, у меня это сработало (macOS 10.15.5):

(Я использую fish)

  1. brew install ruby
  2. Add the following ~/.config/fish/config.fish (without fish, just add these to path)
    1. fish_add_path /usr/local/opt/ruby/bin
    2. fish_add_path /usr/local/lib/ruby/gems/3.0.0/bin
  3. set -gx CPPFLAGS "-I/usr/local/opt/ruby/include"
  4. set -gx LDFLAGS "-L/usr/local/opt/ruby/lib"
  5. set -gx PKG_CONFIG_PATH "/usr/local/opt/ruby/lib/pkgconfig"
  6. sudo gem install eventmachine -v '1.2.7' --source 'https://rubygems.org/'

set -gx команды, которые я получил после установки ruby ​​thru brew.

Я попытался переустановить инструменты Xcode (12.3, поскольку я пока не могу перейти на Big Sur) и повторно принял соглашение, но это ничего не изменило


Одно замечание: это было из-за установки eventmachine 1.2.7. Ошибка журнала, которую я получил, указала на этот путь как на один из своих флагов:

-I/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 -I

Обратите внимание, что пытался посмотреть .../MacOSX11.1.sdk/..., но у меня 10.15.5. Даже установка CPPFLAGS, LDFLAGS, PKG_CONFIG_PATH вручную не сработала, поскольку я использовал системный рубин или что-то еще, что было у rbenv, но я был слишком расстроен, чтобы копать глубже в этой конкретной кроличьей норе. Итак, я переустановил w / brew's ruby!

person Graystripe    schedule 31.05.2021

В моем случае (Catalina 10.15.7) просто переустановка ruby с исправлением homebrew. Нет необходимости устанавливать rvm или rubyenv.

person Jeremy    schedule 04.02.2021
comment
Примечание. Рубин Homebrew отличается от системного рубина, и указать «правильный» рубин для других последующих процессов сборки может быть непросто. Например, homebrew отказывается связывать предоставленный macOS Ruby, поэтому вам необходимо правильно настроить PATH, LDFLAGS, CPPFLAGS и pkgconfig, что часто идет беспорядочно и не работает так гладко, как ожидалось. - person Jongwook Choi; 09.02.2021