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

为何Elixir的mix要求安装带.ez后缀的同版本hex?

Elixir运行mix local.hex的疑问解答

问题场景

运行mix local.hex时收到以下提示:

$ mix local.hex
Found existing entry: /home/civfan/.asdf/installs/elixir/1.17.2-otp-27/.mix/archives/hex-2.1.1
Are you sure you want to replace it with "https://builds.hex.pm/installs/1.16.0/hex-2.1.1.ez"? [Yn]

当前终端环境已通过asdf配置为Elixir v1.17.2:

$ asdf list
elixir
 *1.17.2-otp-27
erlang
 *27.0.1

$ asdf current
elixir          1.17.2-otp-27   /home/civfan/.tool-versions
erlang          27.0.1          /home/civfan/.tool-versions

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

Elixir 1.17.2 (compiled with Erlang/OTP 27)

此前通过apt安装的Erlang已用purge清除,asdf配置正常,可正常运行erl、elixir、mix命令。

疑问解答

1. 为何要求用hex-2.1.1.ez替换hex-2.1.1,二者仅差.ez后缀?

本地已存在的hex-2.1.1是解压后的Hex归档目录,远程的hex-2.1.1.ez是未解压的归档文件。mix local.hex命令会自动下载.ez文件并解压到指定目录,替换已有的解压后目录——本质是用同版本的官方归档重新覆盖安装Hex,后缀差异只是文件形式不同,内容完全一致。

2. 我的环境是Elixir v1.17.2,为何显示要安装对应v1.16.0的hex?

路径中的1.16.0是Hex兼容的最低Elixir版本,不是要求安装对应Elixir 1.16.0的Hex版本。Hex会根据当前Elixir版本自动匹配兼容的安装包,这个路径标识仅代表该Hex包支持从Elixir 1.16.0开始的版本,完全兼容你的Elixir 1.17.2,无需担心版本不匹配问题。

3. .ez后缀在Elixir/Erlang中有特殊含义吗?

是的,.ez是Erlang/Elixir生态中的标准归档文件格式,本质是经过压缩的Erlang应用包,包含编译后的BEAM字节码、配置文件和依赖等内容。Erlang的code模块可以直接加载.ez格式的归档,Elixir的mix工具也用它来分发本地工具(如Hex、Phoenix),方便快速安装和管理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:56:07