2024-02-26

Fedora Linux と Berkeley DB

Berkeley DB (BDB) は、キー/バリュー・データ用の組み込みデータベース・ソフトウェア・ライブラリで、オープンソース・ソフトウェアにおいて歴史的に重要な位置を占めています。Berkeley DB は C 言語で書かれており、他の多くのプログラミング言語用の API バインディングを備えています。BDB は任意のキーとデータのペアをバイト配列として格納し、一つのキーに対して複数のデータ項目をサポートできます。Berkeley DB は SQL を利用したリレーショナルデータベースではありませんが、データベーストランザクション、マルチバージョン・コンカレンシーコントロール、ライトアヘッド・ロギングなどのデータベース機能を備えています。BDB は、ほとんどの Unix ライクなシステムや Windows、リアルタイムオペレーティングシステムを含む、さまざまなオペレーティングシステム上で動作します。

Wikipedia より引用、翻訳、編集

Fedora Linux を開発している Fedora プロジェクトは、Fedora 33[2020-10-27 リリース]から Berkeley DB (libdb) の利用を非推奨 (deprecated)、Fedora 35[2021-11-02 リリース]からは使用を放棄 (orphaned) するとして、多くのソフトウェアが使用している libdb から他のデータベースへの移行を進めています [1]

Fedora Linux はパッケージ管理に RPM というパッケージマネージャを利用していますが、この RPM が Berkeley DB に依存していたので(RPM の開発プロジェクトは)これを SQLite へ移行しています [2] [3] [4]

Fedora Linux に収録されているパッケージで Berkeley DB に依存しているソフトウェアは数が多く、他のデータベースへの移行には時間がかかるようです。次期リリースの Fedora Linux 40 でも依然、特定のパッケージについて Berkeley DB から他のデータベースへ移行することが変更予定 (ChangeSet) に記載されています [5]

今回のテーマ
  • いまさらではありますが、なぜ Fedora プロジェクトが Berkeley DB のライブラリに依存しないように取り組んでいるのかをまとめました。

4.4BSD Unix 用に開発された Berkeley DB

Berkeley DB は、もともとカリフォルニア大学バークレー校で 4.4BSD Unix 用に開発されたフリーライセンスのデータベース・ソフトウェアでした。その後 1996 年に、このプロジェクトの開発者たちは Sleepycat 社を設立し、Netscape 社から新機能提供の要請を受けて商用サポートを始めました。

そのため、Sleepycat 社は、商用利用目的ではプロプライエタリ・ソフトウェア・ライセンスの下で Berkeley DB を配布し、同時に Sleepycat License を作成し、GNU General Public License と同様のコピーレフトな再配布条件で、オープンソースとしての利用と配布を許可しました。

Wikipedia より引用、翻訳、編集

Oracle 社による買収とライセンス変更

2006 年に Oracle 社が Sleepycat 社を買収しました [6]。当然のことながら、Berkeley DB は Oracle 社の製品群に追加されました。

その後 2013 年に、Oracle 社は Berkeley DB のライセンスを変更しています [8] [9]。Fedora プロジェクトの wiki によると、ライセンス変更は Berkeley DB v.6 からのようです [10]。具体的には、オープンソース向けのライセンスが、従来の Sleepycat License から AGPLv3+ へ変更されました [11]

AGPL とは

AGPL は GPLv2 のコピーレフト条項が ASP では適用されない課題を解決するために策定されたライセンスです。すなわち、AGPL ライセンスの著作物(通常、ウェブアプリケーション)のネットワークユーザーに対して、完全なソースコードを提供可能にしておくことを要求しています。

Wikipedia より引用、編集

Fedora プロジェクトの判断

AGPL の是非は別として、ライセンスが変更された新しいバージョンの Berkeley DB を Fedora Linux に収録すると、少なくとも ASP に Fedora Linux あるいは(Fedora プロジェクトの開発成果を反映した)RHEL を利用している開発者に運用方法の変更を強いることにつながります。特にエンタープライズ用途のアプリケーションにとって深刻な変更になるでしょう。

Fedora プロジェクトは Fedora Linux に収録する Berkeley DB を、新しいライセンスが適用される前のバージョンに据え置きました。

Oracle Berkeley DB の最新バージョンは、このブログ記事作成時点で 18.1 ですが [12]、現行の Fedora Linux 39 に収録されている Berkeley DB のバージョンは以下にように 5.3.28 のままです。

