Ubuntu系统安装Erlang 24时依赖缺失问题求助
Erlang 24在Ubuntu上安装时的libssl依赖问题解决方法
问题重现
执行以下命令安装Erlang 24:
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb sudo dpkg -i erlang-solutions_2.0_all.deb sudo apt-get update sudo apt install esl-erlang=1:24.3.3-1 cmake libsodium-dev libssl-dev build-essential
出现依赖错误:
Reading package lists... Done Building dependency tree... Done Reading state information... Done build-essential is already the newest version (12.9ubuntu3). cmake is already the newest version (3.22.1-1ubuntu1.22.04.1). libssl-dev is already the newest version (3.0.2-0ubuntu1.7). Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: esl-erlang : Depends: libssl1.0.0 but it is not installable or libssl1.0.2 but it is not installable or libssl1.1 but it is not installable E: Unable to correct problems, you have held broken packages.
解决方案
方法1:安装libssl1.1兼容包(适用于Ubuntu 22.04及以上版本)
Ubuntu 22.04默认使用libssl3,而Erlang 24依赖的libssl1.1已不在默认仓库,可通过旧版Ubuntu仓库获取:
- 添加focal版本的安全源:
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
- 更新源并安装libssl1.1:
sudo apt update sudo apt install libssl1.1
- 重新执行Erlang安装命令:
sudo apt install esl-erlang=1:24.3.3-1 cmake libsodium-dev libssl-dev build-essential
- (可选)安装完成后移除focal源,避免后续更新冲突:
sudo rm /etc/apt/sources.list.d/focal-security.list sudo apt update
方法2:使用asdf版本管理器安装(推荐,避免系统依赖冲突)
asdf可以独立管理Erlang版本,不依赖系统包:
- 安装asdf所需依赖:
sudo apt install git curl libncurses5-dev libwxgtk3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk
- 安装asdf:
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.13.1
- 配置bash环境(其他shell需对应调整):
echo ". $HOME/.asdf/asdf.sh" >> ~/.bashrc echo ". $HOME/.asdf/completions/asdf.bash" >> ~/.bashrc source ~/.bashrc
- 添加Erlang插件并安装指定版本:
asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git asdf install erlang 24.3.3
- 设置全局或局部使用该版本:
asdf global erlang 24.3.3 # 局部生效:asdf local erlang 24.3.3
方法3:手动编译安装Erlang
通过源码编译跳过系统包依赖限制:
- 下载Erlang 24.3.3源码包:
wget https://github.com/erlang/otp/releases/download/OTP-24.3.3/otp_src_24.3.3.tar.gz tar -xzf otp_src_24.3.3.tar.gz cd otp_src_24.3.3
- 配置编译参数(指定系统ssl路径):
./configure --with-ssl=/usr/lib/x86_64-linux-gnu/ --prefix=/usr/local/erlang24
- 编译并安装:
make -j$(nproc) sudo make install
- 添加到环境变量:
echo 'export PATH=/usr/local/erlang24/bin:$PATH' >> ~/.bashrc source ~/.bashrc
内容的提问来源于stack exchange,提问作者Tommaso Ceredi
相关产品推荐
相关产品推荐

