dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.62.dylib错误运行php afeter安装节点与brew在Mac上

pet*_*ner 207 php macos homebrew node.js

我使用自制程序(Mojave)安装节点,然后php停止工作,如果我尝试运行php -vi得到此错误:

php -v
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.62.dylib
  Referenced from: /usr/local/bin/php
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

我试图卸载节点和icu4c,但问题仍然存在

小智 255

在我的情况下,因为icu4c升级到版本63但我在本地安装的postgres图像仍然引用了icu4c 62.1.因此我不得不改变使用的icu4c版本:

 brew info icu4c
 brew switch icu4c <version>
Run Code Online (Sandbox Code Playgroud)

  • 新的“brew switch”命令是“brew link” (26认同)
  • 我最终运行了“ brew reinstall postgres”,这似乎解决了我的问题。 (22认同)
  • 我没有安装62.1。“ brew list icu4c”显示了“ /usr/local/Cellar/icu4c/63.1”中的文件。酿造开关icu4c 63.1为我修复了它。 (18认同)
  • 不幸的是,冲泡开关不再可用。 (5认同)
  • 我在Postgres日志中发现此错误后找到了此页面。我还尝试了“ brew switch icu4c 63.1”,但是即使重新启动postgres之后,日志中仍然出现相同的错误。不知道下一步该怎么做... (2认同)

Jas*_*ase 243

注意 -这将升级您的PHP版本。

我只是有同样的问题。升级Homebrew然后进行清理对​​我有用。由于软件包版本不匹配,此错误可能对我显示。上面的解决方案都不能解决我的错误,但是运行以下自制程序命令可以解决。

brew upgrade
Run Code Online (Sandbox Code Playgroud)

注意 -这将升级您的所有冲煮包装。如果只想升级特定的软件包,请确保特定。

brew upgrade // for upgrading all packages -- this is the command I used

brew upgrade {package} // for upgrading a specific package
Run Code Online (Sandbox Code Playgroud)

然后

brew cleanup
Run Code Online (Sandbox Code Playgroud)

  • 我不会这样做,因为“brew升级”将升级*所有*您的brew过时的软件包,相反,可能只执行“brew升级npm”或特定软件包,而不是全部。 (37认同)
  • 那很简单 (22认同)
  • 我认为对于像我这样具有两个PHP版本的环境的人来说,这不是一个好主意。另外,brew upgrade将升级您的PHP版本,如果您的目标不是升级PHP,而是解决库错误,则这不一定是好方法。 (5认同)
  • @xgMz 你是对的。对我来说,我不在乎是否更新了所有软件包,但对于不想更新的人来说,这可能不太好。我在我的解决方案中添加了注释。谢谢! (2认同)

Dor*_*ian 74

对我来说,解决方案是:

brew reinstall icu4c
Run Code Online (Sandbox Code Playgroud)

然后

gem uninstall charlock_holmes
gem install charlock_holmes
Run Code Online (Sandbox Code Playgroud)


Lel*_*and 55

事实证明,我和@Grey Black一样,必须安装v62.1的icu4c.没有其他工作.

但是,brew switch icu4c 62.1仅在您过去安装了62.1时才有效.如果你没有涉及更多的腿部工作.Homebrew不容易安装以前版本的公式.

我是这样做的:

  1. 我们首先需要深度克隆Homebrew仓库.可能还要等一下:git -C $(brew --repo homebrew/core) fetch --unshallow
  2. brew log icu4c跟踪引用62.1的提交; 575eb4b诀窍.
  3. cd $(brew --repo homebrew/core)
  4. git checkout 575eb4b -- Formula/icu4c.rb
  5. brew uninstall --ignore-dependencies icu4c
  6. brew install icu4c您现在应该拥有正确的依赖版本!现在只是......
  7. git reset && git checkout . 清理修改后的食谱.

