まっさらなDebian9にRebound(N体計算コード)をインストールするお話

#REBOUNDをインストールしよう
[REBOUND](https://rebound.readthedocs.io/)はデブにはきつい名前のN体計算コードです.
 ただ,いくら自分がデブとはいえ研究に使うとなったら親でも使う勢いで何でも使わないといけません.
 今回は自分のやりたいこと(小天体の時間発展を見てみたい)とマッチしそうな気がしたREBOUNDをインストールするまでの顛末を記載します.

##REBOUNDのアピールポイント
[以前N体コードについて書いたページ](https://qiita.com/Dovaha/items/54a0cbc4186dced25ddd)でも述べたのですが,ライブラリを必要とせず設定が簡単なようです……ってありますけれどたぶんこれ"それなりに"いろいろなことをやっているパソコンにインストールをする場合の話でしょうと思います.C版のインストールは結構大変でした

##C版のインストール

###今北産業という人向け(死後)
奮闘記込みで読みづらいので3行でまとめますと
1.GLFWを入れる
2.サンプルコードを実行する
3.(場合によっては)OpenGLの設定をする.

あとはそれぞれ手順1,2,3を見てください.



開発チームのクイックユーザーズガイドを見る限りだと

```shell:install.sh
git clone http://github.com/hannorein/rebound
cd rebound/examples/shearing_sheet
make
./rebound
```

だけで実行できる……らしい……のだけれども……Gitをインストールして実行すると(Gitすらない)……

Compiling shared library librebound.so ...                                                                              make -C ../../src/                                                                                                      make[1]: Entering directory '/mnt/c/Users/Haruka/Documents/研究室/研究室/program/rebound/src'                           Compiling source file display.c ...                                                                                     cc -c -std=c99 -Wpointer-arith -D_GNU_SOURCE -O3  -Wall -g -Wno-unused-result -Wno-unknown-pragmas -fPIC -DLIBREBOUND -DOPENGL -DGITHASH=a99d3481a4e27796640e3899991f99290a02b9c9 -o display.o display.c                                        display.c:50:24: fatal error: GLFW/glfw3.h: No such file or directory                                                    #include <GLFW/glfw3.h>                                                                                                                        ^                                                                                               compilation terminated.                                                                                                 Makefile:12: recipe for target 'display.o' failed                                                                       make[1]: *** [display.o] Error 1                                                                                        make[1]: Leaving directory '/mnt/c/Users/Haruka/Documents/研究室/研究室/program/rebound/src'                            Makefile:12: recipe for target 'librebound' failed                                                                      make: *** [librebound] Error 2

となってうまくいきません( ﾉД`)ｼｸｼｸ….ここからインストールにこぎつけるまでの記録を投稿していきます.

###手順1:[glfw](https://www.glfw.org/)のインストール.
fatal error: GLFW/glfw3.h: No such file or directory 
というエラーが出たのでまずはGLFWを入れてみました.
その際にはこちらの[GLFWの設定(初回の設定)](https://tatsy.github.io/OpenGLCourseJP/sections/000/setup/glfw.html)のMacOSの場合を参考にさせていただきました.
まずはcmakeも入っていなかったので"cmake"と,依存関係にあるプログラムを[GLFWのCompile Guide](https://www.glfw.org/docs/latest/compile_guide.html#compile_deps_x11
)を見てインストールをします(僕の場合は"xorg-dev").
そしてGLFWの設定(初回の設定)を参考にmake installまで実行します.

そしてまたREBOUNDのmakeを実行しようとすると……
「/usr/bin/ld: cannot find -lglfw 」ってエラーが.
なんで!?今glfw入れたじゃん!!なんでそのライブラリがないの??ってなりますよね?
ってなわけで/user/local/libにライブラリを見に行くと……「libglfw3.a」というファイルがありました.バージョンの関係かで名前に数字が入ってしまったのが原因だったのでしょうか.

```shell-session
user@pc:/usr/local/lib# cp libglfw3.a libglfw.a
```

として数字無しのライブラリファイルを生成してあげればひと段落.
あとはGLFW関係のライブラリとして"libglfw3-dev"もインストールしてあげましょう.

```shell-session
user@pc:directory# apt install libglfw3-dev
```


あとはmakeをするだけでちゃんと実行できました!!!

###手順2:ほかのサンプルも走らせる.

今はreboundディレクトリから見て/rebound/examples/shearing_sheetにいますけれどexample以下には様々なサンプルコードが入っています.

これらをぶん回してあげるといろいろな計算ができそうです.

###手順3:環境ごとにXの設定をする.(vcXsrvでのOpenGLの設定)

このままだと環境によってはopenGLがうまく立ち上がらずに軌道の絵が出てこないままプログラムが回ることがあります.
例えば自分の環境(vcXsrv+WSLからsshでDebianにインストールしたreboundを実行)で/rebound/examples/outer_solar_systemを回すときに

```shell
N_tot=  6         t=  0.000000  dt=  40.000000  cpu=  0.000000 [s]  t/tmax=  0.00%
libGL error: No matching fbConfigs or visuals found 
libGL error: failed to load driver: swrast
GLFW Error: GLX: Failed to create context: GLXBadFBConfig
Error! GLFW window creation failed.
N_tot=  6         t=  70000000.000000  dt=  40.000000  cpu=  0.170325 [s]  t/tmax= 95.89%
Done. Final time: 73000000.0000. Relative energy error: 7.188078e-11                 
```
というようにlibGLが立ち上がらないよと出ました.
このようにopenGLが立ち上がらないときはvcXsrvの起動時にオプションで"-nowgl"を入れてください.
そうすると軌道の絵がちゃんと描かれるようになります.
リアルタイムに粒子がどのように運動しているかわかるため計算設定がおかしくないか確認することができます.

##Python版のインストール

```shell
user@pc:directory#pip3 install rebound
```
以上
##反省点
よくある問題点を読みましょう!!!!
[Quick Reference Guide](https://rebound.readthedocs.io/en/latest/c_quickstart.html)のPossible issues when compiling REBOUNDに"libglfw3-dev"を入れようねって書いてあったのですがそれを読まずにGLFW3だけを入れて安心していたので五時間くらい詰まりました.
入れたら一瞬でmakeが通ったので楽でしたね……
困ったらよくある問題点を読むことが大事です.

##おねがい
もし自分の環境で動かなかった！とか自分もREBOUND使っている！という方がいましたらご連絡をください.
日本人ユーザーとして協力してやれたらありがたいなぁと考えます.