Bygg nyeste cURL fra kildekode: Enkel guide for CentOS & Ubuntu

Slik bygger du nyeste cURL fra kildekoden

Er du ute etter å kompilere den aller nyeste versjonen av cURL fra selve kildekoden? Det kan være gode grunner til dette.

Den cURL-versjonen som følger med operativsystemet ditt er ikke alltid den mest oppdaterte. Hvis du trenger den ferskeste utgaven for å oppfylle spesifikke behov, er det nødvendig å bygge fra kilden selv.

Jeg opplevde nylig at jeg måtte teste HTTP/3 med cURL. Standardversjonen som fulgte med CentOS fungerte ikke som forventet. Forøvrig kan cURL brukes til mye mer enn du kanskje tror.

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

Den nyeste versjonen av cURL (7.67 på tidspunktet jeg skriver dette) gir derimot støtte for HTTP/3. Dette ga meg bare ett alternativ – å bygge cURL fra kilden. Dette er bare ett eksempel; det finnes mange andre situasjoner der du kan ha lignende behov.

Eksemplet under er basert på versjon 7.67 (den nyeste i skrivende stund) på CentOS 8.x og Ubuntu 20.x, men fremgangsmåten er i bunn og grunn den samme for alle versjoner.

Forutsetninger

Før vi starter, må vi sørge for at de nødvendige avhengighetene er installert:

  • Det er lurt å oppdatere systemet. Selv om det ikke er absolutt nødvendig, foretrekker jeg å gjøre dette for å ha de nyeste pakkene installert.
yum update -y
  • Installer de nødvendige pakkene:
yum install wget gcc openssl-devel -y
wget https://curl.haxx.se/download/curl-7.67.0.tar.gz
  • Pakk ut den nedlastede .tar.gz-filen
gunzip -c curl-7.67.0.tar.gz | tar xvf -

Dette vil skape en ny mappe i gjeldende arbeidsmappe.

Bygge cURL på CentOS/RHEL

Nå som du har lastet ned og pakket ut den nyeste versjonen av cURL, er det på tide å bygge den.

  • Gå inn i den nyopprettede mappen:
cd curl-7.67.0
  • Konfigurer med SSL:
./configure --with-ssl
  • Du vil se en utskrift omtrent som dette:
  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

Prosessen vil ta noen sekunder. Når den er fullført, kan du verifisere installasjonen ved å sjekke versjonen.

Bygge cURL på Ubuntu

La oss anta at du har lastet ned den nyeste versjonen som forklart under «Forutsetninger».

  • Gå til mappen hvor cURL-en ble pakket ut.
  • Installer avhengighetene:
apt-get install -y binutils-common binutils make
  • Hvis du mangler de nevnte avhengighetene (binutils), kan du få en feilmelding.
configure: error: ar not found in PATH. Cannot continue without ar.
  • Nå er det på tide å bygge med kommandoen `configure`:
./configure --with-ssl
  • Hvis kommandoen over ikke gir feil, installer med `make`:
make
  make install

Det er det hele!

Verifikasjon

Bruk `–version`-flagget for å se versjonsdetaljene:

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

Konklusjon

Som du ser, er det ganske enkelt når du har oversikten over de nødvendige stegene. Jeg håper denne veiledningen hjelper deg med å installere cURL fra kilden.

Likte du denne artikkelen? Del den gjerne med andre!