Этот вопрос также похож на этот, но их ответ также оказался "просто залог на MacPorts и установите Homebrew". Я никогда не был пользователем Homebrew - не то, чтобы с ним что-то было не так, я только начал с MacPorts и вполне честен в своих действиях. Итак, я немного покопался с первым ответом вместо принятого, и я думаю, что нашел (частично) вашу проблему: вместо --with-icu-dir
следует указать /opt/local/lib/icu
из /opt/local
.
Конечно, это всего лишь одна часть головоломки; Флаги, которые вам действительно нужны - это --with-opt-lib
и --with-opt-include
. То есть, --with-icu-dir
кажется ненужным, так как gem
кажется, может найти эту настройку, пока вы предоставляете --with-opt-lib
:
sudo gem install charlock_holmes -- --with-opt-lib=/opt/local/lib --with-opt-include=/opt/local/include
Хотя это должно быть правильно, так как я использую rbenv и macports из моего домашнего каталога, мой вызов несколько отличался. Но концепция остается прежней:
gem install charlock_holmes -- --with-opt-lib=$HOME/macports/lib --with-opt-include=$HOME/macports/include
Несмотря на это, моя личная цель была на самом деле установить с Bundler, так что вот некоторые материалы для бонусного раунда:
Чтобы заставить Bundler надлежащим образом передавать флаги сборки, вы можете использовать команду bundle config
для установки соответствующих значений, например:
bundle config --local build.charlock_holmes --with-opt-lib=/opt/local/lib --with-opt-include=/opt/local/include
И тогда обычная bundle install
должна работать. Опять же, для моей конкретной настройки я должен был сделать это так:
bundle config --local build.charlock_holmes '--with-opt-lib=$HOME/macports/lib --with-opt-include=$HOME/macports/include'
Одиночные кавычки, хотя и не являются строго необходимыми, хороши, если я сделаю что-то плохое и проверю свой .bundle/config
в репозитории, или по любой другой причине я могу скопировать конфигурацию другому пользователю и запустить ее там, как это означает $HOME
не оценивается до тех пор, пока Бандлер на самом деле не построит камень.