我使用自制(Mojave)安装节点,之后php停止工作,如果我尝试运行php -v,我会得到这个错误:
php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
我尝试卸载node和icu4c,但问题仍然存在
我使用自制(Mojave)安装节点,之后php停止工作,如果我尝试运行php -v,我会得到这个错误:
php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
Referenced from: /usr/local/bin/php
Reason: image not found
我尝试卸载node和icu4c,但问题仍然存在
当前回答
[2020]版
对我来说,就是用所需的版本安装icu4c。
如果你需要安装旧版本,如版本62,(其他版本相同的步骤),你需要:
用这个版本创建自己的repo(或找别人的repo) Brew tap(每个版本的链接都不同):
62年版本
https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
64年版本
https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
66年版本
https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb
67年版本
https://raw.githubusercontent.com/Homebrew/homebrew-core/88b9cc789820f2f544d8d4a1053eebb044c2926c/Formula/icu4c.rb
yourUsername / homebrew-versions /公式/ 将下载的文件放入“公式”文件夹 brew tap [yourUsername]/homebrew-versions brew install [yourUsername]/homebrew-versions/icu4c .使用实例 你说对了!
其中[yourUsername]是您的GitHub帐户或已经拥有所需版本的人的名称。
Unfortunately, latest homebrew gives no longer a warning and now displays the error: Error: Calling Installation of XXX from a GitHub commit URL is disabled! Use 'brew extract XXX' to stable tap on GitHub instead. So the way to go now is to create a new repo on github called homebrew-versions to host the Formula in a Tap Then initialise it with: brew tap-new MYORG/homebrew-versions after git cloning the homebrew repo as suggested by Shine Hugh, copy paste the raw ruby file to your new Formula. Beware the funny naming convention! Example: File name is: gettext@0.20.2.rb Class name is: GettextAT0202 Example: https://github.com/nedap/homebrew-versions source:https://itnext.io/how-to-install-an-older-brew-package-add141e58d32
其他回答
我已经尝试了这里的许多建议,最后酿造升级php是对我有用的,但似乎这个问题无处不在
实际上,我很惊讶这个解决方案还没有提出,我觉得这是最简单的解决方案。
去GitHub,找到与你需要的icu4c版本匹配的brewfile版本,并获得文件的原始版本(按照上面的链接,然后单击“查看文件然后原始”)。
然后让brew从那个url重新安装。
例如,版本62.1:
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
例如,版本64.2:
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
更新:
Homebrew的新版本可能要求您先下载该文件。如果是这样:
wget https://raw.githubusercontent.com/Homebrew/homebrew-core/a806a621ed3722fb580a58000fb274a2f2d86a6d/Formula/icu4c.rb
brew reinstall icu4c.rb
对我来说,brew重装nodejs修复了这个问题-我的问题是运行Elixir/Phoenix,所以不是PHP特定的,我认为这是由brew安装postgres引起的,但重新安装没有帮助。我从npm命令中得到它。
Leland的答案对我来说很管用,但我不得不把第4步和第6步改为:
4) git checkout -B icu4c-62.1 575eb4b
6) brew重装Formula/icu4c.rb
如果你有最新的icu4c版本,并且像我一样遭受软件脆弱的折磨,只想让postgres/任何东西工作:
$ brew upgrade icu4c
Warning: icu4c 69.1 already installed
然后你可以创建符号链接:
> dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicuuc.68.dylib
cd /usr/local/opt/icu4c/lib
ln -s libicuuc.69.1.dylib libicuuc.68.dylib
ln -s libicuio.69.1.dylib libicui18n.68.dylib
这些符号链接将在您第一次更新icu4c时消失,但这可能是最快的修复方法。