CentOS Stream 8にLibGD2.3.2をソースインストール

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

経緯

LibGD2.3.3をCentOS Stream 8にソースインストール

▲こちらにて最新の LibGD 2.3.3 をインストールしてPHPのソースインストールを進めていたところ configure は通って make で次のようなエラーとなる現象が発生しました。

In file included from /usr/local/src/php-8.0.11-mysqlc-mysqlnd/php-8.0.11/main/php.h:439,
                 from /usr/local/src/php-8.0.11-mysqlc-mysqlnd/php-8.0.11/ext/gd/gd.c:28:
/usr/local/src/php-8.0.11-mysqlc-mysqlnd/php-8.0.11/ext/gd/gd.c: In function ‘zm_startup_gd’:
/usr/local/src/php-8.0.11-mysqlc-mysqlnd/php-8.0.11/ext/gd/gd.c:353:48: error: ‘GD_FLIP_HORIZONTAL’ undeclared (first use in this function); did you mean ‘GD_AFFINE_SHEAR_HORIZONTAL ’?
  REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", GD_FLIP_HORIZONTAL, CONST_CS | CONST_PERSISTENT);

ということで、1つ前の LibGD 2.3.2 をインストールする流れとなりました。

目的

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

checking whether to enable JIS-mapped Japanese font support in GD... no
checking for gdlib >= 2.1.0... no
configure: error: Package requirements (gdlib >= 2.1.0) were not met:

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

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

PHP7.4.0 からLibGDは同梱されなくなりました。

ということでLibGDをインストールすることにします。

ちなみにテストサーバ用途の複数バージョン同居環境の場合、下手にdnfするよりソースからバージョン指定でインストールしておいたほうが将来的にメリットがあります。

特徴

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

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

環境

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

事前準備

ダウンロードURLの確認

Githubから入手します。

https://github.com/libgd/libgd/tags

2021-09-25時点では「2.3.3」が最新ですが今回は「2.3.2」をインストールしていきます。

https://github.com/libgd/libgd/releases/tag/gd-2.3.2

こちらのページの一番下「Source code (tar.gz)」がお目当てです。

URLを控えておきます。

https://github.com/libgd/libgd/archive/refs/tags/gd-2.3.2.tar.gz

インストール

LIBGD_VERSION=2.3.2
ls -la /usr/local/src
ls -la /usr/local/lib

mkdir /usr/local/src/gd-$LIBGD_VERSION

cd /usr/local/src/gd-$LIBGD_VERSION

wget https://github.com/libgd/libgd/releases/download/gd-$LIBGD_VERSION/libgd-$LIBGD_VERSION.tar.gz

tar xvzf libgd-$LIBGD_VERSION.tar.gz

cd libgd-$LIBGD_VERSION

./configure --prefix=/usr/local/lib/libgd-$LIBGD_VERSION

configure の最後のほうに▼の表示が出てきます。

** Configuration summary for libgd 2.3.2:

   Support for gd/gd2 images:        no
   Support for Zlib:                 yes
   Support for PNG library:          no
   Support for JPEG library:         yes
   Support for WebP library:         no
   Support for HEIF library:         no
   Support for AVIF library:         no
   Support for TIFF library:         no
   Support for Freetype 2.x library: no
   Support for Fontconfig library:   no
   Support for Xpm library:          no
   Support for liq library:          no
   Support for complex text:         no
   Support for pthreads:             yes

「no」が付いてるところはサポートされないので、このままでは PNG も使えないことになります。
PHPのGDにはPNGサポートは必須です。
他にも、WebPとかも欲しいところです。

# 必要なものだけでOK
dnf install libpng-devel
dnf install libwebp-devel
dnf install libXpm-devel
dnf install freetype-devel

# 追加したのでもう一度
./configure --prefix=/usr/local/lib/libgd-$LIBGD_VERSION

次のようになりました。

** Configuration summary for libgd 2.3.2:

Support for gd/gd2 images: no
Support for Zlib: yes
Support for PNG library: yes
Support for JPEG library: yes
Support for WebP library: yes
Support for HEIF library: no
Support for AVIF library: no
Support for TIFF library: no
Support for Freetype 2.x library: yes
Support for Fontconfig library: no
Support for Xpm library: yes
Support for liq library: no
Support for complex text: no
Support for pthreads: yes

make

make install

PHPのconfigureの前に

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

checking whether to enable JIS-mapped Japanese font support in GD... no
checking for gdlib >= 2.1.0... no
configure: error: Package requirements (gdlib >= 2.1.0) were not met:

Package 'gdlib', 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/libgd-2.3.2/lib/pkgconfig"