rbenv install等でソースからコンパイルする場合、依存ライブラリおよびそのヘッダーをOSにインストールしておかないと標準ライブラリの一部がコンパイル出来ません。コンパイル出来なかった標準ライブラリはそのまま無視されて、Ruby本体のインストールまで終わってしまいます。インストールが終わって、いざ使おうとしたときに入ってなかったと言うことがないように各ライブラリについて依存ライブラリを調べました。
2.6.0で調査しています。古いバージョンでは標準ライブラリやバンドルされているソースが異なるため、必要な依存ライブラリも異なりますので注意してください。
| Rubyライブラリ | 依存ライブラリ | 備考 |
|---|---|---|
| bigdecimal | ||
| cgi/escape | cgiの一部 | |
| continuation | 非推奨 | |
| coverage | 実験的 | |
| data_core | dateの一部 | |
| dbm | ndbm | 互換ライブラリ可※ |
| digest | ||
| etc | Windowsでは制限あり | |
| fcntl | ||
| fiber | ||
| fiddle | ffi | |
| gdbm | gdbm | |
| io/console | ||
| io/nonblock | ||
| io/wait | ||
| json/ext/* | jsonの一部 | |
| nkf | nkfのソースがバンドル | |
| objspace | ||
| openssl | openssl | |
| pathname | ||
| psych | yamlのソースがバンドル | |
| pty | UNIX/Linuxのみ | |
| racc/cparse | racc/parserの一部 | |
| rbconfig/sizeof | rbconfigの一部 | |
| readline | readline | |
| ripper | bison | コマンドとして必要 |
| sdbm | ||
| socket | ||
| stringio | ||
| strscan | ||
| syslog | UNIX/Linuxのみ | |
| win32/resolv | Windowsのみ | |
| win32ole | Windowsのみ | |
| zlib | zlib |
※dbmが使用するndbm互換ライブラリは下記の通りです。
| ライブラリ | 検索ヘッダー | 説明 |
|---|---|---|
| libc | "ndbm.h" | ndbm compatible library in libc. |
| db | "db.h" | Berkeley DB (libdb) |
| db1 | "db1/ndbm.h", "db1.h", "ndbm.h" | Berkeley DB (libdb1) |
| db2 | "db2/db.h", "db2.h", "db.h" | Berkeley DB (libdb2) |
| db6 | "db2/db.h", "db2.h", "db.h" | Berkeley DB (libdb6) |
| db3 | "db2/db.h", "db2.h", "db.h" | Berkeley DB (libdb3) |
| db4 | "db2/db.h", "db2.h", "db.h" | Berkeley DB (libdb4) |
| db5 | "db2/db.h", "db2.h", "db.h" | Berkeley DB (libdb5) |
| gdbm_compat | "gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h" | GDBM since 1.8.1 (libgdbm_compat) |
| gdbm | "gdbm-ndbm.h", "gdbm/ndbm.h", "ndbm.h" | GDBM until 1.8.0 (libgdbm) |
| qdbm | "qdbm/relic.h", "relic.h" | QDBM (libqdbm) |
| ndbm | "ndbm.h" | Some legacy OS may have libndbm. |
bisonを除き、ライブラリ自体だけでは無くヘッダーが必要です。ライブラリのパッケージだけでは無く、ライブラリ開発のパッケージが必要になります。Ubuntu 18.04LTSであれば、次のようにインストールすれば良いでしょう。
$ sudo apt install build-essential bison libffi-dev libgdbm-dev libgdbm-compat-dev libreadline-dev libssl-dev zlib1g-dev
なお、Ruby本体にはコンパイル可能な環境であること以外に依存ライブラリは無かったはずです。
以下はメモです。
- 古いバージョンに含まれるcursesやtcl/tkはそれぞれライブラリが必要です。
- 古いバージョンではyamlのソースがバンドルされておらず、libyamlが必要かも知れません。
- Ubuntu 18.04LTSで2.3系以下をインストールする場合は、libssl1.0-devパッケージが必要です。このパッケージはlibssl-devと排他です。