添加了几个额外的笔记,感谢@Noah的捕获

  • 纱线升级的戏剧性如此之多. (35认同)
  • 就我而言,我需要icu4c v63,因此相关的结帐提交为[bc0c97952453ff6afc146aa3a706e9902aba4300](https://github.com/Homebrew/homebrew-core/commit/bc0c97952453ff6afc146aa3a706e9902aba4300)。git命令是`git checkout bc0c97952453ff6afc146aa3a706e9902aba4300-Formula / icu4c.rb`然后是“ brew switch 63.1”。 (5认同)
  • 这是唯一对我有用的解决方案,谢谢!就我而言,问题是ffmpeg软件包,我假设安装了较新版本的`icu4c`。更新,升级brew均无效,也没有重新安装,重新链接,从源代码构建php。 (4认同)
  • 您应该首先执行git -C(brew --repo homebrew / core)取回--unshallow,以确保您具有完整的brew git历史记录。 (2认同)
  • 这导致 `==&gt; 下载 https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1 #=#=-# # curl: (22) 请求的 URL 返回错误:404 错误:失败下载资源“icu4c_bottle_manifest”下载失败:https://ghcr.io/v2/homebrew/core/icu4c/manifests/67.1`当我尝试使用 https://github.com/Homebrew/homebrew- 获取版本`67.1`时核心/提交/88b9cc789820f2f544d8d4a1053eebb044c2926c。 (2认同)

Aru*_*ati 36

升级macOS到版本后,我遇到了同样的问题10.13.6.我无法运行composerphp命令.经过一段时间的研究并尝试在线发布的各种解决方案,重新安装php使用homebrew工作.

brew reinstall php@7.1

  • 在将macOS升级到"10.14.2"后,运行`node`时出现了同样的错误,"brew重新安装节点"也是我的票 (7认同)
  • `brew reinstall php` 可能最终会安装与当前版本不同的版本。您可能必须使用“php@7.1”指定版本 (2认同)
  • 如果您的php损坏,则无法通过运行php -v获取当前版本: (2认同)

Kev*_*ott 23

实际上,令我惊讶的是该解决方案尚未提出,我觉得这是最简单的解决方案。

去GitHub上,找到的版本匹配的brewfile的版本icu4c,你需要和获取文件的原始版本(按照上面的链接,点击View File然后Raw)。

然后只需从该URL重新安装brew。

例如,version 62.1

brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/575eb4bbef683551e19f329f60456b13a558132f/Formula/icu4c.rb
Run Code Online (Sandbox Code Playgroud)

  • 效果很好!要修复错误`dyld:未加载库:/usr/local/opt/icu4c/lib/libicui18n.64.dylib`,此命令修复了它:`brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core /a806a621ed3722fb580a58000fb274a2f2d86a6d/公式/icu4c.rb` (30认同)
  • 这不再起作用了。它要求你“酿造提取物” (8认同)
  • 简单运行“brew reinstall icu4c”对我有用。感谢您引导我走向正确的方向! (4认同)
  • 对于 icu4c **66**: `brew 重新安装 https://raw.githubusercontent.com/Homebrew/homebrew-core/22fb699a417093cd1440857134c530f1e3794f7d/Formula/icu4c.rb` (3认同)
  • @brunouno 您需要下载 .rb 文件并执行: `brew reinstall icu4c.rb` (3认同)
  • 你是救星! (2认同)
  • 不幸的是 **brew 升级** 删除了旧的链接版本,对于仍然想使用新版本并保持 brew 最新的人:1)使用提到的命令安装旧版本 2)从 **/usr/local/Cellar 复制 64.2 目录/icu4c/** 本地某处 3) 运行 `brew update` 以安装最新版本的 icu4c 4) 将保存的目录复制到 **/usr/local/Cellar/icu4c/** 5) 现在您可以在版本之间切换: `冲泡开关 icu4c 64.2` (2认同)

Luc*_*nte 21

运行npm version,看看是否看到相同的错误。

如果是这样,请升级您的节点版本brew upgrade npm

==> Upgrading 1 outdated package, with result:
npm 8.1.2 -> 10.3.0
==> Upgrading npm
==> Installing dependencies for node: icu4c
==> Installing node dependency: icu4c
Run Code Online (Sandbox Code Playgroud)

学分


小智 11

似乎在最新的 OS X 更新后无法链接icu4c使用brew。这让事情变得更有趣。我发现对我有用的唯一解决方案:

  1. 下载并编译icu4c62.1 到/usr/local/icu4c/62.1
mkdir ~/sources
cd ~/sources
wget http://download.icu-project.org/files/icu4c/62.1/icu4c-62_1-src.tgz
tar xvzf icu4c-62_1-src.tgz
cd icu/source/

sudo mkdir /usr/local/icu4c/62.1
./configure --prefix=/usr/local/icu4c/62.1
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
  1. 链接库:
ln -s /usr/local/icu4c/62.1/lib/*.dylib /usr/local/include/
Run Code Online (Sandbox Code Playgroud)
  1. 设置DYLD_LIBRARY_PATH~/.bash_profile
export DYLD_LIBRARY_PATH=/usr/local/include
Run Code Online (Sandbox Code Playgroud)

  • 我正在运行 PHP 7.1,这是唯一对我有用的东西。 (3认同)
  • 更新到 OS Big Sur 后,icu4c 67 丢失,尝试了各种解决方案,但这是唯一有效的解决方案。从 https://github.com/unicode-org/icu/releases/download/release-67-1/icu4c-67_1-src.tgz 下载。谢谢你! (2认同)

ser*_*nay 11

这为我解决了:

brew upgrade node
Run Code Online (Sandbox Code Playgroud)

  • 似乎类似的情况,&gt;“brew 重新安装节点”在切换到 Catalina 后确实帮助了我 (2认同)

Geo*_*vic 8

其实,我尝试了所有这些有意义的解决方案,在这篇文章中提到的,但运行时,我还是得到了同样的错误php -vcomposer。node 版本很好,npm 也没有安装正确版本的问题,并且它们都在运行。运行reinstall php@7.1只是抛出一个错误。最后我不得不运行:

brew reinstall icu4c
Run Code Online (Sandbox Code Playgroud)

这基本上有效,我必须手动然后安装 php 依赖项,例如imagick.soimap.so 由于这些库是为我不再维护的项目安装的,我可以不用它们。但是,如果您确实依赖它们,请记住,之后会有更多工作要做。


cri*_*fan 8

我的问题:

# npm install -g canvas

dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.64.dylib
  Referenced from: /usr/local/opt/node@8/bin/node
  Reason: image not found
Run Code Online (Sandbox Code Playgroud)

现在20210118,经过多次尝试:

...
brew reinstall https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/icu4c.rb
brew upgrade npm
brew install node
brew uninstall --ignore-dependencies node@8 icu4c
brew install icu4c
...
Run Code Online (Sandbox Code Playgroud)

最终的解决方案是:

brew reinstall npm


小智 7

对我来说,它出现在 node@12 并且以下步骤对我有用 -

brew uninstall --ignore-dependencies icu4c
brew install node
Run Code Online (Sandbox Code Playgroud)

它自动安装了 icu4c 并修复了整个问题。


Cal*_*m M 6

对我来说brew reinstall nodejs解决了这个问题 - 我的问题是运行 Elixir/Phoenix 所以不是 PHP 特定的,我认为这是由 引起的brew install postgres,但重新安装并没有帮助。我是从命令中获取的npm


小智 6

实际上,我直接在 homebrew 页面上找到了解决方案: https: //docs.brew.sh/Common-Issues

升级 macOS 可能会导致如下错误:

  • dyld:库未加载:/usr/local/opt/icu4c/lib/libicui18n.54.dylib 配置:错误:找不到 libz
  • macOS 升级后,可能需要重新安装 Xcode 命令行工具并进行升级所有已安装的公式:
xcode-select --install
brew upgrade
Run Code Online (Sandbox Code Playgroud)

就我而言,问题与升级操作系统无关,但解决方案效果很好。


小智 5

公正brew remove phpbrew install php没有工作,也没有brew reinstall php。我的解决方案是:

brew remove php
cd /usr/local/Cellar
rm -rf php/
brew install php
brew doctor
brew cleanup
Run Code Online (Sandbox Code Playgroud)

现在php -v给我:

PHP 7.3.2 (cli) (built: Feb 14 2019 10:08:45) ( NTS )
Run Code Online (Sandbox Code Playgroud)


小智 5

brew update && brew upgrade为我工作