CentOS手工升级curl记

笔者一台服务器装有 CentOS 7.9 系统,运行 curl -V 查询 curl 的版本是 7.29,这个老版本的 curl 不支持 HTTP/2 协议。为了使 curl 能连接HTTP/2,curl 必须升级到至少7.46.0版本以上。查询 curl的官网得知当前最新版本是 8.8.0,然而再仔细看,适用于 CentOS 系统的却是7.76.1版,

经过一番摸索,CentOS 是可以安装 8.8.0的,需要手动编译才成功,下面记录一下我手工升级的过程:

1. 安装依赖:

bash 复制代码
sudo yum groupinstall -y 'Development Tools'
sudo yum install -y libnghttp2 libnghttp2-devel openssl-devel

2. 下载并安装最新版本的curl:

bash 复制代码
wget https://curl.se/download/curl-8.8.0.zip
unzip curl-8.8.0.zip
cd curl-8.8.0
./configure

运行 ./configure 而不带参数的话,大概率会报错,如:

于是按提示,把这些 --with 开头的参数都加到 ./configure,尝试运行:

bash 复制代码
./configure  --with-amissl  --with-bearssl  --with-gnutls  --with-mbedtls  --with-nss  --with-openssl  --with-rustls  --with-schannel  --with-secure-transport  --with-wolfssl

嗯,报了另一个错:NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md

NSS是一个提供网络安全相关服务的库,系统检测到正在尝试使用NSS(Network Security Services)库,而 curl

计划不再支持 NSS 。因此,如确实要使用NSS,就必须通过--with-nss-deprecated 参数显式指定这一点。

好吧,调整一下configure参数:

bash 复制代码
./configure  --with-amissl  --with-bearssl  --with-gnutls  --with-mbedtls  --with-nss  --with-nss-deprecated --with-openssl  --with-rustls  --with-schannel  --with-secure-transport  --with-wolfssl

又来报错:--with-wolfssl but wolfSSL was not found or doesn't work

暂时不用 wolfSSL 的话,就去掉这个参数,再尝试运行:

bash 复制代码
./configure  --with-amissl  --with-bearssl  --with-gnutls  --with-mbedtls  --with-nss  --with-nss-deprecated --with-openssl  --with-rustls  --with-schannel  --with-secure-transport

又是报错:error: --with-rustls was specified but could not find rustls.

再尝试去掉 --with-rustls 参数:

bash 复制代码
./configure  --with-amissl  --with-bearssl  --with-gnutls  --with-mbedtls  --with-nss  --with-nss-deprecated --with-openssl  --with-schannel  --with-secure-transport

这样,编译过程开始有了进展,不再报错。

编译成功了,但是从上面截图的编译结果看来,倒数第6行显示:HTTP2: No (--with-nghttp2, --with-hyper),如果要启用 HTTP/2,必须要再加多 --with-nghttp2, --with-hyper 参数,再次编译。

bash 复制代码
./configure  --with-amissl  --with-bearssl  --with-gnutls  --with-mbedtls  --with-nss  --with-nss-deprecated --with-openssl  --with-schannel  --with-secure-transport  --with-nghttp2  --with-hyper

编译如果没有报错,就应该出现下图的样子,HTTP2已经是 enabled 的状态。

3. 收尾工作

bash 复制代码
make
make install
sudo ldconfig

4. 确认curl版本和HTTP/2支持:

bash 复制代码
curl -V

输出应包括类似以下内容:

恭喜贺喜,CentOS 可以破格用上最新版 curl 了。。

相关推荐
吕了了5 分钟前
87 Windows 系统安装的本质是什么?
运维·windows·电脑·系统
阿里巴巴P8资深技术专家1 小时前
docker容器启动报错
运维·docker·容器
杨云龙UP1 小时前
MySQL 8.0.x InnoDB 写入链路优化:Redo Log 与 Buffer Pool 扩容与缓冲区调优实战记录-20251029
linux·运维·数据库·sql·mysql
txzz88882 小时前
CentOS-Stream-10 系统安装之网络设置
linux·运维·服务器·网络·计算机网络·centos
qq_401700412 小时前
嵌入式Linux网口MAC地址修改
linux·运维·macos
Xの哲學3 小时前
Linux DRM 架构深度解析
linux·服务器·算法·架构·边缘计算
秋刀鱼 ..3 小时前
第三届信息化教育与计算机技术国际学术会议(IECA 2026)
运维·人工智能·科技·机器学习·制造
老王熬夜敲代码3 小时前
Linux的权限
linux
我是谁??3 小时前
Linux上检查U盘可读和修复
linux·运维·服务器
南棱笑笑生3 小时前
20251213给飞凌OK3588-C开发板适配Rockchip原厂的Buildroot【linux-6.1】系统时适配CTP触摸屏FT5X06
linux·c语言·开发语言·rockchip