Bash on Ubuntu on WindowsでPandocを動かすには
Windows 10のAnniversary Updateで、Windowsカーネルに皮をかぶせてLinuxユーザーランドを動かすWindows Subsystem for Linux(WSL)と、WSLを使ったUbuntu環境のBash on Ubuntu on Windowsが入りました(β版)。
Ubuntuのパッケージがそのままインストールするということで、汎用ドキュメント変換ツールのPandocをインストールしてみました。
$ sudo apt-get install pandoc
カーネル的には入出力ぐらいで、そんな難しいシステムコールは使ってないだろうと思ったら、システムコールが足りないとエラーに。
$ pandoc foo.md -t html -o foo.html
pandoc: timer_create: Function not implemented
検索してみると、この件は公式でもissueが立ってました(timer_create not implemented! · Issue #307 · Microsoft/BashOnWindows)。PandocはHaskellで書かれていて、GHCコンパイラーでコンパイルされたHaskellプログラムはデフォルトでインターバルタイマーを使うそうです。スレッド(ユーザースレッド)の実装に使うんだとか。
これを回避するには、GHCのRTS(runtime system)オプションで「-V0」を指定してインターバルタイマーをオフにします(上記issueをもとに検証)。
$ pandoc +RTS -V0 -RTS foo.md -t html -o foo.html
RTSオプションは環境変数GHCRTSで指定することもできます。
$ export GHCRTS=-V0
$ pandoc foo.md -t html -o foo.html
追記(2017.2.11):
コメント
コメントの投稿
トラックバック
https://emasaka.blog.fc2.com/tb.php/1338-022979f1