Ubuntu 20.04 LTSにOctave 6.3.0をソースからインストールする方法

#1 はじめに
##1.1 背景
　Ubuntu 20.04 LTS を使っていると、アプリの管理にはaptを使うかsnapを使うことが多いと思います。しかし、更新頻度がそれなりに早いアプリではリポジトリのデータベース更新が追いつかなかったり、逆に少し古いバージョンがデータベースから削除されたりして、希望のバージョンがインストールできないことがあります。
　この記事では、そうした場合に自分でソースからインストールする方法を残しておきます。今回は GNU Octave 6.3.0 (以下、Octave 6.3.0)を Ubuntu 20.04 LTS にインストールする方法です。この記事の執筆時点（2020年12月1日）では簡単にインストールできる方法での Octave のバージョンは下表の通りです。

| インストール方法 | バージョン |
|:-:|:-:|
|sudo apt install octave   |5.2.0   |
|sudo snap install octave --stable   |6.4.0   |
|sudo snap install octave --edge   |7.0.0   |

　なぜこのような記事を残そうとしたかというと、私がよく使っている実験環境との兼ね合いがあるからです。普段の実験はPsychtoolboxというMATLAB / Octaveツールボックスを使っているのですが、執筆時点の最新バージョン（3.0.18）がサポートしているOctave のバージョンは6.3.0までです。6.4.0や7.0.0はサポートされておらずインストール中にwarningが出ます。また、5.2.0だとちょっと古いと感じますし、WindowsやmacOSでサポートされていないバージョンを使うのは心許ない気持ちになります。とにかく、執筆時点で上表のインストール方法では目的のバージョンをインストールすることができません。ざっと調べた限りでは、`apt`でも`snap`でも6.3.0を指定してインストールする方法が見つかりませんでした。となると、残された方法はソースコード（と依存関係で必要となるパッケージ）から自分でインストールすることになります。ただし、Linux初心者としてはできる限りややこしいことはしたくないので、極力コマンドのコピペやGUI操作だけで片付く方法を記録しておきたいと思い、この記事を残しておくことにしました。

##1.2 参考としたサイト
　基本的には下記のFOSTipsの該当ページの日本語訳だと考えてください。ただし、私の理解が不十分で誤った説明を書いている場合もありますので自己責任でお願いします。私はうまくインストールすることができました。

1. [GNU Octave Wiki](https://wiki.octave.org/GNU_Octave_Wiki)
   -[Octave for Debian systems](https://wiki.octave.org/Octave_for_Debian_systems)

1. [FOSTips](https://fostips.com/)
   -[How to Install GNU Octave in Ubuntu via 4 Different Ways](https://fostips.com/install-gnu-octave-ubuntu/)


#2 インストール方法
##2.1 依存関係のインストール
　Ubuntuでターミナル（端末）を開き、以下のコマンドを1行でコピペし、実行します。そうするとOctaveの実行に必要となる依存関係を持つソフトが一気にインストールされます。

```
sudo apt install debhelper-compat bison default-jdk desktop-file-utils epstool fig2dev flex gawk gfortran ghostscript gnuplot-nox gperf icoutils less libarpack2-dev libblas-dev libcurl4-gnutls-dev libfftw3-dev libfltk1.3-dev libfontconfig1-dev libgl2ps-dev libglpk-dev libgraphicsmagick++1-dev libhdf5-dev liblapack-dev libncurses5-dev libpcre3-dev libqhull-dev libqrupdate-dev libqscintilla2-qt5-dev libreadline-dev librsvg2-bin libsndfile1-dev libsuitesparse-dev libxft-dev portaudio19-dev pstoedit qttools5-dev texinfo texlive-latex-recommended texlive-plain-generic zip unzip xauth
```

##2.2 Octaveソースコードのダウンロード
https://mirrors.tripadvisor.com/gnu/octave/
　ここから目的のバージョンの.tar.xzファイルをダウンロードします。6.3.0 の場合は[ここ](https://mirrors.tripadvisor.com/gnu/octave/octave-6.3.0.tar.xz)からダウロードできます。`wget`のコマンドを叩いてダウンロードしてもいいですが、Ubuntu のGUI画面からダウンロードするのが楽でしょう。ダウンロード先はどこでも構いません。ダウンロードディレクトリかホームディレクトリに保存するのがいいと思います。ここではホームディレクトリにダウンロードしたものとして進めます。
　ダウンロードされたoctave-6.3.0.tar.xzを展開します。同じ階層にoctave-6.3.0というディレクトリが作成されます。

##2.3 ソースコードからのビルド
　octave-6.3.0を右クリックし、メニューから「端末で開く」を選択します。
![端末で開く](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/436e12ca-fa42-2a91-8e7f-ae85972e36c2.png)

　以下のコマンドを順に実行してください。

```
mkdir build && cd build
```
```
./../configure --prefix=/usr --disable-jit --with-hdf5-includedir=/usr/include/hdf5/serial --with-hdf5-libdir=/usr/lib/x86_64-linux-gnu/hdf5/serial
```
```
make -j2
```
```
make check
```

 `make -j2`の段階でそれなりに時間がかかります。CPUのパワーが十分に大きいと思われる場合は`make -j4`として実行すると処理速度が上がるそうです。


##2.4 インストール
　ビルドがうまくいったらインストールです。

```
sudo make install
```

##2.5 アンインストール
 2.2で作成されたoctave-6.3.0ディレクトリを削除するまでは、インストールされたソフトは以下のコマンドでアンインストールすることができます。

```
sudo make uninstall
```


#3 まとめ
　求めるバージョンのOctaveをインストールすることができました。
![無題2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138705/7f859b36-024e-0c48-ed18-e5ebce4120e8.png)