如何在CentOS和Ubuntu上构建和安装最新版本的cURL?
想要从源代码构建最新的cURL吗?
操作系统自带的cURL可能不是最新的版本,如果您需要满足特定需求的最新版本,则需要从源代码构建。
最近,我在CentOS上使用cURL的默认版本进行了测试,但是那样做不起作用。顺便说一下,您还可以使用cURL进行更多操作。
[root@lab ~]# curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 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: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
[root@lab ~]#
然而,最新的cURL版本(7.67)支持HTTP/3。所以,我只有一个选择-从源代码构建。这只是一个例子,您可能有其他要求。
下面的示例适用于CentOS 8.x和Ubuntu 20.x上的7.67(我写这篇文章时的最新版本)。但是,对于任何其他版本,操作步骤都是相同的。
先决条件
让我们安装所需的依赖项。
- 更新系统。虽然这是可选的,但我更喜欢这样做。我总是安装最新版本的软件包。
yum update -y
- 安装所需软件包
yum install wget gcc openssl-devel -y
- 下载最新的cURL源代码-您可以参考他们的official download page了解最新版本。
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
- 解压缩下载的
gz
文件
gunzip -c curl-7.67.0.tar.gz | tar xvf -
它会在当前工作目录下创建一个新文件夹。
在CentOS/RHEL上构建cURL
下载并解压缩最新的cURL后,现在是时候构建它们了。
- 进入解压缩后新创建的文件夹
cd curl-7.67.0
- 按照以下方式配置SSL
./configure --with-ssl
- 您将看到类似下面的输出。
配置: 配置为构建curl / libcurl:
主机设置: x86_64-pc-linux-gnu
安装前缀: /usr/local
编译器: gcc
CFLAGS: -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread
CPPFLAGS:
LDFLAGS:
LIBS: -lssl -lcrypto -lssl -lcrypto -lz
curl版本: 7.67.0
SSL: 已启用 (OpenSSL)
SSH: 否 (–with-libssh2)
zlib: 已启用
brotli: 否 (–with-brotli)
GSS-API: 否 (–with-gssapi)
TLS-SRP: 否 (–enable-tls-srp)
解析器: POSIX线程
IPv6: 已启用
Unix套接字: 已启用
IDN: 否 (–with-{libidn2,winidn})
构建libcurl: Shared=yes, Static=yes
内置手册: 已启用
–libcurl选项: 已启用 (–disable-libcurl-option)
详细错误: 已启用 (–disable-verbose)
代码覆盖: 已禁用
SSPI: 否 (–enable-sspi)
ca证书束: /etc/pki/tls/certs/ca-bundle.crt
ca证书路径: 否
ca fallback: 否
LDAP: 否 (–enable-ldap / –with-ldap-lib / –with-lber-lib)
LDAPS: 否 (–enable-ldaps)
RTSP: 已启用
RTMP: 否 (–with-librtmp)
Metalink: 否 (–with-libmetalink)
PSL: 否 (未找到libpsl)
Alt-svc: 否 (–enable-alt-svc)
HTTP2: 已禁用 (–with-nghttp2)
HTTP3: 已禁用 (–with-ngtcp2, –with-quiche)
ESNI: 否 (–enable-esni)
协议: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
特性: SSL IPv6 UnixSockets libz AsynchDNS NTLM NTLM_WB HTTPS-proxy
- 让我们安装它们
make
make install
完成需要几秒钟时间,一旦完成,您可以验证版本以确保安装成功。
在Ubuntu上构建cURL
我假设您已经按先决条件部分的说明下载了最新版本。
- 转到已解压缩下载的cURL的文件夹
- 安装依赖项
apt-get install -y binutils-common binutils make
- 如果您没有安装上述依赖项(binutils),则可能会出现以下错误。
configure: error: ar not found in PATH. Cannot continue without ar.
- 现在是时候使用
configure
命令构建了。
./configure --with-ssl
- 如果上述执行没有出现错误,则最后使用make命令进行安装。
make
make install
就是这样!
验证
使用--version
查看版本详细信息。
# curl --version
curl 7.67.0 (x86_64-pc-linux-gnu) libcurl/7.67.0 OpenSSL/1.0.2k-fips zlib/1.2.7
Release-Date: 2019-11-06
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL UnixSockets
#
结论
您看到了,当您掌握了这些步骤时,一切都很容易。希望这可以帮助您从源代码安装cURL。