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 了。。

相关推荐
和煦的春风7 分钟前
性能案例分析 | Waiting for GPU completion
android·linux
道路与代码之旅38 分钟前
Delphi - IndyHttpServer接收上传文件
运维·服务器
lybugproducer1 小时前
深入 Linux 文件系统:从数据存储到万物皆文件
linux
烦躁的大鼻嘎1 小时前
【Linux】深入Linux多线程架构与高性能编程
linux·运维·服务器·开发语言·c++·ubuntu
羚羊角uou1 小时前
【Linux】system V共享内存
linux·运维·服务器
林克爱塞尔达1 小时前
Linux入门(二)
linux·运维·chrome
破烂儿2 小时前
Ubuntu Server 安装图形界面和通过Window远程桌面连接服务器(Xrdp)
linux·服务器·ubuntu
Hello.Reader2 小时前
Kafka 运维实战基本操作含命令与最佳实践
运维·kafka·linq
存储服务专家StorageExpert2 小时前
手搓一个 DELL EMC Unity存储系统健康检查清单
linux·运维·服务器·存储维护·emc存储
笑口常开xpr2 小时前
Linux 库开发入门:静态库与动态库的 2 种构建方式 + 5 个编译差异 + 3 个加载技巧,新手速看
linux·c语言·动态库·静态库