Jak zbudować i zainstalować najnowszą wersję cURL na CentOS i Ubuntu?

Czy potrzebujesz zbudować najnowszą wersję cURL bezpośrednio z kodu źródłowego?

Wersja cURL, która jest standardowo dostarczana z systemem operacyjnym, może być przestarzała. Jeśli potrzebujesz najnowszej wersji, aby sprostać konkretnym wymaganiom, konieczna jest kompilacja ze źródeł.

Ostatnio, podczas testowania HTTP/3, napotkałem problem z domyślną wersją cURL zainstalowaną na CentOS. Okazało się, że nie obsługuje ona tego protokołu. Warto zaznaczyć, że możliwości cURL są znacznie szersze.

[[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] ~]#

Najnowsza edycja cURL (wersja 7.67) posiada już obsługę HTTP/3. W tej sytuacji jedynym rozwiązaniem było skompilowanie cURL samodzielnie z kodu źródłowego. To tylko jeden z przykładów, twoje potrzeby mogą być inne.

Poniższy przewodnik ilustruje proces kompilacji wersji 7.67 (najnowszej w czasie pisania) na systemach CentOS 8.x oraz Ubuntu 20.x. Jednakże, schemat działania jest podobny dla innych wersji.

Wymagania wstępne

Zacznijmy od instalacji niezbędnych pakietów.

  • Aktualizacja systemu. Chociaż nie jest to obowiązkowe, osobiście preferuję mieć najnowsze pakiety.
yum update -y
  • Instalacja wymaganych pakietów
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
  • Rozpakowanie pobranego pliku .tar.gz
gunzip -c curl-7.67.0.tar.gz | tar xvf -

Spowoduje to utworzenie nowego folderu w twoim bieżącym katalogu.

Kompilacja cURL na CentOS/RHEL

Po pobraniu i rozpakowaniu najnowszej wersji cURL, możemy przejść do procesu kompilacji.

  • Przejdź do folderu utworzonego po rozpakowaniu archiwum.
cd curl-7.67.0
  • Skonfiguruj kompilację z obsługą SSL, używając poniższego polecenia.
./configure --with-ssl
  • Powinieneś zobaczyć dane podobne do tych poniżej.
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

Proces kompilacji potrwa tylko kilka sekund. Po zakończeniu, możesz sprawdzić wersję, aby upewnić się, że wszystko przebiegło pomyślnie.

Kompilacja cURL na Ubuntu

Zakładam, że pobrałeś najnowszą wersję, zgodnie z instrukcjami w sekcji dotyczącej wymagań wstępnych.

  • Przejdź do katalogu, w którym rozpakowałeś pobrane archiwum cURL.
  • Zainstaluj niezbędne zależności.
apt-get install -y binutils-common binutils make
  • Jeżeli nie masz zainstalowanych powyższych zależności (binutils), możesz napotkać następujący błąd.
configure: error: ar not found in PATH. Cannot continue without ar.
  • Teraz możemy przystąpić do konfiguracji procesu kompilacji.
./configure --with-ssl
  • Jeżeli nie wystąpiły żadne błędy, możemy zainstalować cURL za pomocą polecenia make.
make
make install

To wszystko!

Weryfikacja

Wykorzystaj opcję --version, aby wyświetlić szczegółowe informacje o zainstalowanej wersji.

# 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
#

Podsumowanie

Jak widzisz, cały proces jest bardzo prosty, o ile masz pod ręką odpowiednią instrukcję. Mam nadzieję, że ten poradnik okaże się przydatny podczas instalacji cURL ze źródeł.

Spodobał Ci się ten artykuł? Zachęcam do udostępniania go innym!


newsblog.pl