クソ雑魚エンジニアのメモ帳

学んだことを書くところ

ブログをこちらに移転しました。
https://blog.morifuji-is.ninja

Gitbookで「Invalid file descriptor to ICU data received.」が出てPDF出力できない場合の対処方法

こんばんは。morifujiです。GitBookを最近業務で使いはじめたんですが、PDF出力でエラーがでたのでそれを解決しました

問題

事前にgitbookをREADMEなりqiitaなりに従って、npmでインストールし brew caskでCalibreをインストールしている状態です

$ npm install -g gitbook-cli
$ brew cask install Calibre

この状態でPDFを出力をすると

$ gitbook pdf
...略
warn: "options" property is deprecated, use config.get(key) instead 

途中で固まりました。 gitbook pdf --log info で出力を見ると Invalid file descriptor to ICU data received これが原因そう

debug: [1218/194620.605118:ERROR:icu_util.cc(177)] Invalid file descriptor to ICU data received.

原因・対処方法

gitbookが依存しているcalibreのバージョンが4.xに上がったが、gitbookがそれに対応できていないためのようです。確かに調べてみたらgitbookは最終更新1年前。calibreが4.0になったのは2019年10月でした。

なのでcalibre のバージョンを4.xから3.xにする必要があるそうです。

# 一旦削除
$ brew cask uninstall Calibre
# 3.8.0をインストール。urlはgithubのコミット履歴から拝借
$ brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/0609402ee984aa887752a205b3086191aed1385e/Casks/calibre.rb

ちなみに、Calibreは公式サイトからdmgファイルでインストールできますが、それではダメでした

参考