You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Rails报错:Image not found - ../digest/md5.bundle

解决Rails中Image not found - ../digest/md5.bundle的问题

是的,LibreSSL 2.8.3确实会引发这个问题,原因在于Ruby 2.6.x系列(你的版本是2.6.4)在编译时默认依赖OpenSSL 1.0.x版本的库,而LibreSSL虽然是OpenSSL的分支,但它的二进制兼容性和旧版OpenSSL有差异。你的报错日志也明确显示:digest/md5.bundle在尝试加载/usr/local/opt/openssl/lib/libssl.1.0.0.dylib——这个路径是Homebrew安装的OpenSSL 1.0的标准位置,而你当前使用的LibreSSL并没有提供这个文件,所以触发了加载错误。

下面是几个可行的解决方法:

  • 方法一:重新用兼容的OpenSSL版本编译Ruby
    这是最稳妥的长期解决方案:

    1. 首先通过Homebrew安装OpenSSL 1.0.x版本:
      brew install openssl@1.0
      
    2. 用rbenv重新编译Ruby 2.6.4,指定使用刚安装的OpenSSL路径:
      RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.0)" rbenv install 2.6.4
      
    3. 设置该Ruby版本为全局或本地默认:
      # 全局设置
      rbenv global 2.6.4
      # 或者仅当前项目设置
      rbenv local 2.6.4
      
    4. 重新安装bundler和项目依赖:
      gem install bundler
      bundle install
      
  • 方法二:升级Ruby到更高版本
    Ruby 2.7及以上版本对OpenSSL 1.1+和LibreSSL的兼容性更好,如果你没有必须停留在2.6.4的理由,可以尝试升级:

    # 比如安装Ruby 2.7.8
    rbenv install 2.7.8
    rbenv global 2.7.8
    

    升级后重新安装Rails和依赖即可正常使用。

  • 临时应急方案(不推荐长期使用)
    如果你需要快速临时解决,可以尝试创建软链接将LibreSSL的库映射到OpenSSL 1.0的路径,但这个方法可能引发其他兼容性问题:

    sudo ln -s /usr/local/opt/libressl/lib/libssl.dylib /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
    sudo ln -s /usr/local/opt/libressl/lib/libcrypto.dylib /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib
    

    但再次强调,这个方法只是权宜之计,重新编译Ruby或升级版本才是更可靠的选择。

内容的提问来源于stack exchange,提问作者Laurens de Vries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:22:58