本を読む

読書やコンピュータなどに関するメモ

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):

Windows 10のビルド14986で対応したとのこと。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/1338-022979f1

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad