소스에서 최신 cURL을 빌드하고 싶으십니까?
OS와 함께 제공되는 cURL은 최신이 아닐 수 있으며 특정 요구 사항에 대한 최신 버전이 필요한 경우 소스에서 빌드해야 합니다.
최근에 CentOS에서 기본 제공 버전으로 cURL을 사용하여 HTTP/3을 테스트했지만 작동하지 않았습니다. BTW, cURL로 할 수 있는 일이 더 많습니다.
[[email protected] ~]# 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 [[email protected] ~]#
그러나 최신 cURL 버전(7.67)은 HTTP/3를 지원합니다. 그래서 저는 소스에서 빌드하는 단 하나의 옵션만 가지고 있었습니다. 이것은 한 가지 예일 뿐입니다. 다른 요구 사항이 있을 수 있습니다.
다음 예제는 CentOS 8.x 및 Ubuntu 20.x의 7.67(내가 작성하는 최신 버전)에 대한 것입니다. 그러나 절차는 다른 버전에서도 동일하게 유지됩니다.
목차
전제 조건
필요한 종속성을 설치해 보겠습니다.
- 시스템을 업데이트합니다. 이것은 선택 사항이지만 그렇게 하는 것을 선호합니다. 항상 최신 패키지가 설치되어 있습니다.
yum update -y
- 필수 패키지 설치
yum install wget gcc openssl-devel -y
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
완료하는 데 몇 초가 걸리며 완료되면 완료됩니다. 버전을 확인하여 성공적으로 설치되었는지 확인할 수 있습니다.
우분투에서 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을 설치하는 데 도움이 되기를 바랍니다.
기사를 재미있게 읽었습니까? 세상과 함께 나누는 건 어떨까요?