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

Phoenix创建数据库时mint依赖编译失败:找不到public_key.hrl

问题描述

使用Phoenix框架编写Hello World程序时,执行mix ecto.create创建数据库过程中,mint依赖编译失败。系统先提示安装rebar3以构建:telemetry,随后出现编译错误:

==> mint Compiling 1 file (.erl) src/mint_shims.erl:37:14: can't find include lib "public_key/include/public_key.hrl" %   37| -include_lib("public_key/include/public_key.hrl"). %     |              ^ 

当前环境版本信息:

$ elixir --version
Erlang/OTP 25 [erts-13.1.5] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]

Elixir 1.14.0 (compiled with Erlang/OTP 24)

执行locate public_key仅返回Linux内核头文件路径,无法找到Erlang对应的public_key.hrl文件。

解决方案

问题核心是缺少Erlang public_key组件的相关文件,可按以下步骤排查修复:

1. 安装系统级依赖

不同Linux发行版需安装对应依赖,确保Erlang编译时能包含public_key组件:

  • Debian/Ubuntu 系列:
    sudo apt-get install libssl-dev erlang-public-key
    
  • CentOS/RHEL 系列:
    sudo yum install openssl-devel erlang-public-key
    
  • Arch Linux:
    sudo pacman -S openssl erlang
    

2. 重新通过asdf编译安装Erlang

若系统依赖已安装,但asdf此前安装的Erlang未包含public_key,需重新编译:

  1. 卸载当前Erlang版本:
    asdf uninstall erlang 25.1.5
    
    (将版本号替换为你实际使用的OTP25具体版本)
  2. 设置编译选项,确保启用SSL及public_key支持:
    export ERLANG_CONFIGURE_OPTIONS="--with-ssl=$(which openssl)"
    
  3. 重新安装Erlang:
    asdf install erlang 25.1.5
    
  4. 重新设置全局或项目本地Erlang版本:
    # 全局设置
    asdf global erlang 25.1.5
    # 或仅当前项目设置
    asdf local erlang 25.1.5
    

3. 验证修复

重新编译mint依赖,确认错误解决:

mix deps.compile mint

编译成功后,再次执行mix ecto.create即可完成数据库创建。

内容的提问来源于stack exchange,提问作者plombix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:52:29