升级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版本