[curl][7.51.0]インストール(ソースファイル)

curlをソースファイルからインストールしてみます。

■公式サイト(?)
https://curl.haxx.se/

2016年12月11日時点で「7.51.0」が最新バージョンとなっています。

環境

インストールを行った環境は、以下の通りです。

  • OS:CentOS 7.2.1511

インストールするものは、以下です。

  • curl 7.51

事前準備

openssl-develのインストール

curl を SSLに対応させておきたいので、事前に「openssl-devel」をインストールしておきます。

# yum install openssl-devel

ソースファイルのダウンロード

以下のサイトから、ソースファイルをダウンロードします。

wgetでダウンロードする場合は、以下のような感じで大丈夫です。
ダウンロードしたファイルは、展開しておきましょう。

# cd /usr/local/src
# wget https://curl.haxx.se/download/curl-7.51.0.tar.gz
# tar zxvf curl-7.51.0.tar.gz
# ls -al | grep -i net-snmp
drwxrwxr-x. 18 1274 1274 4096 Dec 8 2014 curl-7.51.0
-rw-r--r--. 1 root root 6382428 Dec 8 2014 curl-7.51.0.tar.gz

インストール

コンパイルオプション

早速、ソースファイルをコンパイルしていくのですが、その前にコンパイルオプションにはどのようなものがあるか確認してみます。

# cd curl-7.51.0
# ./configure --help
`configure' configures curl - to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
 -h, --help display this help and exit
 --help=short display options specific to this package
 --help=recursive display the short help of all the included packages
 -V, --version display version information and exit
 -q, --quiet, --silent do not print `checking ...' messages
 --cache-file=FILE cache test results in FILE [disabled]
 -C, --config-cache alias for `--cache-file=config.cache'
 -n, --no-create do not create output files
 --srcdir=DIR find the sources in DIR [configure dir or `..']