Fedora Linux 39 に収録されている libdb

他の Linux ディストロ

RHEL 9 では libdb (Berkeley DB) の利用は非推奨になっており [13] [14] [15]、利用できる libdb のバージョンも 5.3.28 です。Debian や Ubuntu でも libdb のバージョンは 5.3.28 です。

念のため、Oracle Linux 9 を確認してみましたが、libdb は RHEL と同様に 5.3.28 を利用できるものの、それより新しい Oracle Berkeley DB のバージョンは、モジュールストリームを含めて利用できるようにはなっていませんでした。RHEL 互換のためと言い訳できるのでしょうが、Unbreakable Enterprise Kernel (UEK) の利用をユーザーにほぼ強制している割には、自社製品である Berkeley DB については消極的なアプローチなので、やり方が狡いと感じてしまいます。💢

ちなみに最新の Berkeley DB を収録している Linux ディストロがあるのか探したところ、OpenMandriva Lx 15 が Berkley DB 18.1 を lib64db18.1 というパッケージ名で収録していました。こだわりがあるのか、何か情報がないか探しましたが、これといった情報に辿り着けませんでした。

OpenMandriva Lx 15 に収録されている lib64db18.1

最後に

冒頭に触れた Fedora プロジェクト Wiki 'Changes/Libdb deprecated' [1]Detailed Description には、「Fedora 35 で既存のデータベースの変換ツールを提供し、libdb を orphaned(放棄)としてマークします。」とありますが、変換ツールについての詳細が追記されていません。

調べてみると、Fedora Linux の libdb の RPM パッケージ(の spec ファイル)について、参考サイト [17] のコミットに db_converter の追加が記されています。db_converter の github のサイト [18] によると、Berkeley DB から様々なデータベース形式への変換ツールとのことです。この変更は libdb パッケージのリリースバージョン 57 以降になるので、Fedora Linux 40 からになるでしょう。

参考サイト

  1. Changes/Libdb deprecated - Fedora Project Wiki
  2. Fedora Looking To Transition The RPM Database From Berkeley DB To SQLite - Phoronix [2020-03-16]
  3. RPM 4.16.0 Release Notes [2020-09-30]
  4. RPM 4.17.0 Release Notes [2021-09-03]
  5. Releases/40/ChangeSet - Fedora Project Wiki
  6. Oracle、オープンソースデータベースのSleepycatを買収 - ITmedia NEWS [2006-02-15]
  7. オラクルが作るNoSQL DBの正体は?(1/2) - @IT [2011/11/8]
  8. Berkeley DB、ライセンスを変更 - OSSコミュニティでは議論 | TECH+(テックプラス) [2013-07-08]
  9. Oracle、BerkeleyDBのライセンスをひっそりとAGPLに変更 | スラド オープンソース [2013-07-10]
  10. Changes/BerkeleyDB 6 - Fedora Project Wiki [2014-06-04]
  11. Open Source License for Berkeley DB
  12. Oracle Berkeley DB Downloads
  13. 7.6. 動的プログラミング言語、Web サーバー、およびデータベースサーバー Red Hat Enterprise Linux 9 | Red Hat Customer Portal
  14. Available replacements for the deprecated Berkeley DB (libdb) in RHEL - Red Hat Customer Portal [2023-02-28]
  15. RHEL で廃止された Berkeley DB (libdb) の利用可能な置き換え - Red Hat Customer Portal [2023-02-28]
  16. MySQL闇歴史 SleepycatとBerkeley DB [2022-12-05]
  17. Commit - rpms/libdb - 1615145196a9e0b7b94db250670133275e1209d5 - src.fedoraproject.org
  18. fila43/db_converter: Converting tool from BerkeleyDB to various databases formats

Fedora 36 のころに公開されたビデオですが、判りやすく、かつ丁寧に Fedora Linux について紹介されています。

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加

2 件のコメント:

匿名 さんのコメント...

ブログの内容と関係ないのですが、サポート詐欺サイトの広告が表示されることがあるようです。

bitWalk さんのコメント...

ご連絡をありがとうございます。表示される広告の内容は個々で異なるので、自分の方では確認できないかもしれませんが、そういった広告を見かければ Google の AdSense に報告をします。