0、备份服务器
如为云服务器,建议先备份服务器快照或镜像,避免升级的版本和之前业务不兼容导致服务出现异常
1、编译安装较高版本curl
官网下载地址:https://curl.se/download/
如下命令:
wget https://curl.se/download/curl-8.0.1.tar.gz --no-check-certificate #下载官方源码包
#解压缩、编译安装
tar -xzvf curl-8.0.1.tar.gz
cd curl-8.0.1
./configure --prefix=/usr/local/curl --with-ssl=/usr/local/ssl --with-zlib=/usr/local/zlib
make && make install #默认安装位置在/usr/local/bin/curl
#查看安装后的版本
/usr/local/curl/bin/curl -V
2、卸载低版本的curl
如下命令:
#ubuntu操作系统
apt remove curl -y #卸载旧版本curl
ln -s /usr/local/curl/bin/curl /usr/bin/curl #添加编译的高版本curl到环境变量
#centos操作系统
yum remove curl -y #卸载旧版本curl
rm -rf /usr/bin/curl
ln -s /usr/local/curl/bin/curl /usr/bin/curl #添加编译的高版本curl到环境变量
3、避“坑”参考
3.1 编译报错
- 编译时遇到报错
--with-openssl was given but OpenSSL could not be detected
解决方法:
#安装openssl和openssl的库/头文件 包
#ubuntu操作系统,分开执行下面的命令
sudo apt install openssl
sudo apt install libssl-dev
#centos操作系统
yum -y install openssl openssl-devel
- 编译时,报错
/usr/bin/ld: cannot find crti.o: No such file or directory
或者 类似C compiler cannot create executables
原因:
早期旧版本的Ubuntu等操作系统,混合编译缺少支持,需要安装gcc-multilib
解决方法:
sudo apt install gcc-multilib
3.2 新版本curl执行报错
- 安装完成后,执行curl命令
/usr/local/bin/curl -V
报错/usr/local/bin/curl: symbol lookup error: /usr/local/bin/curl: undefined symbol: curl_multi_poll
原因:
未找到动态库引用位置,需要添加动态库路径到系统动态库配置文件
解决方法:
#添加动态库路径到系统动态库配置文件
echo "/usr/lib" >> /etc/ld.so.conf
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig -v && ldconfig /etc/ld.so.conf
#再次验证版本
/usr/local/bin/curl -V