尝试在 Mac OS X 10.10.3 和 Macports 上安装 gollum 时收到以下错误消息:
sudo gem install charlock_holmes -- --with-icu-dir=/opt/local
********* 需要 icu(brew install icu4c 或 apt-get install libicu-dev)
这问题已经发布解决方案是:
“按照错误信息操作:使用brew安装icu4c”。
有没有办法避免切换到 homebrew 而只安装一个包?
答案1
这个问题也类似于这个但他们的回答还最终答案是“放弃 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
使用 repo检查我的或者由于任何其他原因我可能会将配置复制到其他用户并在那里运行它,因为这意味着$HOME
直到 Bundler 实际构建 gem 时才会进行评估。
答案2
答案3
icu
我确实从 MacPorts安装了
sudo -E port install icu
然后我安装charlock_holmes
使用
sudo -E gem install charlock_holmes -- \
--with-opt-lib=/opt/local/lib \
--with-opt-include=/opt/local/include/
最后使用以下方法安装了 Gollum
sudo -E gem install gollum
(这是在 Mac OS X 10.11.5 上,仅供参考)