升级PHP7.4的时候一直失败,初步判断是因为Curl版本过低的原因,所以尝试升级。

一、通过 yum 安装

网上的方法大致相同,基本如下:

1. 启用 city-fan.org 的源

# rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-2-1.rhel7.noarch.rpm

2. 将repo文件中的enabled修改为1

# vim /etc/yum.repos.d/city-fan.org.repo

[city-fan.org]
name=city-fan.org repository for Red Hat Enterprise Linux (and clones) $releasever ($basearch)
#baseurl=http://mirror.city-fan.org/ftp/contrib/yum-repo/rhel$releasever/$basearch
mirrorlist=http://mirror.city-fan.org/ftp/contrib/yum-repo/mirrorlist-rhel$releasever
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-city-fan.org

3. 升级curl

# yum update curl

顺利的话,几分钟左右就能升级完成。

二、源码编译

之所以进行到这一步,是因为在升级后运行curl -V,版本号还是7.53.1,跟我升级前一样。
原来,我的系统存在两个curl,分别位于/usr/local/bin/usr/bin下,前者应该是我之前哪一次手动更新过的,后一个则是系统安装的。

1. 删除其中一个curl

这是我的第一个思路,就是想办法删除其中一条,最快捷的方式就是直接通过yum remove操作,结果系统显示:

错误:尝试移除受保护的 "yum"

参考网上的方法,使用rpm -e --nodeps curl命令,倒是真的删除了刚才升级的版本,但是紧跟着问题也来了,当我再次尝试用yum方式来操作的时候,系统提示我curl连接错误。貌似我把内置的curl给整崩溃了。
在想不出任何办法的情况下,无奈只能回滚快照,顺带检验一下MediaWiki发送邮件的问题是不是如我所料(具体见《MediaWiki邮件发送问题》一文)。

2. 尝试合并curl

到这个时候就觉得自己对linux系统了解的太少,首先就是curl命令的指向,如果能链接到/usr/bin/curl,那么问题也就能解决了。
可惜我不会!
用了一下ln命令,结果curl是换过来了,libcurl还是原来的,然后系统提示两个的版本不一致。那一刻我又有了一种想要回滚快照的冲动。

3. 源码升级

既然都要回滚快照了,干脆趁机再试验一把源码升级的操作。

I. 下载源码

# wget https://curl.se/download/curl-7.73.0.tar.gz

II. 解压缩

# tar xf curl-7.73.0.tar.gz

III. 编译及安装

# cd curl-7.73.0
# ./configure --prefix=/usr/local/curl
# make && make install

这是我按照网友的方法来的,结果系统里又多了一个curl版本,这次在/usr/local/curl/bin下面。
make uninstall反安装,继续试验。

# ./configure --prefix=/usr

这次升级了内置的版本,可人家还是不认。
再来一下:

# ./configure --prefix=/usr/local

好了,这次OK了,用curl -V命令终于变成7.73.0,安装PHP7.4也没问题了。

三、未解决的问题

现在系统里有两个7.73.0版本的curl,虽然能够正常工作,但是两个版本共存总有点不爽。
以后再说吧。

参考文档

How to yum update curl 7.29 to 7.61 - CentOS 7.X
CentOS 7.4升级Curl版本

最后修改:2020 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