ソースから最新の cURL を構築したいですか?
OS に付属の cURL は最新ではない可能性があるため、特定の要件に対して最新バージョンが必要な場合は、ソースからビルドする必要があります。
最近、CentOS 上のデフォルトの出荷バージョンで cURL を使用して HTTP/3 をテストしていましたが、うまくいきませんでした。ところで、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 <a href="https://.com/tftp-servers-for-windows/">tftp</a>
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
[root@lab ~]#
ただし、最新の cURL バージョン (7.67) は HTTP/3 をサポートします。したがって、ソースからビルドするという選択肢は 1 つしかありませんでした。これはほんの一例です。他にもいくつかの要件があるかもしれません。
次の例は、CentOS 8.x および Ubuntu 20.x 上の 7.67 (私が書いている時点では最新) のものです。ただし、他のバージョンでも手順は同じです。

前提条件
必要な依存関係をインストールしましょう。
- システムをアップデートします。これはオプションですが、私はそうすることを好みます。常に最新のパッケージがインストールされています。
yum update -y
- 必要なパッケージのインストール
yum install wget gcc openssl-devel -y
- 最新の cURL ソースをダウンロードします。最新バージョンを確認するには 、公式ダウンロード ページ を参照してください。
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
- 以下のような出力が表示されます。
configure: Configured to build curl/libcurl:
Host setup: x86_64-pc-linux-gnu
Install prefix: /usr/local
Compiler: gcc
CFLAGS: -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread
CPPFLAGS:
LDFLAGS:
LIBS: -lssl -lcrypto -lssl -lcrypto -lz
curl version: 7.67.0
SSL: enabled (OpenSSL)
SSH: no (--with-libssh2)
zlib: enabled
brotli: no (--with-brotli)
GSS-API: no (--with-gssapi)
TLS-SRP: no (--enable-tls-srp)
resolver: POSIX threaded
IPv6: enabled
Unix sockets: enabled
IDN: no (--with-{libidn2,winidn})
Build libcurl: Shared=yes, Static=yes
Built-in manual: enabled
--libcurl option: enabled (--disable-libcurl-option)
Verbose errors: enabled (--disable-verbose)
Code coverage: disabled
SSPI: no (--enable-sspi)
ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt
ca cert path: no
ca fallback: no
LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib)
LDAPS: no (--enable-ldaps)
RTSP: enabled
RTMP: no (--with-librtmp)
Metalink: no (--with-libmetalink)
PSL: no (libpsl not found)
Alt-svc: no (--enable-alt-svc)
HTTP2: disabled (--with-nghttp2)
HTTP3: disabled (--with-ngtcp2, --with-quiche)
ESNI: no (--enable-esni)
Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP
Features: 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 をインストールするのに役立つことを願っています。
