Berkeley DB (BDB) は、キー/バリュー・データ用の組み込みデータベース・ソフトウェア・ライブラリで、オープンソース・ソフトウェアにおいて歴史的に重要な位置を占めています。Berkeley DB は C 言語で書かれており、他の多くのプログラミング言語用の API バインディングを備えています。BDB は任意のキーとデータのペアをバイト配列として格納し、一つのキーに対して複数のデータ項目をサポートできます。Berkeley DB は SQL を利用したリレーショナルデータベースではありませんが、データベーストランザクション、マルチバージョン・コンカレンシーコントロール、ライトアヘッド・ロギングなどのデータベース機能を備えています。BDB は、ほとんどの Unix ライクなシステムや Windows、リアルタイムオペレーティングシステムを含む、さまざまなオペレーティングシステム上で動作します。
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 のライブラリに依存しないように取り組んでいるのかをまとめました。
そのため、Sleepycat 社は、商用利用目的ではプロプライエタリ・ソフトウェア・ライセンスの下で Berkeley DB を配布し、同時に Sleepycat License を作成し、GNU General Public License と同様のコピーレフトな再配布条件で、オープンソースとしての利用と配布を許可しました。
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 のままです。
念のため、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 というパッケージ名で収録していました。こだわりがあるのか、何か情報がないか探しましたが、これといった情報に辿り着けませんでした。
PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
Save the current page to disk. MHTML is the default format that is used to store the web page on disk. Requires a slot for downloadRequested() . [参考訳] 現在のページをディスクに保存します。MHTML は、Web ページをディスクに保存する際のデフォルトのフォーマットです。downloadRequested() のスロットが必要です。
Show the source of the current page in a new tab. Requires implementation of createWindow() or newWindowRequested() . [参考訳] 現在のページのソースを新しいタブに表示します。createWindow() または newWindowRequested() の実装が必要です。
PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
class WorkerSignal(QObject):
threadFinished = Signal()
threadProgress = Signal(int)
class Worker(QRunnable, WorkerSignal):
def __init__(self):
super().__init__()
def run(self):
for i in range(100):
time.sleep(0.1)
self.threadProgress.emit(i + 1)
self.threadFinished.emit()
PySide (Qt for Python) は、Qt(キュート)の Python バインディングで、GUI などを構築するためのクロスプラットフォームなライブラリです。Linux/X11, macOS および Microsoft Windows をサポートしています。配布ライセンスは LGPL で公開されています。
以前、当ブログで紹介した、QWebEngineView で表示したサイトの HTML を取得するサンプル [1] について、より簡単な方法が判ったので改定します。
今回のテーマ
QWebEngineView で読み込んだ URL は、QWebEnginePage に表示されますが、ここに表示されたウェブサイトの HTML のソースを取得します。[改訂版]
UEFI セキュアブートは、起動対象のオペレーティングシステムの電子署名を検証して正当なソフトウェアであることが確認できた場合にのみブート処理を継続します。Windows マークのあるマシンではセキュアブートに Microsoft の電子署名が使われており、Windows 8 以降はセキュアブート電子署名が付与されています。一方で、Windows 7 以前のオペレーティングシステムやほとんどの Linux ディストリビューションは電子署名が付与されていないため、セキュアブートが有効な UEFI ブートローダーでは起動できません。
Microsoft は、実費で Microsoft の鍵によって署名を行うサービスを提供しています。Fedora, openSUSE, Ubuntu, RHEL, Debian などの Linux ディストリビューションは、このサービスによって署名された軽量ブートローダを用いることでセキュアブート(の鍵配布と鍵インストールに纏わる問題)に対応しています。
最近はお金が無いし、置く場所も無くなってきたのでコンスタントには続いていないのですが、超格安の Windows PC を買っては Linux をインストールしてみることが趣味のようになっています。
それでも、年に何回かは買ってしまう超格安の PC へ Linux をインストールする際、UEFI のセキュアブートを無効にしなくとも、そのままインストールできていて、迂闊にもそれを不思議だと感じていませんでした。
最初にインストールしてみる Linux ディストロである Fedora Linux が、セキュアブートに対応していたのでした[1]。また、UEFI でセキュアブートを無効にする機能が、Windows 10 以降で(要求仕様では)オプションになっていることを知りませんでした。実機にインストールするのであれば、セキュアブートに対応している Linux ディストロであることが要件になってきます。
そう言えば、昨年 12 月に開催された AlmaLinux Day Tokyo において、AlmaLinux OS Architect / Release Engineering Lead の Andrew Lukoshko 氏が、AlmaLinux はセキュアブートに対応していることを詳しく話されていましたが、自分の理解が追従できませんでした。そのため、たとえ逐次通訳の説明があってもメモをしっかり取れなかったことを思い出しました[2]。その時の講演では Rocky Linux はセキュアブートに対応していないのでは、なんて話がありましたが Rocky Linux 8.5 以降でセキュアブートに対応しています[3]。
Linux ディストロを調べればセキュアブートに対応しているかは判るのですが、逆に、セキュアブートに対応している Linux ディストロ一覧の情報がないか探しています。しかし、そんな都合の良いサイトは見つかっていません。よいサイトが見つかれば情報を追記していきます。