libxml2-2.9.9をCentOS6にソースインストール

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

目的

PHP7.0.0からは 2.9.0 以上が良さそうです。
PHP Predefined Constants の 「Only available in Libxml」
ここにある定数を使わないなら古いバージョンでも動きます。

特徴

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

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

環境

実施日2019-6-21
サーバさくらのVPS 2G
OSCentOS 6.10
cat /etc/redhat-release
CentOS release 6.10 (Final)
rpm -qa | grep centos-release
centos-release-scl-7-4.el6.centos.noarch
centos-release-6-10.el6.centos.12.3.x86_64
centos-release-scl-rh-2-4.el6.centos.noarch

事前準備

python-devel

python-devel が入っていなければ make で次のようなエラーになります。

make[4]: ディレクトリ `/usr/local/src/libxml2-2.9.9/libxml2-2.9.9/python' に入ります
  CC       libxml.lo
libxml.c:14:20: error: Python.h: そのようなファイルやディレクトリはありません
libxml.c:15:24: error: fileobject.h: そのようなファイルやディレクトリはありません
In file included from libxml.c:28:
libxml_wrap.h:67: error: expected specifier-qualifier-list before ‘PyObject_HEAD

yum でインストールします。

yum install python-devel

libxml2 2.9.9

/tmp/libxml2-2.9.9.tar.gz

公式サイトからダウンロードして、/tmp  にアップロード

libxml2の公式サイトのダウンロードページに行くと次のように書かれています。

Binary ports:
RPMs for x86_64 are available directly on xmlsoft.org, the source RPM will compile on any architecture supported.

http://xmlsoft.org/downloads.html

「xmlsoft.org」にftpへのリンクが張られてますのでクリックします。

いっぱい出てきますので、ブラウザの検索機能(CTRL + F)で「libxml2-2.9.9.tar.gz」で検索します。

インストール

ls -la /usr/local/src
ls -la /usr/local/lib

mkdir /usr/local/src/libxml2-2.9.9

cp /tmp/libxml2-2.9.9.tar.gz /usr/local/src/libxml2-2.9.9/libxml2-2.9.9.tar.gz

cd /usr/local/src/libxml2-2.9.9

tar xvzf libxml2-2.9.9.tar.gz

cd libxml2-2.9.9

./configure --prefix=/usr/local/lib/libxml2-2.9.9

make

make install

パスを通す

# 既に定義されてたら加える
echo $PKG_CONFIG_PATH
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/libxml2-2.9.9/lib/pkgconfig"

# 未定義ならセットする
echo $PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/lib/libxml2-2.9.9/lib/pkgconfig

configure

phpのconfigure での指定方法

--with-libxml-dir=/usr/local/lib/libxml2-2.9.9