はじまる

適当な事を適当に書く

Node-RED node-red-contrib-opencv インストールエラー

結論

node-red-contrib-opencv が依存しているライブラリ node-opencv が対応してない環境ではエラーになります。どうしようもないです。 (2019年1月4日更新)ライブラリ内部でOpenCVのバイナリを持たない設計になったので、この記事に記載したエラーは解消されたようです。

以降、調査の経緯

admin tab からインストールを試みた場合

22 Oct 15:12:54 - [info] モジュールnode-red-contrib-opencv, バージョン: latestをインスートールします
22 Oct 15:13:29 - [warn] モジュール node-red-contrib-opencv のインストールに失敗しました:
22 Oct 15:13:29 - [warn] ------------------------------------------
22 Oct 15:13:29 - [warn]
> opencv@6.0.0 install /Users/me/.node-red/node_modules/opencv
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(403): https://node-opencv.s3.amazonaws.com/opencv/v6.0.0/Release/node-v57-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for opencv@6.0.0 and node@8.12.0 (node-v57 ABI, unknown) (falling back to source compile with node-gyp)
(以下略)

コマンドの場合

.node-red ❯ npm install node-red-contrib-opencv

> opencv@6.0.0 install /Users/me/.node-red/node_modules/opencv
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(403): https://node-opencv.s3.amazonaws.com/opencv/v6.0.0/Release/node-v57-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for opencv@6.0.0 and node@8.12.0 (node-v57 ABI, unknown) (falling back to source compile with node-gyp)
(以下略)

gyazo.com

あなたどこにいるの...

というかダウンロード元はこっちじゃない?

Releases · peterbraden/node-opencv · GitHub

https://github.com/peterbraden/node-opencv/archive/v6.0.0.tar.gz

node-red-contrib-opencv をみる

https://github.com/zuhito/node-red-contrib-opencv/blob/master/package.jsondependenciesopencv がある。

{
  "name": "node-red-contrib-opencv",
  "version": "0.1.2",
  "description": "Node-RED node for OpenCV",
  "main": "node.js",
  "node-red" : {
    "nodes": {
      "opencv": "node.js"
    }
  },
  "dependencies": {
    "opencv": "*"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/zuhito/node-red-contrib-opencv.git"
  },
  "keywords": [
    "node-red",
    "opencv",
    "image recognition",
    "computer vision"
  ],
  "author": "zuhito",
  "license": "Apache-2.0",
  "bugs": {
    "url": "https://github.com/zuhito/node-red-contrib-opencv/issues"
  },
  "homepage": "https://github.com/zuhito/node-red-contrib-opencv#readme"
}

node-opencv をみる

そもそも npm install opencv でコケる

.node-red ❯ npm install opencv

> opencv@6.0.0 install /Users/me/.node-red/node_modules/opencv
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download(403): https://node-opencv.s3.amazonaws.com/opencv/v6.0.0/Release/node-v57-darwin-x64.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for opencv@6.0.0 and node@8.12.0 (node-v57 ABI, unknown) (falling back to source compile with node-gyp)

https://github.com/peterbraden/node-opencv/blob/master/package.json#L41

node-opencvpackage.jsonをみてみる。バイナリのダウンロード先は動的に生成しているので、ダウンロード先環境に対応しているバイナリがホストされていないとダメ。

"binary": {
    "module_name": "opencv",
    "module_path": "./build/{module_name}/v{version}/{configuration}/{node_abi}-{platform}-{arch}/",
    "remote_path": "./{module_name}/v{version}/{configuration}/",
    "package_name": "{node_abi}-{platform}-{arch}.tar.gz",
    "host": "https://node-opencv.s3.amazonaws.com"
  }

---------- 終了 -----------

Gitbook で PDF を生成するときにつかう、ebook-convert コマンドのありか

目的

gitbook プロジェクトからPDFを生成したい。

困りごと

下記のコマンドを実行すればいいだけだが、エラーになる。

$gitbook pdf
(中略)

InstallRequiredError: "ebook-convert" is not installed.
Install it from Calibre: https://calibre-ebook.com

エラーメッセージで検索すると「Calibre.app をインストールすれば大丈夫だよ」と書かれたブログ記事が大量にでてくる。が、実は Calibre.app はインストール済みなのである。gitbook pdfコマンドのなかで利用するebook-convertコマンドは、Calibre.app のなかに格納されているが、(当たり前だけど)app をインストールしただけでは、当該コマンドへのpathが通らないので、実行できないのだ。

対処法

1.調査

path を通したいけど、そもそも当該コマンドはどこにあるんや。調べてみたら、結構えぐいとこにあった。

https://manual.calibre-ebook.com/generated/en/cli-index.html

Note On macOS, the command line tools are inside the calibre bundle, for example, if you installed calibre in /Applications the command line tools are in /Applications/calibre.app/Contents/console.app/Contents/MacOS/.

つまりシェルから /Applications/calibre.app/Contents/console.app/Contents/MacOS にアクセス可能になればいい。

2.対処

.bashrc.zshrc

export PATH=$PATH:/Applications/calibre.app/Contents/console.app/Contents/MacOS

と追記して読み込ませれば、PATHが通る。

もしくは既にPATHの通っている場所にリンクを作成するのも良い

sudo ln -s ~//Applications/calibre.app/Contents/console.app/Contents/MacOS/ebook-convert /usr/bin

3.結果

~ ❯ ebook-convert
使用法: ebook-convert 電子書籍のフォーマットを変換します。

出力する電子書籍のフォーマットは、出力ファイルの拡張子から推測されます。出力ファイルの拡張子をEXTとして、output_file は特別な形式 .EXT と指定することも可能です。この場合、出力ファイル名の本体部分は、入力ファイル名のものが使用されます。ファイル名の先頭にハイフンは使えませんので注意してください。output_file に拡張子をつけなかった場合、出力ファイル名はディレクトリとして見なされ、HTMLファイルで構成されれる "open ebook" (OEB) フォーマットで、指定したディレクトリに出力されます。

入力ファイルと出力ファイルを指定した後ろに、変換をカスタマイズするための様々なオプションを指定することができます。使用可能なオプションは、入出力のファイルタイプに依存します。使用可能なオプションとその使い方を見るためには、入出力のファイルを指定した後ろに、-h オプションを指定してください。

電子書籍変換システムについての完全なドキュメントは下記を参照してください
https://manual.calibre-ebook.com/conversion.html

スペースを含む引数を ebook-convert に渡す場合には、クォーテーションマークでくくってください。例: "/some path/with spaces"

オプション:
  --version       プログラムのバージョン番号を表示して終了

  -h, --help      このヘルプメッセージを表示して終了

  --list-recipes  ビルトイン・レシピ名の一覧を表示。以下のようにしてビルトイン・レシピから電子書籍を作成できます。: ebook-
                  convert "Recipe Name.recipe" output.epub


開発者: Kovid Goyal <kovid@kovidgoyal.net>
~ ❯ which ebook-convert
/Applications/calibre.app/Contents/console.app/Contents/MacOS/ebook-convert

髭剃りのベストプラクティス

‪袋売りの剃刀をまとめて買って、1ヶ月に1本ずつ使っていくのがベストプラクティスな気がして来た‬

シック Schick プロテクター ディスポ 使い捨て (10本入)

シック Schick プロテクター ディスポ 使い捨て (10本入)

こういうやつ。