ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:50898] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について
@ 2019-12-20  3:05 Yasuhiro KIMURA
  2019-12-20  5:43 ` [ruby-dev:50899] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について Tanaka Akira
  0 siblings, 1 reply; 3+ messages in thread
From: Yasuhiro KIMURA @ 2019-12-20  3:05 UTC (permalink / raw)
  To: ruby-dev

木村と申します。
ruby-listとどちらで尋ねるか迷いましたが、rubyのプログラミングの話では
なく、rubyのビルドに関する話なのでこちらで。

Rubyのソースのext/dbm/extconf.rbによると、DBMモジュールはバックエンド
として複数のDBMライブラリ(libcのndbm、Berkley DB, GDBM, QDBM)をサポー
トしています。そして、どのライブラリを使うかを明示的に指定したい場合に
は、extconf.rbに対して--with-dbm-typeオプションを追加すれば指定できる
ようです。例えばバックエンドとしてQDBMを使いたい場合には、QDBMをインス
トールした後に

tar xfpvJ ruby-2.6.5.tar.xz
cd ruby-2.6.5/ext/dbm
ruby extconf.rb --with-dbm-type=qdbm
make

とすれば、libqdbm.soがリンクされたdbm.soがビルドされます。

それではext/dbm単独ではなくruby全体をビルドする際に、DBMモジュールが用
いるバックエンドを指定するには、どのようにしたら良いのでしょうか。試し
に

tar xfpvJ ruby-2.6.5.tar.xz
cd ruby-2.6.5
./configure --with-dbm-type=qdbm
make

としてみましたが、ext/dbm/extconf.rbにはconfigureで指定し
た--with-dbm-typeオプションは渡されないようです。パッチを当てたりせず
に指定できる方法がありましたら、教えてください。

---
木村 康浩

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ruby-dev:50899] Re: DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について
  2019-12-20  3:05 [ruby-dev:50898] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について Yasuhiro KIMURA
@ 2019-12-20  5:43 ` Tanaka Akira
  2019-12-20  5:55   ` [ruby-dev:50900] " Yasuhiro KIMURA
  0 siblings, 1 reply; 3+ messages in thread
From: Tanaka Akira @ 2019-12-20  5:43 UTC (permalink / raw)
  To: Ruby developers (Japanese)

2019年12月20日(金) 12:06 Yasuhiro KIMURA <yasu@utahime.org>:

> それではext/dbm単独ではなくruby全体をビルドする際に、DBMモジュールが用
> いるバックエンドを指定するには、どのようにしたら良いのでしょうか。試し
> に
>
> tar xfpvJ ruby-2.6.5.tar.xz
> cd ruby-2.6.5
> ./configure --with-dbm-type=qdbm
> make
>
> としてみましたが、ext/dbm/extconf.rbにはconfigureで指定し
> た--with-dbm-typeオプションは渡されないようです。パッチを当てたりせず
> に指定できる方法がありましたら、教えてください。

とりあえず ruby-2.6.5 で ./configure --with-dbm-type=qdbm は動く気がします。

% sudo apt install libqdbm-dev
% mkdir /tmp/a
% cd /tmp/a
% ./configure --with-dbm-type=qdbm --prefix=/tmp/a
% make
% grep -i qdbm ext/dbm/extconf.h
#define RUBYDBM_DBM_HEADER "qdbm/relic.h"
#define RUBYDBM_DBM_TYPE "qdbm"
#define DBM_HDR <qdbm/relic.h>
% ldd ./.ext/x86_64-linux/dbm.so
linux-vdso.so.1 (0x00007fff103e7000)
libqdbm.so.14 => /lib/libqdbm.so.14 (0x00007fda759c5000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fda75842000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fda75681000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fda75463000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fda75442000)
/lib64/ld-linux-x86-64.so.2 (0x00007fda75a2f000)

libqdbm がリンクされているのが確認できます。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [ruby-dev:50900] Re: DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について
  2019-12-20  5:43 ` [ruby-dev:50899] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について Tanaka Akira
@ 2019-12-20  5:55   ` Yasuhiro KIMURA
  0 siblings, 0 replies; 3+ messages in thread
From: Yasuhiro KIMURA @ 2019-12-20  5:55 UTC (permalink / raw)
  To: ruby-dev

木村です。

From: Tanaka Akira <akr@fsij.org>
Subject: [ruby-dev:50899] Re: DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について
Date: Fri, 20 Dec 2019 14:43:23 +0900

> とりあえず ruby-2.6.5 で ./configure --with-dbm-type=qdbm は動く気がします。
> 
> % sudo apt install libqdbm-dev
> % mkdir /tmp/a
> % cd /tmp/a
> % ./configure --with-dbm-type=qdbm --prefix=/tmp/a
> % make
> % grep -i qdbm ext/dbm/extconf.h
> #define RUBYDBM_DBM_HEADER "qdbm/relic.h"
> #define RUBYDBM_DBM_TYPE "qdbm"
> #define DBM_HDR <qdbm/relic.h>
> % ldd ./.ext/x86_64-linux/dbm.so
> linux-vdso.so.1 (0x00007fff103e7000)
> libqdbm.so.14 => /lib/libqdbm.so.14 (0x00007fda759c5000)
> libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fda75842000)
> libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fda75681000)
> libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fda75463000)
> libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fda75442000)
> /lib64/ld-linux-x86-64.so.2 (0x00007fda75a2f000)
> 
> libqdbm がリンクされているのが確認できます。

あれ、そうですか。apt使っているってことはDebianかUbuntuですよね。私が
試したのはFreeBSDなのですが、ライブラリやヘッダファイルの場所の違いが
影響しているんですかね。もう少し詳しく調べてみることにします。ありがと
うございました。

---
木村 康浩

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-12-20  5:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-20  3:05 [ruby-dev:50898] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について Yasuhiro KIMURA
2019-12-20  5:43 ` [ruby-dev:50899] DBMモジュールが使うバックエンドをrubyをビルドする際に指定する方法について Tanaka Akira
2019-12-20  5:55   ` [ruby-dev:50900] " Yasuhiro KIMURA

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).