## 一、升级前准备(安装编译依赖)

首先安装编译curl所需的依赖包,执行以下命令:

```bash

# 安装基础编译工具和依赖

yum install -y gcc gcc-c++ make cmake libtool \

openssl openssl-devel zlib zlib-devel \

libssh2 libssh2-devel ca-certificates

```

## 二、下载并编译最新版curl

### 1. 下载最新源码(以2026年最新稳定版8.8.0为例,可替换为最新版本号)

```bash

# 进入临时目录

cd /usr/local/src

# 下载最新curl源码(推荐从官网获取最新版本号:https://curl.se/download.html)

wget https://curl.se/download/curl-8.8.0.tar.gz

# 解压源码包

tar -zxvf curl-8.8.0.tar.gz

cd curl-8.8.0

```

### 2. 配置编译参数(关键:指定SSL和安装路径)

```bash

# 配置编译选项,指定使用OpenSSL(替代系统默认的NSS),并设置安装路径

./configure \

--prefix=/usr/local/curl \

--with-ssl=/usr \

--with-zlib \

--with-libssh2 \

--enable-ipv6 \

--enable-sockets \

--enable-threaded-resolver

```

> 说明--with-ssl=/usr 表示使用系统自带的OpenSSL,避免依赖冲突--prefix 指定安装目录,方便后续管理。

### 3. 编译并安装

```bash

# 编译(-j后接CPU核心数,加快编译速度,比如-j4)

make -j$(nproc)

# 安装

make install

```

## 三、替换系统默认curl(关键步骤)

### 1. 备份旧版本curl

```bash

# 备份系统原有curl

mv /usr/bin/curl /usr/bin/curl.old

mv /usr/lib64/libcurl.so.4 /usr/lib64/libcurl.so.4.old

```

### 2. 创建软链接,指向新安装的curl

```bash

# 链接curl可执行文件

ln -s /usr/local/curl/bin/curl /usr/bin/curl

# 链接libcurl库文件

ln -s /usr/local/curl/lib/libcurl.so.4 /usr/lib64/libcurl.so.4

# 更新系统库缓存

ldconfig

```

## 四、验证升级结果

执行以下命令检查版本,确认升级成功:

```bash

curl -V

```

### 预期输出示例(版本号为最新版):

```

curl 8.8.0 (x86_64-pc-linux-gnu) libcurl/8.8.0 OpenSSL/1.0.2k-fips zlib/1.2.7 libssh2/1.8.0

Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp

Features: alt-svc AsynchDNS HSTS HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM SSL threadsafe UnixSockets

```

---

## 五、常见问题解决

### 1. 编译时提示"openssl not found"

- 原因:未安装OpenSSL开发包

- 解决:重新安装依赖 yum install -y openssl-devel

### 2. 执行curl时提示"libcurl.so.4: cannot open shared object file"

- 原因:库文件链接失效

- 解决:重新执行 ldconfig 刷新库缓存

### 3. 想回滚到旧版本

- 执行以下命令恢复:

```bash

rm -f /usr/bin/curl /usr/lib64/libcurl.so.4

mv /usr/bin/curl.old /usr/bin/curl

mv /usr/lib64/libcurl.so.4.old /usr/lib64/libcurl.so.4

ldconfig

```