5 年を経て、非常に実験的な GoboLinux プロジェクトが、新しいメンテナーと新しいリリースとともに復活しました。
前回のメジャーリリースから9年、GoboLinuxがバージョン017の最新リリースと新しいプロジェクトメンテナーを擁して復活しました。これまでGoboは、ブラジル出身の開発者であり、おそらく最も有名なプロジェクトであるhtopプロセスビューアを開発しているHisham Muhammad氏(創設者)の指揮下に置かれていました。
Hisham 氏は現在辞任し、すでにプロジェクト wiki を保守していた新しいメンテナーの Philip "nuc1eon" Pok 氏にバトンを渡しました。
このニュースに加えて、新しいリリース、GoboLinux 017.01 もあります。
GoboLinux 017にはAwesomeWMタイルウィンドウマネージャが付属していますが、他にも提供されています - クリックして拡大
Goboユーザーはしばらくリリースを見ていませんが、だからといって、Goboが1、2回リリースして消えてしまうような個人開発プロジェクトの一つになるわけではありません。Goboは2003年から存在し、現在は少人数のチームで開発されています。2020年には、プロジェクトの共同創設者であるLuca Villa Real氏によるバージョン017のアルファ版とベータ版がリリースされました。そして今、ついにそのバージョンがリリースされました。いくつかのバグが修正され、独自のパッケージングシステムの実装の詳細が変更され、多くのコンポーネントが更新されていますが、以前と大きく変わったわけではありません。
GoboLinuxは実験的で極めて革新的なディストリビューションです。Windowsの代替候補や超軽量ディストリビューションなど、そういった類のものではありません。使いやすくすぐに使えるものをお探しなら、他のものを探した方が良いでしょう。例えば、Linux Lite 7.4がリリースされたばかりです。
Goboは、Unix系OSの構成、ソフトウェアのパッケージ化、インストール、アップデート、削除の方法を根本から見直したい人のためのOSです。初期のGoboは、当時まだ新しかったMac OS Xからインスピレーションを得ていました。
MacOSとNeXTstep
起動可能なmacOSシステムドライブのディレクトリレイアウトは非常にシンプルで、ルートディレクトリには表示されるディレクトリがほんのわずかしかありません。例えば、現在執筆中の「Monterey」マシンでは、ブートドライブには、、、という4つのトップレベルディレクトリしかありません。Applications
ディレクトリ内では、各プログラムは、、、、Library
といった単一のファイルのように見えます。System
Users
Applications
Automator
Calculator
Calendar
しかし、この表面的なシンプルさは、ある巧妙な工夫によるものです。実際には、ルートディレクトリには、、、、、、、など、標準的なUnixエントリのほとんどが含まれていますbin
。ただ、dev
Finderデスクトップではそれらが隠されているだけです。ターミナルを開いて、と入力すれば、それらが表示されます。ただし、その内容はUnixのベテランが期待するようなものではないかもしれませetc
ん。opt
sbin
usr
var
ls -la /
の美しいアイコンは、/Applications
ディレクトリツリー全体を隠しています。これらのアイコンには特別なファイル拡張子が付いており、macOS Finder が というディレクトリを見つけると{something}.app
、拡張子を非表示にして、そのツリーをモノリシックアプリケーションとして扱います。その内部には複雑なディレクトリ階層があり、従来の Unix スタイルのレイアウトとは全く似ていません。しかし、これには明確な利点があります。例えば、複数の CPU アーキテクチャ向けのバイナリを透過的に処理できます。
macOSは、スティーブ・ジョブズ率いるNeXT Computerが開発したNeXTstepからディレクトリレイアウトと.app
システムを継承しています。NeXTstepは1988年にNeXTstep 1.0をリリースしました。このシステムは、Linux自体よりも古いGNUstepプロジェクトでも共有されています。NeXTとSunは1994年にOPENSTEP仕様[PDF]でこのシステムを標準化しました。現在、このシステムはmacOSや、NEXTSPACE、GSDEなどのGNUstepベースのデスクトップで使用されています。
Goboチームは、macOSのシンプルで無駄を削ぎ落としたファイルシステムレイアウトのアイデアを継承し、それをOS全体にさらに徹底的に適用するために拡張しました。Goboには比較的少数のディレクトリしかなく、人間が読みやすい、英語で慣例的に大文字で表記された名前が付けられています。これらのディレクトリ内には、比較的わかりやすい名前が付けられており、さらにその中にバージョン番号付きのディレクトリが配置されているため、複数の異なるバージョンのツールを同時に、並べてインストールできます。
プログラムのインストールは簡単です。ディレクトリを1つコピーするだけです。アンインストールするには、そのディレクトリを削除します。以前のバージョン番号のディレクトリを削除しない場合は、以前のバージョンがそのまま残ります。つまり、複雑なファイルシステムやコピーオンライトスナップショットなどを必要とせず、ロールバック機能が組み込まれているのです。
これは、OSとその構成プログラムを分離し、複雑なディレクトリ階層に、難解で短縮された小文字の名前で分散させる従来のUnixスタイルのシステムを完全に置き換えるものです。ライブラリは と/lib
、/usr/lib
バイナリは/bin
と/sbin
と/usr/bin
と/usr/sbin
など/usr/local/bin
、設定ファイルは/etc
、システム状態は/var
などです。この理由は複雑かつ歴史的なものです。UNIXは元々、ハードウェアの制約により、度重なるアドホックな妥協を経て進化してきたのです。
最後のリンクでは次のように説明されています:
ここが重要な点です。なぜこのようなものが存在するのか、何時間でも喜んで説明してくれる人がいます。レイアウトには正式な標準があり、Ubuntuの非常に短いものやLinux Documentation Projectの非常に詳細なものなど、様々な説明があります。しかし、それは真実ではありません。すべては事後的に、時間の経過とともに進化したことを正当化するために作られたものです。誰もがずっとそうしてきたからこうなっているのです。さらに悪いことに、5ポンド(6ドル)のUSBキーに12個のディストリビューションを丸ごと保存でき、最も安価なコンピューターでさえ数百GBのSSDから起動できる今日では、これらのことは実際には意味をなさないのです。今では、単なる伝統となっています。
今日では、パッケージ化されたソフトウェアを取り出し、解凍し、その複雑な階層構造全体にわたる多数の異なるディレクトリに、その多数のコンポーネントを配布するために、精巧なプログラムが必要です。この作業はさらに困難になります。ツールは、すべてのコンポーネントの配置場所を追跡する必要があるためです。これにより、すべてのファイルを新しいバージョンにアップグレードしたり、アンインストールしたりできるようになります。さらに、これらのツールは、OS自体を構成する多数のプログラムやライブラリ、そして追加アプリケーション間の複雑な相互依存関係をすべて追跡する必要があります。
数多くの Linux ディストリビューション間の主な違いの 1 つは、このようなツールの実装がさまざまであることです。
Flatpakのような一見現代的なシステムは、古いUnixレイアウトを独自のラッパーでカプセル化し、クラウドサーバーからローカルマシンに変更を同期するための非常に複雑なツールを追加しているだけです。Snapも同様の機能を果たしますが、圧縮されたアーカイブファイルをループマウントすることで、少なくともアップデートは簡単になり、新しいファイルをコピーするだけで済みます。
Gobo の開発者たちは、そうした従来の負担をすべて捨て去り、大文字の英語名を使った、簡素化された、人間が読めるレイアウトに置き換えました。これは、彼らが英語を母国語としていたからではなく (彼らは英語を母国語としていません)、英語が 21 世紀の世界言語だからです。
完全な開示として:伝統的なUnixフォルダ階層は依然として存在します。これは、多くのLinuxプログラムのソースコードにパスが埋め込まれているため、必要なのです。しかし、Goboのバージョンは、実際にデータが保存されている場所への多数のシンボリックリンクを除いて空です。つまり、既存のソースコードを変更することなく再コンパイルできます。また、Gobohideと呼ばれるオプションのLinuxカーネルモジュールによって隠蔽されており、このモジュールは約20年前からカーネルの一部となっています。
ライブイメージは非常にきれいな画面で起動し、ルートディレクトリには驚くほどほとんど何もない - クリックして拡大
システムは現在かなり成熟していますが、22年前でさえ、Hisham は自身の決定を弁護しなければなりませんでした。たとえば、「私は無知ではありません」というサブタイトルのGoboLinux の設計に関する神話と誤解です。
同様のことを試みた他のシステムも存在します。
かつてプロプライエタリUNIXの時代には、いくつかのシステムが存在しました。米国国立標準技術研究所( NIST)には、 NIST Depotと呼ばれるシステムがあり、「組織およびUNIXプラットフォームの境界を越えてソフトウェアインストールを共有するためのフレームワーク」[PDF]と説明されていました。その派生システムとして、Andrew分散ファイルシステムを採用したCMU Depotがありました。現在ではその資料はほとんど残っていませんが、その機能と動作に関する簡単な概要は残っています。もう一つの派生システムとして、Depot-Liteがあり、「ソフトウェア管理のためのメカニズム」と説明されていました。
もう 1 人はウォータールー大学の Xhier で、彼は今でも HOWTO を提供しています。
現在、Nixが存在します。これは他のOSでも使用でき、2022年に私たちが調査したNixをベースに構築されたディストリビューションも存在します。NixはUnixのディレクトリ階層をほぼすべて破棄し、ハッシュを使用してソフトウェア生成のディレクトリ階層に置き換え、一意性を確保します。2011年にはGoboLinuxの評価と比較が行われ、両プロジェクトの異なる目標について議論されています。
GNU Guix も同様ですが、Scheme の GNU Guile 方言を使用してパッケージを定義します。一方、Nix には独自の仕様言語があります。
このハゲタカのささやかな意見ですが、これらのツールは宣言的で再現可能なビルドを追求するあまり、行き過ぎた犠牲を払っています。これは理論上の利点であり、ほとんどのLinuxユーザーにとっては単純に重要ではないと思われます。その理由については、約1年前にNixがフォークされた際に詳しく説明しました。Nixは、人間がほとんど判読できず、操作もできないファイルシステムを生成します。メンテナンスツールが機能しなくなった場合、手動で修復またはメンテナンスすることはほぼ不可能です。また、他のファイルシステム設計に見られる階層構造と探索性も失われています。
対照的に、Gobo は、より読みやすくナビゲートしやすい階層を作成することを目指しており、その設計を活用して、従来の Unix または Linux システムよりも優れたカプセル化と分離、より簡単なインストールと削除、Btrfs や ZFS などの高度なファイルシステムを必要とせずにアップグレードとロールバックを実現します。
また、Nix と同様に、別のディストリビューション上のホーム ディレクトリ内で GoboLinux を使用することもできます。チームはこれを Rootless GoboLinux と呼んでいます。
Gobo の変更は Unix 伝統主義者を激怒させていますが、その主張は実現しています。私たちのテストでは、バージョン 017.01 は VirtualBox と QEMU の両方で問題なく動作しましたが、ブートローダーのインストールに失敗。とはいえ、ブートローダーの問題はリリースノートの「既知の未解決の問題」に記載されています。これは許容範囲です。Gobo は新しい経営陣のもとで開発されており、2020 年から保留されていたリリースがリリースされたのですから。
初期のトラブルは、Goboが教えてくれる教訓を決して損なうものではありません。NixとGuixのせいでGoboは時代遅れになったと言う人もいますが、全くの間違いです。Flatpak、Snap、openSUSEのSnapper、その他実験的なパッケージングツールの開発者の方々には、新しいバージョンに注目し、その使い方を学ぶ時間を取ってくれることを願っています。®