CentOS Stream 8にlibzip-1.8.0をソースインストール

覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。

目的

PHP8.0.11をCentOS Stream 8にインストールしようとしたところ configure で次のエラーが発生しました。

checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... no
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

調べていくと、PHP 5.6.0 から、--with-libzip=DIR オプションが追加されたようで、libzip 0.11 以降が必要です。
PHP7.2 までは気にしたこともなかったのですが、どうやらPHP7.3からはlibzipを含まず、必要なら自分でインストールする形になったようです。

https://www.php.net/manual/ja/zip.installation.php

特徴

  • ソースコードからのインストール
  • 複数バージョンの共存

特定バージョンでの開発や動作確認など開発環境での用途を目的としています。

環境

実施日2021-09-25
サーバさくらのVPS 2G
OSCentOS Stream 8
cat /etc/redhat-release
CentOS Stream release 8

libzip 1.8.0

公式サイトでダウンロードURLを確認

libzipの公式サイトのダウンロードページに行くと最新版へのリンクがあります。

お目当ては tar.gz です。
URLを控えておきます。

https://libzip.org/download/libzip-1.8.0.tar.gz

Google Chromeならリンクテキストの上で右クリックして「リンクのアドレスをコピー」で取得できます。

インストール

公式の手順はこちらです。

LIBZIP_VERSION=1.8.0
ls -la /usr/local/src
ls -la /usr/local/lib

mkdir /usr/local/src/libzip-$LIBZIP_VERSION

cd /usr/local/src/libzip-$LIBZIP_VERSION

wget https://libzip.org/download/libzip-$LIBZIP_VERSION.tar.gz

cd /usr/local/src/libzip-$LIBZIP_VERSION

tar xvzf libzip-$LIBZIP_VERSION.tar.gz

cd libzip-$LIBZIP_VERSION

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lib/libzip-$LIBZIP_VERSION

make

make check

make install

トラブル対応

古いバージョンのCentOSで行っている場合は cmake でエラーとか色々でると思います。

下記の記事ではいろいろトラブル対応をあるのでご覧ください。

PHPのconfigureの前に

PHPのconfigureエラーで次のように出ていると思いますが、ここに書かれているとおり PKG_CONFIG_PATH の設定が必要です。

checking for libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0... no
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found
Package 'libzip', required by 'virtual:world', not found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

下記を実行してから、PHPのconfigureを再開します。

export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/libzip-1.8.0/lib64/pkgconfig"

phpのconfigure には次のように指定を加えます。

--with-libzip=/usr/local/lib/libzip-1.8.0