EC2にrbenv installができないとき

AWS初心者ですが、丸三日ハマっててようやく抜け出せたので備忘録として書いておきます。
同じ現象に悩んでいる初学者の方がいましたらぜひ参考にしてみてください。

# 解決したいこと
EC2で```rbenv install```できるようにしたい。

# 発生していたエラー・問題

インスタンスを作成し、ターミナルでssh接続できたのはいいのですが、その後```$ rbenv install -v 3.1.0```をしても最後まで読み込みができず、何度やり直しても途中で完全に止まってしまいました。
それどころかその状態でctr+cで止めようとしてもものすごく動きが遅くなって```client_loop: send disconnect: Broken pipe（長い間放置されていたから切断しといたよ）```となります。
また、そうなってしまうとssh接続しようとしても
```
% ssh tester
ssh: connect to host **.**.**.** port 22: Operation timed out
```
とエラーが出ます。インスタンスを確認したら「**インスタンスの接続性チェックに失敗しました**」と出ていて、一度インスタンスを停止して再度開始したらまたssh接続できるようになりました。

ディスク容量が少ないからかと思い、容量を8G→16でインスタンスを作成し直して何度かトライするも毎回同じ結果になります。
ちなみにgitやgccなどは問題なくインストールできています。

# 頻発していたエラー
```
$ rbenv install -v 3.1.0

linking static-library libruby-static.a
/usr/bin/ar: unable to copy file 'libruby-static.a'; reason: No space left on device
make: *** [Makefile:300: libruby-static.a] Error 1
reason: No space left on device
```

**ディスクが不足しているとのこと。**

```
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           477M     0  477M   0% /dev/shm
tmpfs           191M  2.8M  188M   2% /run
/dev/xvda1      8.0G  1.8G  6.2G  23% /
tmpfs           477M  387M   90M  82% /tmp
tmpfs            96M     0   96M   0% /run/user/1001
```
上記は8Gでやっていたときのですが、```/tmp```がカツカツです。ちなみに16Gに増やすと```/dev/xvda1``` が 16G まるまる使っていて/tmpの値は増えてませんでした。（ここらへんは私の知識不足だと思います）

とりあえずこのエラーを解決しようと思い色々調べた結果、一時ファイルシステムである ```tmpfs``` を ```/tmp``` マウントポイントに1Gマウントする方法を試してみました。

```
$ sudo mount -o size=1G,rw,nodev,nosuid -t tmpfs tmpfs /tmp

$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs          tmpfs     477M     0  477M   0% /dev/shm
tmpfs          tmpfs     191M  2.8M  188M   2% /run
/dev/xvda1     xfs        16G  1.8G   15G  12% /
tmpfs          tmpfs     1.0G     0  1.0G   0% /tmp
tmpfs          tmpfs      96M     0   96M   0% /run/user/1001
```
その後```$ rbenv install -v 3.1.0```してみましたが
```reason: No space left on device```エラーは出なかったのですが、やはり途中で完全に止まってインストールできませんでした。（ほっとくと1時間以上ずっとそのまま→止めてもインスタンスの接続性チェックに失敗しましたの無限ループ）

PCの再起動なども試しましたが変わりませんでした。


# 解決方法
```
$ TMPDIR="${PWD}/tmp" rbenv install -v 3.1.0
```
↑
**結論：tmpファイルを拡張する必要はなく、このコマンド一つで解決した。**

```
$ TMPDIR="${PWD}/tmp" rbenv install -v 3.1.0
installing bundled gem cache:       /home/tester/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/cache
Installed ruby-3.1.0 to /home/tester/.rbenv/versions/3.1.0
~/tmp/ruby-build.20230325133648.2355.MSdMSk ~
~

NOTE: to activate this Ruby version as the new default, run: rbenv global 3.1.0

$ rbenv global 3.1.0

$ rbenv rehash

$ ruby -v
ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux]
```
ちゃんとインストールできてました。

ちなみに```/tmp```の値はまったく増えていませんでした。↓

```
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           477M     0  477M   0% /dev/shm
tmpfs           191M  2.8M  188M   2% /run
/dev/xvda1       16G  2.0G   14G  13% /
tmpfs           477M     0  477M   0% /tmp
tmpfs            96M     0   96M   0% /run/user/1001
```

どうやら```/tmp```のディスク容量を拡張しようとするアプローチ方法が間違っていたみたいです。

execute可能な別のディレクトリ(マウントポイント)をTMPDIRとして指定するのが正しい方法だったみたいです。

参考：こちらの記事が大変役立ちました！

https://qiita.com/kanna/items/0851e136e12f1d52ff08