やりたいこと
ローカル環境にgitbookをinstallしてpdfで出力する
前提条件
CentOSは6.4
node.jsはinstall済み
gitbookをinstallする
$ sudo npm update
$ sudo npm install gitbook-cli -g
$ git clone https://github.com/onigra/gitbook-sample
$ cd gitbook-sample
$ gitbook build
$ gitbook serve
URLが表示されるのでブラウザからアクセスします。
確認できたらctrl+cでサービスを一旦止めます。
pdf出力用にcalibreをinstallする
install方法は公式サイトを参考。
証明書でエラーになることがあるので、2016年02月時点では、
$ sudo -v && wget --no-check-certificate -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"
がお勧めです。
calibreの動作環境を満たしているか確認する
必要なlibstdc++がinstallされているか確認する
アプリケーションが要求するバージョンはGLIBCXX_3.4.15です。
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
含まれていない場合はinstallを行います。
ibstdc++はgccに含まれています。
gccをビルドして、libstdc++を取り出して既存のものと置き換えます。
ビルドに必要なヘッダーのインストールします
$ sudo yum install gmp-devel mpfr-devel libmpc-devel
$ sudo yum install glibc-devel.i686
ミラーサイトからソースコードをダウンロードします
$ mkdir -p ~/src
$ cd ~/src
$ curl -LO http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz
$ tar fxz gcc-5.3.0.tar.gz
$ cd gcc-5.3.0
ビルドします
$ ./configure
$ make
ライブラリをコピーします。
現在のライブラリインストール状況を確認して、最新のライブラリlibstdc++.so.6.0.21をコピーします。
$ ls -l /usr/lib64/libstd*
lrwxrwxrwx 1 root root 19 4月 3 15:50 2015 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 987096 10月 15 07:48 2014 /usr/lib64/libstdc++.so.6.0.13
$ sudo cp ${HOME}/src/gcc-5.3.0/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
既存のライブラリ (libstdc++.so.6.0.13) から、先ほどコピーした新しいライブラリに切り替えます。
古い方のライブラリはシンボリックリンクを含めて削除せず、いつでも切り戻せるよう移動するだけにします。
$ cd /usr/lib64
$ sudo mv libstdc++.so.6 libstdc++.so.6.bak
$ sudo ln -s libstdc++.so.6.0.21 libstdc++.so.6
$ ls -l /usr/lib64/libstd*
lrwxrwxrwx 1 root root 19 2月 3 13:52 2016 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
-rwxr-xr-x 1 root root 987096 10月 15 07:48 2014 /usr/lib64/libstdc++.so.6.0.13
-rwxr-xr-x 1 root root 11204470 2月 3 13:51 2016 /usr/lib64/libstdc++.so.6.0.21
lrwxrwxrwx 1 root root 19 4月 3 15:50 2015 /usr/lib64/libstdc++.so.6.bak -> libstdc++.so.6.0.13
目的のバージョンのGLIBCXX_3.4.15が有効になっているか確認します。
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
BCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
これでcalibreの環境構築は完了です
gitbookでpdf出力を行う
gitbook-sample内で下記のコマンドを実行するとpdfが出力できます。
$ gitbook pdf
これでpdf出力までの環境が構築できました。
gitbook-sampleは動作確認のためにcloneしたので、不要なら削除して、ローカルリポジトリを作成しましょう。