2
1

More than 5 years have passed since last update.

GnuplotをAlpine Linuxに入れようとした悲惨な話

Posted at

今OpenTSDBを検証しようと思っていますので、Dockerから一番手軽なのです。

Docker Hub似て探しましたが、 この イメージを見つかりました。

だが残念なことは、このイメージにGnuplotが入ってません。さっそくGnuplotを入れようとしました。

惨めに、2箇所でこげちゃった。

コマンド gnuplot が見つからない件について

必要なパッケージを入れて、無事にGnuplotをインストールしましたが、OpenTSDBの画面(localhost:4242)にて gnuplot コマンドが見つかりませんというエラーが出ました。

さんざん調べたところ、 gunplot 実行ファイルのインストール先が原因を突き止めた。

デフォルトで gunplot は /usr/local/bin/ にコーピーされましたが、OpenTSDBが gunplot を呼び出しできませんでした。

OpenTSDbのソールはJavaで、 gunplot を直接を呼び出しの代わりに、 mygnuplot.sh を呼び出しています。このファイルは下記のようで:

#!/bin/sh
# Because !@#$%^ Java can't fucking do this without a bazillion lines of codes.
set -e
stdout=$1
shift
stderr=$1
shift
exec nice gnuplot "$@" >"$stdout" 2>"$stderr"

このShellにて更に exec nicegunplot を実際に呼び出します。

修正方法:

Gnuplotバイナリーのインストール先を /bin にすればよいです:

./configure --bindir=/bin

これで、 gunplot が無事に呼び出されるようになりました。

が、さらに問題が起こった。

Pngファイルを生成できないの件

今回は、別のエラーになりました。OpenTSDBが絵を描くにPngファイルを利用していて、 gunplot がPngファイルを作成できませんでした(Gnuplotにて set terminal が確認できます)。

再度Gnuplotを ./configure をし、下記のローグを気づいた:

configure:10915: gcc -o conftest -g -O2  -I/usr/include  -Wl,--as-needed conftest.c -lgd   -lgd -ljpeg -lz -lpng16
/usr/lib/gcc/x86_64-alpine-linux-musl/4.9.2/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -ljpeg
/usr/lib/gcc/x86_64-alpine-linux-musl/4.9.2/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lfreetype
collect2: error: ld returned 1 exit status
configure:10915: $? = 1     

なるほど、Pngのみを使いたくても、 jpeg-devfreetype-dev などを入れなければいけません。

最後、無事にGnuplotを動くため、下記の手順に従えば問題ないと思います:

cd /tmp && \
  wget http://downloads.sourceforge.net/project/gnuplot/gnuplot/5.0.3/gnuplot-5.0.3.tar.gz && \
  tar zxf gnuplot-5.0.3.tar.gz  && \
  cd gnuplot-5.0.3 && \
  apk --update add gd gd-dev libpng libpng-dev libjpeg jpeg-dev freetype freetype-dev && \
  apk --update add --virtual builddeps build-base autoconf automake git python && \
  ./configure --bindir=/bin && \
  make && \
  make install

最後

Gnuplotを正しく動作ために、3時間がかかりました。

ちなみに、私が作ったDocker Imageは https://hub.docker.com/r/liubin/opentsdb/ にあります。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1