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

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

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

注意

PHP8.0.11 と LibGD2.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);

今回 PHP8.0.11 で発覚しましたが、 PHP8.0.11 周辺のバージョンは同様かなと思います。

解決方法は、LibGD2.3.3 ではなく LibGD 2.3.2 を使うことです。

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

ということで、ここ以降は読まずに▲のリンク先にお進みください。

目的

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」が最新のようですのでこちらをインストールしていきます。

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

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

URLを控えておきます。

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

インストール

LIBGD_VERSION=2.3.3
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.3:

   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.3:

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.3/lib/pkgconfig"