Linux（Fedora 37）にMatlab R2022bをインストールする

# 概要
MatlabをFedoraにインストールする際の方法です。公式対応OSはUbuntu、RHEL、CentOSなので、Fedoraで使用するには調整が必要です。

# tl;dr;
0. 必要なフォントをインストールしておく
    ```bash
    $ sudo dnf install vlgothic-p-fonts vlgothic-fonts
    ```

1. インストーラーをDLした上でインストーラーの一部ライブラリを削除する。
    ```bash
    $ sudo dnf install freetype
    $ sudo rm [ダウンロードしたフォルダ]/bin/glnxa64/libfreetype*
    ```

2. インストーラーでインストールした後**一度直接初回起動を試み**、サービスホストインストーラーを自動DLさせる
    ```bash
    $ /usr/local/MATLAB/R2022b/bin/matlab
    ```

3. 自動DLされたサービスホストインストーラーを実行する
    ```bash
    $ cd ~/Downloads/MathWorks/ServiceHost/mci/_tempinstaller_glnxa64/bin/glnxa64
    $ ./InstallMathWorksServiceHost.sh
    ```

4. Simulinkを正常起動させるために一部DLされたライブラリを削除する。
    ```bash
    $ cd /usr/local/MATLAB/R2022b/bin/glnxa64
    $ sudo rm libfreetype*
    $ cd ../../sys/os/glnxa64
    $ sudo rm libstdc++.so.6*
    ```

# 手順
## 0. 必要なフォントをインストールしておく
```bash
$ sudo dnf install vlgothic-p-fonts vlgothic-fonts
```
インストールしないと文字化けしました。あと、もしシェルを日本語化していないなら、先に行ったほうがよいかもしれません。（```$ localectl set-locale LANG=ja_JP.UTF-8```）

## 1. Matlabインストーラー走らせる
```bash
$ sudo ./install
terminate called after throwing an instance of 'std::runtime_error'
  what():  Failed to launch web window with error: Unable to launch the MATLABWindow application. The exit code was: 127
中止 (コアダンプ)
```
まずはこれに対処します。```libfreetype.so```の呼び出しで、システムのライブラリを参照するようにインストーラーのファイルを削除します。

```bash
$ sudo dnf install freetype
$ sudo rm [ダウンロードしたフォルダ]/bin/glnxa64/libfreetype*
```

これでまずインストーラーが走ります。

### 注意点
大学のアカウントでログインを行う場合（3rd party idp）、バグなのかうまく入力できないことがありますが、キーボード操作・マウス操作など何度かカチカチすると入力できました。いかがなものなのか…

## 2. 初回起動を走らせる
この時点ではまだPATHが通っていないので、直接起動します。
```bash
$ /usr/local/MATLAB/R2022b/bin/matlab

/home/xxxx/Downloads/MathWorks/ServiceHost/mci/_tempinstaller_glnxa64/bin/glnxa64/InstallMathWorksServiceHost: symbol lookup error: /lib64/libharfbuzz.so.0: undefined symbol: FT_Get_Transform
/home/xxxx/Downloads/MathWorks/ServiceHost/mci/_tempinstaller_glnxa64/bin/glnxa64/InstallMathWorksServiceHost: symbol lookup error: /lib64/libharfbuzz.so.0: undefined symbol: FT_Get_Transform
必要な MathWorks サービスと通信できません (エラー 5202)。

次にアクセスして、この問題のトラブルシューティングを行ってください: 
https://www.mathworks.com/support/lme/R2022b/5202
```
**まずこの操作により初回起動（サービスホストインストール）スクリプトがDLされるので、この操作を行った後に**ダウンロードしたファイルを走らせます。

## 3. サービスホストをインストールする
自動DLされたインストーラーの場所は、上記表示のリンクを参照すればわかります。
```bash
$ cd ~/Downloads/MathWorks/ServiceHost/mci/_tempinstaller_glnxa64/bin/glnxa64
$ ./InstallMathWorksServiceHost.sh
```
この操作でPATHも通り、ランチャーアイコンも追加されます。Simulinkのアイコンがランチャーに表示されるようになりますが、単体では起動せずMatlabから起動するのが正しいようです（未確認）。 

## 4. Simulinkを起動する
Matlabを起動後、上のツールバーよりSimulinkの起動を試みます。エラーが出ます。
```matlab
Can't reload '/usr/loca​l/MATLAB/R​2022b/bin/​glnxa64/li​bmwdastudi​o.so'
```

これも先程と同様の問題なので、matlabのライブラリを削除します。同時に、```libfreetype.so```もついでに削除しておきます。sudo権限が必要です。
```bash
$ cd /usr/local/MATLAB/R2022b/bin/glnxa64
$ sudo rm libfreetype*
$ cd ../../sys/os/glnxa64
$ sudo rm libstdc++.so.6*
```
これでSimulinkが起動するようになります。

もしかしたら他にもライブラリのリンク調整が必要かもしれません。

### 備考
起動すると、このようなメッセージが表示されます。
```matlab
com.jogamp.opengl.GLException: X11GLXDrawableFactory - Could not initialize shared resources for X11GraphicsDevice[type .x11, connection :0, unitID 0, handle 0x0, owner false, ResourceToolkitLock[obj 0x7adaef1c, isOwner false, <3ff278e5, 2b635d04>[count 0, qsz 0, owner <NULL>]]]
	at jogamp.opengl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(X11GLXDrawableFactory.java:326)
	at jogamp.opengl.SharedResourceRunner.run(SharedResourceRunner.java:297)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
	at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:688)
	at jogamp.opengl.GLContextImpl.makeCurrent(GLContextImpl.java:580)
	at jogamp.opengl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(X11GLXDrawableFactory.java:297)
	... 2 more
MATLAB で低水準のグラフィックス エラーが発生したため、適切に描画できません。
この問題を防ぐための対応策については、「低水準グラフィックス問題の解決」をご確認ください。その後、MATLAB を再起動してください。
問題の詳細について MathWorks テクニカル サポートと共有するには、
サービス リクエストにこのファイルを含めてください。
```
これは以下のようにlinux共通のバグである可能性があります。

https://psychtoolbox.discourse.group/t/matlab-starts-with-warning-after-psychtoolbox-installation/4661/2

グラフィックボードのOpenGLを使わずにソフトウェア描画すれば問題はなさそうですが、もう少し確認する必要がありそうです…。