💬

GnuTLS と HTTP/3 対応の curl をビルドする

2024/08/19に公開

Debian 12 bookworm-backports および Debian 13 trixie で GnuTLS による HTTP/3 対応の curl が導入される予定なので、試しに $HOME/http3/ のもとにビルドおよびインストールした

最初に GnuTLS をビルドするために次のパッケージを導入した

sudo apt install gperf gtk-doc-tools git-merge-changelog nettle-dev libtasn1-dev libtasn1-bin libunistring-dev libunbound-dev libp11-kit-dev

GnuTLS をビルドする

git clone --depth 1 https://gitlab.com/gnutls/gnutls.git
cd gnutls
./bootstrap
./configure --prefix=$PWD
make
make install

次に nghttp3 をビルドする

cd ..
git clone -b v1.1.0 https://github.com/ngtcp2/nghttp3
cd nghttp3
git submodule update --init
autoreconf -fi
./configure --prefix=$PWD../ --enable-lib-only
make
make install

次に ngtcp2 をビルドする

cd ..
git clone -b v1.2.0 https://github.com/ngtcp2/ngtcp2
cd ngtcp2
autoreconf -fi
./configure PKG_CONFIG_PATH=$PWD../lib/pkgconfig:$PWD../lib/pkgconfig LDFLAGS="-Wl,-rpath,$PWD../lib" --prefix=$PWD../ --enable-lib-only --with-gnutls
make
make install

curl ビルド前に次のパッケージを導入する

sudo apt install libpsl-dev

curl をビルドする

cd ..
git clone https://github.com/curl/curl
cd curl
autoreconf -fi
PKG_CONFIG_PATH=$PWD/../lib/pkgconfig ./configure --prefix=$PWD/.. --with-gnutls --with-nghttp3 --with-ngtcp2
make
make install

curl のバージョンを確認する

bin/curl --version
curl 8.10.0-DEV (x86_64-pc-linux-gnu) libcurl/8.10.0-DEV GnuTLS/3.8.7 zlib/1.2.13 brotli/1.0.9 zstd/1.5.4 libpsl/0.21.2 nghttp2/1.52.0 ngtcp2/1.2.0 nghttp3/1.1.0
Release-Date: [unreleased]
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP UnixSockets zstd

Discussion