とんちゃん の ぐだぐだえびでい

バックエンドエンジニアのとんちゃんが、ぐだぐだな毎日で培った技術情報を綴るブログです。

node-openjtalkをraspberry piにnpm installできてない

まとめ

  • node-openjtalkをインストールするには、libiconvが必要。
  • libiconvのインストールにはコツが必要。
  • node-openjtalkをインストールするには、node.jsのv0.12.*が必要。

何かというと

現在、slack読み上げbotちゃんを作っていて、
通知音再生 (そこはかとない時間) 読み上げ音声再生となっていました。

なぜ?

読み上げ音声再生の処理が

1.通知音再生 ⇒ 2.テキストから音声ファイル作成 ⇒ 3.音声再生になっていたため、です。

使っていたライブラリが、"テキストを渡すと、音声ファイルを再生するまでやってから返す"という作りだったので、
"テキストを渡すと、音声ファイルを作ってくれる"ものを探してました。

ちなみに今使っているもの

hecomi/node-openjtalk-waf

こちら、導入はとても楽でした!

欲しいもの見つけた

node-openjtalk

こちらのライブラリは、音声ファイル作成までを行ってくれる作りになってました!

npm installでコケる

脳死でとりあえずnpm installをたたきました。

$ npm install node-openjtalk

するとエラーが・・・

(略)
npm ERR! Linux 4.1.17+
npm ERR! argv "/home/pi/.nodebrew/node/v5.6.0/bin/node" "/home/pi/.nodebrew/curr                                                                                        ent/bin/npm" "install" "node-openjtalk"
npm ERR! node v5.6.0
npm ERR! npm  v3.6.0
npm ERR! code ELIFECYCLE

npm ERR! node-openjtalk@1.1.1 install: `node-pre-gyp install --build-from-source                                                                                        `
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-openjtalk@1.1.1 install script 'node-pre-gyp install                                                                                         --build-from-source'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the node-openjtalk packag                                                                                        e,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --build-from-source
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs node-openjtalk
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls node-openjtalk
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/pi/work/slack-read-outer-bot/npm-debug.log

npmのページには、でかでかとlibconvが必要だ、と書いてありました。

私の目が節穴すぎる。

libconvのインストール

libconvのインストールは、こちらを参考にしました!

libiconvのインストールでこけた

makeが途中でコケました。。。

(略)
In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
 ^
Makefile:914: recipe for target 'progname.o' failed
make[2]: *** [progname.o] Error 1
make[2]: Leaving directory '/usr/local/src/libiconv/libiconv-1.14/srclib'
Makefile:865: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/local/src/libiconv/libiconv-1.14/srclib'
Makefile:33: recipe for target 'all' failed
make: *** [all] Error 2

"gets is a security hole - use fgets instead"でググってみたところ
この行がよくないみたいで、削除する手順と、getsをfgetに書き換える手順がそれぞれ出てきました。
とりあえずこの行は削除しちゃいました。

configure ⇒ makeを再実行したところ、
ばっちりインストールできました。

それでもコケるnpm install

なんでだーと思って、gitのreadmeを見ていたら
NodeJSのバージョンはv0.12限定でサポートとのこと。。

$ nodebrew install v0.12.14

でv0.12をインストールして、今日は寝ます。
※binaryインストールは、v0.12系はなさそうでした。。

今日の教訓

  • 依存するモノのバージョン確認って大事なんだなと

お詫び

ゴールデンウィークの自由研究であった、ansibleでラスパイをプロビジョニングなのですが
まだ未完成です。。。。