Installation directories:
 --prefix=PREFIX install architecture-independent files in PREFIX
 [/usr/local]
 --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
 [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
 --bindir=DIR user executables [EPREFIX/bin]
 --sbindir=DIR system admin executables [EPREFIX/sbin]
 --libexecdir=DIR program executables [EPREFIX/libexec]
 --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
 --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
 --localstatedir=DIR modifiable single-machine data [PREFIX/var]
 --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
 --libdir=DIR object code libraries [EPREFIX/lib]
 --includedir=DIR C header files [PREFIX/include]
 --oldincludedir=DIR C header files for non-gcc [/usr/include]
 --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
 --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
 --infodir=DIR info documentation [DATAROOTDIR/info]
 --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
 --mandir=DIR man documentation [DATAROOTDIR/man]
 --docdir=DIR documentation root [DATAROOTDIR/doc/curl]
 --htmldir=DIR html documentation [DOCDIR]
 --dvidir=DIR dvi documentation [DOCDIR]
 --pdfdir=DIR pdf documentation [DOCDIR]
 --psdir=DIR ps documentation [DOCDIR]

Program names:
 --program-prefix=PREFIX prepend PREFIX to installed program names
 --program-suffix=SUFFIX append SUFFIX to installed program names
 --program-transform-name=PROGRAM run sed PROGRAM on installed program names

System types:
 --build=BUILD configure for building on BUILD [guessed]
 --host=HOST cross-compile to build programs to run on HOST [BUILD]

Optional Features:
 --disable-option-checking ignore unrecognized --enable/--with options
 --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
 --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
 --enable-maintainer-mode
 enable make rules and dependencies not useful (and
 sometimes confusing) to the casual installer
 --enable-silent-rules less verbose build output (undo: "make V=1")
 --disable-silent-rules verbose build output (undo: "make V=0")
 --enable-debug Enable debug build options
 --disable-debug Disable debug build options
 --enable-optimize Enable compiler optimizations
 --disable-optimize Disable compiler optimizations
 --enable-warnings Enable strict compiler warnings
 --disable-warnings Disable strict compiler warnings
 --enable-werror Enable compiler warnings as errors
 --disable-werror Disable compiler warnings as errors
 --enable-curldebug Enable curl debug memory tracking
 --disable-curldebug Disable curl debug memory tracking
 --enable-symbol-hiding Enable hiding of library internal symbols
 --disable-symbol-hiding Disable hiding of library internal symbols
 --enable-hidden-symbols To be deprecated, use --enable-symbol-hiding
 --disable-hidden-symbols
 To be deprecated, use --disable-symbol-hiding
 --enable-ares[=PATH] Enable c-ares for DNS lookups
 --disable-ares Disable c-ares for DNS lookups
 --disable-rt disable dependency on -lrt
 --enable-dependency-tracking
 do not reject slow dependency extractors
 --disable-dependency-tracking
 speeds up one-time build
 --disable-largefile omit support for large files
 --enable-shared[=PKGS] build shared libraries [default=yes]
 --enable-static[=PKGS] build static libraries [default=yes]
 --enable-fast-install[=PKGS]
 optimize for fast installation [default=yes]
 --disable-libtool-lock avoid locking (might break parallel builds)
 --enable-http Enable HTTP support
 --disable-http Disable HTTP support
 --enable-ftp Enable FTP support
 --disable-ftp Disable FTP support
 --enable-file Enable FILE support
 --disable-file Disable FILE support
 --enable-ldap Enable LDAP support
 --disable-ldap Disable LDAP support
 --enable-ldaps Enable LDAPS support
 --disable-ldaps Disable LDAPS support
 --enable-rtsp Enable RTSP support
 --disable-rtsp Disable RTSP support
 --enable-proxy Enable proxy support
 --disable-proxy Disable proxy support
 --enable-dict Enable DICT support
 --disable-dict Disable DICT support
 --enable-telnet Enable TELNET support
 --disable-telnet Disable TELNET support
 --enable-tftp Enable TFTP support
 --disable-tftp Disable TFTP support
 --enable-pop3 Enable POP3 support
 --disable-pop3 Disable POP3 support
 --enable-imap Enable IMAP support
 --disable-imap Disable IMAP support
 --enable-smb Enable SMB/CIFS support
 --disable-smb Disable SMB/CIFS support
 --enable-smtp Enable SMTP support
 --disable-smtp Disable SMTP support
 --enable-gopher Enable Gopher support
 --disable-gopher Disable Gopher support
 --enable-manual Enable built-in manual
 --disable-manual Disable built-in manual
 --enable-libcurl-option Enable --libcurl C code generation support
 --disable-libcurl-option
 Disable --libcurl C code generation support
 --enable-libgcc use libgcc when linking
 --enable-ipv6 Enable IPv6 (with IPv4) support
 --disable-ipv6 Disable IPv6 support
 --enable-versioned-symbols
 Enable versioned symbols in shared library
 --disable-versioned-symbols
 Disable versioned symbols in shared library
 --enable-threaded-resolver
 Enable threaded resolver
 --disable-threaded-resolver
 Disable threaded resolver
 --enable-verbose Enable verbose strings
 --disable-verbose Disable verbose strings
 --enable-sspi Enable SSPI
 --disable-sspi Disable SSPI
 --enable-crypto-auth Enable cryptographic authentication
 --disable-crypto-auth Disable cryptographic authentication
 --enable-ntlm-wb[=FILE] Enable NTLM delegation to winbind's ntlm_auth
 helper, where FILE is ntlm_auth's absolute filename
 (default: /usr/bin/ntlm_auth)
 --disable-ntlm-wb Disable NTLM delegation to winbind's ntlm_auth
 helper
 --enable-tls-srp Enable TLS-SRP authentication
 --disable-tls-srp Disable TLS-SRP authentication
 --enable-unix-sockets Enable Unix domain sockets
 --disable-unix-sockets Disable Unix domain sockets
 --enable-cookies Enable cookies support
 --disable-cookies Disable cookies support
 --enable-soname-bump Enable enforced SONAME bump
 --disable-soname-bump Disable enforced SONAME bump

Optional Packages:
 --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
 --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
 --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use
 both]
 --with-aix-soname=aix|svr4|both
 shared library versioning (aka "SONAME") variant to
 provide on AIX, [default=aix].
 --with-gnu-ld assume the C compiler uses GNU ld [default=no]
 --with-sysroot[=DIR] Search for dependent libraries within DIR (or the
 compiler's sysroot if not specified).
 --with-zlib=PATH search for zlib in PATH
 --without-zlib disable use of zlib
 --with-ldap-lib=libname Specify name of ldap lib file
 --with-lber-lib=libname Specify name of lber lib file
 --with-gssapi-includes=DIR
 Specify location of GSS-API headers
 --with-gssapi-libs=DIR Specify location of GSS-API libs
 --with-gssapi=DIR Where to look for GSS-API
 --with-winssl enable Windows native SSL/TLS
 --without-winssl disable Windows native SSL/TLS
 --with-darwinssl enable Apple OS native SSL/TLS
 --without-darwinssl disable Apple OS native SSL/TLS
 --with-ssl=PATH Where to look for OpenSSL, PATH points to the SSL
 installation (default: /usr/local/ssl); when
 possible, set the PKG_CONFIG_PATH environment
 variable instead of using this option
 --without-ssl disable OpenSSL
 --with-egd-socket=FILE Entropy Gathering Daemon socket pathname
 --with-random=FILE read randomness from FILE (default=/dev/urandom)
 --with-gnutls=PATH where to look for GnuTLS, PATH points to the
 installation root
 --without-gnutls disable GnuTLS detection
 --with-polarssl=PATH where to look for PolarSSL, PATH points to the
 installation root
 --without-polarssl disable PolarSSL detection
 --with-mbedtls=PATH where to look for mbedTLS, PATH points to the
 installation root
 --without-mbedtls disable mbedTLS detection
 --with-cyassl=PATH where to look for CyaSSL, PATH points to the
 installation root (default: system lib default)
 --without-cyassl disable CyaSSL detection
 --with-nss=PATH where to look for NSS, PATH points to the
 installation root
 --without-nss disable NSS detection
 --with-axtls=PATH Where to look for axTLS, PATH points to the axTLS
 installation prefix (default: /usr/local). Ignored
 if another SSL engine is selected.
 --without-axtls disable axTLS
 --with-ca-bundle=FILE Path to a file containing CA certificates (example:
 /etc/ca-bundle.crt)
 --without-ca-bundle Don't use a default CA bundle
 --with-ca-path=DIRECTORY
 Path to a directory containing CA certificates
 stored individually, with their filenames in a hash
 format. This option can be used with OpenSSL, GnuTLS
 and PolarSSL backends. Refer to OpenSSL c_rehash for
 details. (example: /etc/certificates)
 --without-ca-path Don't use a default CA path
 --with-ca-fallback Use the built in CA store of the SSL library
 --without-ca-fallback Don't use the built in CA store of the SSL library
 --without-libpsl disable support for libpsl cookie checking
 --with-libmetalink=PATH where to look for libmetalink, PATH points to the
 installation root
 --without-libmetalink disable libmetalink detection
 --with-libssh2=PATH Where to look for libssh2, PATH points to the
 LIBSSH2 installation; when possible, set the
 PKG_CONFIG_PATH environment variable instead of
 using this option
 --without-libssh2 disable LIBSSH2
 --with-librtmp=PATH Where to look for librtmp, PATH points to the
 LIBRTMP installation; when possible, set the
 PKG_CONFIG_PATH environment variable instead of
 using this option
 --without-librtmp disable LIBRTMP
 --with-winidn=PATH enable Windows native IDN
 --without-winidn disable Windows native IDN
 --with-libidn2=PATH Enable libidn2 usage
 --without-libidn2 Disable libidn2 usage
 --with-nghttp2=PATH Enable nghttp2 usage
 --without-nghttp2 Disable nghttp2 usage
 --with-zsh-functions-dir=PATH
 Install zsh completions to PATH
 --without-zsh-functions-dir
 Do not install zsh completions

Some influential environment variables:
 CC C compiler command
 CFLAGS C compiler flags
 LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
 nonstandard directory <lib dir>
 LIBS libraries to pass to the linker, e.g. -l<library>
 CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
 you have headers in a nonstandard directory <include dir>
 CPP C preprocessor
 LT_SYS_LIBRARY_PATH
 User-defined run-time library search path.

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to <a suitable curl mailing list: https://curl.haxx.se/mail/>.

コンパイル

configureオプションは、「–prefix」と「–with-perl-modules」を指定することにしました。

# ./configure --prefix=/usr/local/curl-7.51.0 --enable-libcurl-option
(省略)

こんな感じでサマリーが表示されました。

configure: Configured to build curl/libcurl: curl version: 7.51.0 Host setup: x86_64-pc-linux-gnu Install prefix: /usr/local/curl-7.51.0 Compiler: gcc SSL support: enabled (OpenSSL) SSH support: no (--with-libssh2) zlib support: enabled GSS-API support: no (--with-gssapi) TLS-SRP support: no (--enable-tls-srp) resolver: default (--enable-ares / --enable-threaded-resolver) IPv6 support: enabled Unix sockets support: enabled IDN support: 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) SSPI support: no (--enable-sspi) ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt ca cert path: no ca fallback: no LDAP support: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS support: no (--enable-ldaps) RTSP support: enabled RTMP support: no (--with-librtmp) metalink support: no (--with-libmetalink) PSL support: no (libpsl not found) HTTP2 support: disabled (--with-nghttp2) Protocols: DICT FILE FTP FTPS GOPHER HTTP HTTPS IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP

make

続いて、makeしてインストールしましょう。

# make
# make install

事後処理

インストールが終わったら、今後のことを考えて以下の対応をしておきます。

シンボリックリンクの作成

バージョン付きのディレクトリにインストールされていますので、バージョンなしでアクセスできるようにシンボリックリンクを作ります。

# cd /usr/local
# ls -al | grep curl
drwxr-xr-x   6 root root    52 Dec 12 01:41 curl-7.51.0
# ln -s curl-7.51.0 curl
# ls -al | grep curl
lrwxrwxrwx 1 root root 12 Dec 12 01:52 curl -> curl-7.51.0/
drwxr-xr-x 6 root root 52 Dec 12 01:41 curl-7.51.0

これで、仮に新しいバージョンのcurlをインストールする際も、バージョン付きディレクトリにインストールして、シンボリックリンク「/usr/local/curl」を作り直せば、新バージョンへの切替・切り戻しが簡単にできます。

curl-configの修正

ここの対応は必要かどうかちょっと確信はないのですが、なんとなく必要そうな気がするのでメモしておきます。

「/usr/local/curl/bin/curl-config」というファイルに、インストール時に指定したprefixが書かれています。
今回の場合は「prefix=/usr/local/curl-7.51.0」という感じです。

# less /usr/local/curl/bin/curl-config
(24行目)
prefix=/usr/local/curl-7.51.0

これを、シンボリックリンクで指定したディレクトリに変更しておきます。

# vi /usr/local/curl/bin/curl-config
(44行目)
prefix=/usr/local/curl-7.51.0
 ↓
prefix=/usr/local/curl

これで、何か別のプログラムからcurlにリンクした場合、curlをバージョンアップしたときに古いバージョンにリンクした状態になることを防げる気がします。

どうですかね。。。


以上で、インストールは完了です。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク