Ubuntu 16.04安装OpenFOAM5遇GnuTLS recv error (-9)问题求助
解决Ubuntu 16.04安装OpenFOAM5时的GnuTLS recv error (-9)问题
问题原因
这个错误本质是TLS连接过程中收到了不符合预期长度的数据包,结合你使用的Ubuntu 16.04系统,主要有这几个诱因:
- 网络波动或源服务器访问不畅:OpenFOAM官方源在国内的连接稳定性欠佳,偶尔会出现数据包传输中断或异常的情况。
- Ubuntu 16.04已终止标准支持:Ubuntu 16.04(Xenial Xerus)早在2021年4月就结束了标准支持,官方系统源和OpenFOAM针对该版本的源已经被归档,连接时容易触发TLS握手或传输错误。
- GnuTLS库版本老旧:Ubuntu 16.04自带的GnuTLS库版本较低,存在一些已知的TLS协议兼容性bug,和新服务器连接时容易出问题。
- 代理/防火墙干扰:如果你的网络用了代理或者防火墙,可能会拦截或篡改TLS数据包,导致长度异常。
解决方法
1. 先重试安装命令
有时候只是临时网络抽风,直接重新跑安装命令试试:
sudo apt update && sudo apt install openfoam5
如果还是失败,再往下看其他方案。
2. 更换为国内归档源(针对Ubuntu 16.04 EOL)
因为16.04已经停更,官方源访问不稳定,换成国内镜像的归档源能大幅提升成功率:
- 先备份原有源文件,避免改错:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo cp /etc/apt/sources.list.d/openfoam.list /etc/apt/sources.list.d/openfoam.list.bak
- 编辑系统源文件:
sudo nano /etc/apt/sources.list
把原有内容替换成中科大的归档源:
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
- 编辑OpenFOAM源文件:
sudo nano /etc/apt/sources.list.d/openfoam.list
替换为官方归档源(国内访问相对稳定):
deb http://dl.openfoam.org/ubuntu xenial main
- 更新源并重新安装:
sudo apt update && sudo apt install openfoam5
3. 更新系统GnuTLS库
老旧的GnuTLS库可能是罪魁祸首,先更新它:
sudo apt update && sudo apt install --only-upgrade gnutls-bin libgnutls30
更新完成后再重试安装命令。
4. 排查代理和防火墙干扰
如果用了代理,先临时关闭:
unset http_proxy unset https_proxy
要是开了防火墙,也临时关掉测试一下(测试完记得重新开启):
sudo ufw disable
之后再跑安装命令,看问题是否解决。
5. 手动下载安装包离线安装
如果上面的方法都不行,就手动下载安装包来装:
- 下载对应版本的.deb包(用wget或者浏览器下载都可以):
wget http://dl.openfoam.org/ubuntu/pool/main/o/openfoam5/openfoam5_5.0-1xenial1_amd64.deb
- 手动安装并修复依赖:
sudo dpkg -i openfoam5_5.0-1xenial1_amd64.deb sudo apt -f install
内容的提问来源于stack exchange,提问作者O.E
相关产品推荐
相关产品推荐

