Ubuntu:コマンドライン日本語入力字化け対策として gnuplot 5.4 をソースから make

Ubuntu 18.04 LTS でもそうだったが,Ubuntu 20.04 LTS(含 WSL)の gnuplot でコマンドラインから日本語入力しようとすると字化けして困る。また,gnuplot_kernel (A Jupyter/IPython kernel for Gnuplot) でも日本語入力が字化けしないで使いたい。

原因は readline ではないかと思うが,まずは使えるようにしたいので,以下のように自力でソースから make してみる。

以下は本稿執筆時点での Ubuntu 20.04 LTS(含 WSL)の例:

下準備

のちのち ./configure でひっかかると思われるので,TeX 一式をインストールしておく。

いろいろ依存関係もあるだろうから,gnuplotapt でインストールしたことにしておく。

sudo apt install gnuplot

make に必要なライブラリ等を準備。

sudo apt install build-essential
sudo apt install qt5-default qttools5-dev-tools  libqt5svg5-dev liblua5.3-dev  libgd-dev libcairo2-dev libglib2.0-dev libpango1.0-dev lua5.3

ソースのダウンロードと make

追記:5.4.0 -> 5.4.1 としても同様にインストール可能です。

curl -OL https://sourceforge.net/projects/gnuplot/files/gnuplot/5.4.0/gnuplot-5.4.0.tar.gz
tar xvfz gnuplot-5.4.0.tar.gz
cd gnuplot-5.4.0
./configure --with-readline=gnu --with-qt
make
sudo make install

日本語ヘルプファイル

patch -p0 < docs/term-ja.diff

cd docs
make clean
make doc2gih
./doc2gih gnuplot-ja.doc gnuplot-ja.gih

nkf -w -Lu —in-place gnuplot-ja.gih # (sudo apt install nkf)
sudo cp gnuplot-ja.gih /usr/local/share/gnuplot/5.4/gnuplot.gih

日本語フォントの設定

sudo apt install fonts-noto-cjk
sudo vi /usr/local/share/gnuplot/5.4/gnuplotrc
  gnuplotrc の最後に以下の1行を追加。
set term qt font "Noto Sans CJK JP, 12" # フォント名,サイズはお好みで。

追記:いくつかのエラー・警告と対策

WSL の Ubuntu 20.04 LTS で,make 時に以下のようなエラーが出る場合があった。

libQt5Core.so.5: cannot open shared object file

こんなエラーが出てコンパイルできない時は,慌てず以下の1行を実行するとよいらしい。

sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

また,WSL の Ubuntu 20.04 LTS でめでたく make install できた gnuplot を実行して plot させると,以下のように数行警告が出る。(もちろん事前に Windows 側で VcXsrv を起動しておく等の準備は万全に。)

gnuplot> plot sin(x) title 'タイトル'
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-kasai'
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
gnuplot>

そんな場合は,~/.bashrc に以下のように書いておく。

# gnuplot のエラー対策
export XDG_RUNTIME_DIR=/tmp/runtime-kasai
export LIBGL_ALWAYS_INDIRECT=1

実行例

以下は WSL の Ubuntu 20.04 LTS での実行例。