【解決】Linux Mint に Red OpenCV を インストールしようとして苦労したメモ

RubyでOpenCVを使おうと思って調べていたら、[ruby-opencv](https://github.com/ruby-opencv/ruby-opencv)は最近更新が滞っていて、最新の[OpenCV](https://opencv.org/)が使えないとのこと。
イマドキのイケてるライブラリは[Red OpenCV](https://github.com/red-data-tools/red-opencv)だ、という情報を得てインストールを試みたところ、苦労したのでメモを残します。

# 苦労した理由（かもしれないこと）

苦労したのは私の環境が[Linux Mint](https://linuxmint.com/)だったからかもしれません。
[Ubuntu](https://www.ubuntulinux.jp/)や[Debian](https://www.debian.org/)、[CentOS](https://www.centos.org/)だったらすんなりインストールできた可能性があります。
（Red OpenCVはUbuntu、Debian、CentOS用のインストールパッケージが準備されています）

# とりあえずOpenCVのインストール

ネット上ではOpenCVをソースコードからインストールする手順がたくさん見つかります。
私は公式パッケージを入れました。
（コマンド一発）

```bash
sudo apt-get install libopencv-dev
```

# 公式サイトに沿ってRed OpenCVをインストールする

## まずOpenCV GLibをインストールする

Red OpenCVのインストール手順の最初に、まずOpenCV GLibをインストールしろとあります。
> Install OpenCV GLib before install Red OpenCV. Use packages.red-data-tools.org for installing OopenCV GLib.

### APTリポジトリの追加

公式にある手順ではうまく行きません。

```bash
sudo apt install -y -V ca-certificates lsb-release wget
wget https://packages.red-data-tools.org/$(lsb_release --id --short \
  | tr 'A-Z' 'a-z')/red-data-tools-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt install -y -V ./red-data-tools-apt-source-latest-$(lsb_release --codename --short).deb
sudo apt update
```

#### 失敗①：パッケージ名の自動生成

Ubuntu、Debian、CentOS用のパッケージしか提供されていないので、自動生成されたLinux Mint用パッケージ名が見つからないため、`wget`に失敗します。
提供されているパッケージの中から良さそうなものを直接指定する必要があります。

`メニュー > システム管理 > システムレポート`の`システムの情報`タブを確認します。
> System:    Host: default-Diginnos Kernel: 5.4.0-77-generic x86_64 bits: 64 compiler: > gcc v: 7.5.0 
>            Desktop: MATE 1.22.2 wm: marco dm: LightDM Distro: Linux Mint 19.3 Tricia 
>            base: Ubuntu 18.04 bionic

私のLinux Mintは「Ubuntu 18.04 bionic」がベースになっていたので、これに合うパッケージ名`red-data-tools-apt-source-latest-bionic.deb`を直接指定しました。

#### 失敗②：パッケージのダウングレードインストールオプション

上で取得したパッケージのインストールに失敗します。
ダウングレードを許容するオプション`--allow-downgrades`が足りなかったためです。
ただこれは、私が試行錯誤したせいかもしれません。

#### 成功した手順

```bash
sudo apt install -y -V ca-certificates lsb-release wget
#wget https://packages.red-data-tools.org/$(lsb_release --id --short | tr 'A-Z' 'a-z')/red-data-tools-apt-source-latest-$(lsb_release --codename --short).deb
#sudo apt install -y -V ./red-data-tools-apt-source-latest-$(lsb_release --codename --short).deb
#sudo apt install -y -V ./red-data-tools-apt-source-latest-bionic.deb
wget https://packages.red-data-tools.org/ubuntu/red-data-tools-apt-source-latest-bionic.deb
sudo apt install -y --allow-downgrades -V ./red-data-tools-apt-source-latest-bionic.deb
sudo apt update
sudo apt install libopencv-glib-dev
```

### OpenCV GLibのインストール

これはすんなり行きました。

```bash
sudo apt install libopencv-glib-dev
```

## Red OpenCVをインストールする

また公式の手順で失敗します。

```bash
gem install red-opencv
```

#### 失敗：パッケージの不足

'mkmf.log'の末尾を見ると`gobject-introspection-1.0`がないと書いています。

> \--------------------
> have_package: checking for gobject-introspection-1.0... -------------------- no
> \--------------------

実はこれ、[Red OpenCVのDescription](https://github.com/red-data-tools/red-opencv#description)で使っていると明言されてました。
事前に入ってないとだめなんですね。

> Red OpenCV is a Ruby bindings of OpenCV. Red OpenCV is based on GObject Introspection.
> （後略）


#### 成功した手順

```bash
sudo apt install libgirepository1.0-dev
sudo gem install red-opencv
```

インストールで力尽きてまだ動作確認取れてませんが、今日はここまで。