ICUのインストール

国際化のためのライブラリーであるICUをソースコードからインストールする。

ICUはIntlという名前でも参照されることがあり,PHPの拡張機能などで利用されている。

インストール手順

インストール情報
項目 説明
配布元 ICU – International Components for Unicode
リポジトリー unicode-org/icu: The new home of the ICU project source code.
手順
依存情報
依存先 (必須) Make (GNU Make)
依存先 (任意)
依存元 PHP intl拡張機能
インストールコマンド
sh -eux <<-"EOT"
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
PKG=icu VER=50.2 TAG=$(echo release-$VER | sed 's/\./-/')
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"

if command -v git >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 git://github.com/unicode-org/icu $PKG
  cd $PKG
  git fetch --depth 1 origin tag $TAG
  git checkout -f $TAG
  git clean -dfX
  cd icu4c/source
else
  [ -e $PKG-$VER ] || wget http://download.icu-project.org/files/${PKG}4c/$VER/${PKG}4c-${VER%.*}_${VER#*.}-src.tgz
  tar -xf $PKG-$VER.*
  cd $PKG-$VER
  make -kj $J clean distclean || :
fi

./configure --prefix="$LOCAL/stow/$PKG-$VER"
make -j $J
make -j $J check
make -j $J install

cd "$LOCAL/stow"
echo $PKG-[0-9]* | xargs -n 1 stow --ignore=dir -D
stow --ignore=dir $PKG-$VER
EOT
インストール例
日付 バージョン OS 依存関係
2018-07-01 61.1 Ubuntu 16.04
2019-05-05 50.2 Ubuntu 18.04 GNU Make 4.2.1, GCC 7.4.0

マニュアルだと,runConfigureICUを実行するようにある。しかし,通常のconfigureでも問題なかった。

ICUは,C言語用のAPIのICU4CとJava用のICU4Jがあり,ファイル名やディレクトリー構成などが他のパッケージと若干異なるので注意する。

make checkの失敗

ICU 50.2以外の64.2までのバージョンだと,make checkが失敗してしまう。

g++ -O3  -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -std=c++11   -L/home/senooken/.local/lib64 -L/home/senooken/.local/lib -L/home/senooken/.local/opt/lib64 -L/home/senooken/.local/opt/lib   -o letest letsutil.o cmaps.o FontTableCache.o SimpleFontInstance.o PortableFontInstance.o letest.o cfonts.o xmlreader.o cletest.o -L../../lib -liculx -L../../lib -licuuc -L../../stubdata -licudata -L../../lib -licui18n -L../../tools/ctestfw -licutest -L../../lib -licutu -lpthread -ldl -lm   -licu-le-hb
SimpleFontInstance.o: In function `SimpleFontInstance::SimpleFontInstance(float, LEErrorCode&)':
SimpleFontInstance.cpp:(.text+0x2c): undefined reference to `icu_64::LEFontInstance::yUnitsToPoints(float) const'

60.3は失敗の内容が異なり,惜しかった。

-------------
| ***     FAILING TEST SUMMARY FOR:              letest
/layout/DataDrivenTest
| *** END FAILING TEST SUMMARY FOR:              letest
---------------

原因がよくわからない。わかり次第情報を追記する。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です