Help us understand the problem. What is going on with this article?

Rubyをソースからコンパイルするときの依存ライブラリ

More than 1 year has passed since last update.

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と排他です。
raccy
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away