混沌から明晰へ――Linuxパッケージ管理をマスターするためのたった一つのルール
Linuxのパッケージマネージャーを、私は長い間「自動販売機」のように扱っていました。アプリが必要ならインストール。別のアプリも必要なら、それもインストール。APTとFlatpakとSnapをごちゃ混ぜに使い、さらにPPAを一つか二つ追加する。何が問題になるというのでしょう?
しばらくの間は、何も起きませんでした。それこそが問題だったのです。何も起きないことで、「自分は何をしているのかわかっている」という根拠のない自信が育ってしまいました。Linuxは抗いません。警告もしません。「同じアプリを3つの異なるエコシステムからインストールしないほうがいいですよ」と親切なメッセージを出すこともありません。ただ、黙って許してくれるだけでした。
許されれば許されるほど、私は自分を過信するようになりました。そしてある日、すべてが壊れたのです。劇的な崩壊でも、爆発的なエラーの嵐でもありません。ただ……微妙におかしくなったのです。アプリは起動せず、アップデートは失敗し、依存関係同士が、何年も衝突を避けてきた機能不全の家族のように言い争いを始めました。その夜、私は気づいたのです。自分はLinuxがどのようにソフトウェアをインストールしているのか、実はまったく理解していなかったのだと。
なぜすべてが順調に見えたのか――破綻するまでは
Linuxは警告なしに複雑さを積み重ねさせてくれる
現代のLinuxディストリビューションは驚くほど寛容です。複数のソースからソフトウェアをインストールしても深く考える必要はなく、ほとんどの場合、そのまま動作します。APTはシステムリポジトリから取得し、すべてを緊密に統合します。Flatpakは独自の依存関係を持つサンドボックス化されたアプリを提供します。Snapは独自の環境をバンドルし、独立してアップデートします。PPAは、より新しいバージョンや代替バージョンを静かにシステムへ注入します。
最初は、これが自由に感じられます。本物の自由です。他のOSの壁に囲まれた庭から逃げ出したような感覚。アップデートを待つ必要もなく、単一のストアに縛られることもなく、「ダメ」と言われることもありません。しかし、摩擦のない自由は危険です。これらのシステムはそれぞれ少し異なる問題を解決するために存在しており、システムについての共通認識を持たず、意味のある連携もしていません。共存はしていますが、平和なときもあれば、そうでないときもあるのです。
つまり、同じアプリを3通りの方法でインストールでき、それぞれが独自の依存関係、アップデートロジック、システムへの期待値を持つことになります。Linuxは止めません。速度さえ落としません。ただ黙々と、複雑さが積み重なるまま放置し、いずれ何かが限界を迎えるのです。
亀裂が見え始めたとき
何も完全には壊れないのに、すべてがどこかおかしい
私のシステムはクラッシュしませんでした。クラッシュなら綺麗で明白で、修復可能だったでしょう。代わりに、物事はゆっくりと忍び寄るように奇妙になり始め、正気を疑うようになりました。APTで入れたGIMPは、同じもののFlatpak版をインストールした途端に起動しなくなりました。あるPPAがシステムライブラリを置き換え、アップデートが理由を十分に説明せずに不満を漏らすようになりました。Snapアプリは微妙に異なる動作をし、言葉にし難いけれど無視できない違和感を残しました。
何も「これは壊れている」と叫んではいません。でも、すべてがどこかおかしかった。アニメーションにわずかな引っかかりがあり、アプリの起動にワンテンポ余計にかかり、アップデートは曖昧で皮肉めいたエラーを吐くようになりました。それは診断情報というより、暗示のようでした。あるアプリを削除すると別のアプリが静かに壊れ、再インストールしても直らないこともありました。問題はアプリ自体ではなく、そのアプリが属するエコシステム。より正確に言えば、考えなしに積み重ねた複数のエコシステムだったのです。
最悪なのは、それがすべて目に見えなかったことです。根本原因を示す単一のエラーメッセージはなく、「あなたがやったんだ」という明白な瞬間もありません。ただ、システムへの信頼が揺らぐ感覚だけが膨らんでいきました。そこでハッとしました。これは偶然ではない。蓄積なのだと。小さく、個々には合理的な判断が積み重なり、合わせると合理的でなくなったのです。
すべてを変えた気づき
パッケージマネージャーは互いに交換可能ではない
ここが、初日から――少なくともPPAをブラウザ拡張機能のように気軽に追加し始める前に――理解しておきたかった部分です。APT、Flatpak、Snapは、同じソフトウェアをインストールする異なる方法ではありません。それらは平和に共存するふりをした、異なる哲学なのです。
APTは共有されたシステムを前提としています。ライブラリは再利用され、依存関係は中央で管理されます。すべてが同じ世界に住んでいるのだから、協調して動くことが期待されています。
Flatpakは分離を前提としています。アプリは必要なものを持ち込み、システムをほぼ無視します。だからこそ移植性が高く、多くの場合より新しく、時には少し重くなります。
Snapも似たアプローチですが、独自のパッケージ形式、アップデート挙動、ランタイムモデルがその上に重なっています。いくつかの問題を解決する一方で、独自の癖も持ち込みます。Snapアプリの起動を待ったことがある人なら、誰もが実感しているはずです。
ではPPAはどうでしょう? PPAはルールを根本的に曲げます。APTエコシステムの一部をカスタムバージョンで置き換えるのです。強力で有用でありながら、存在を忘れると少し混沌としたものになります。私は文字通り忘れていました。
どれも間違ってはいません。しかし、互換でもありません。そして、計画もなしに互いの上に重ねるようには設計されていません。気軽に混ぜることは、異なるOSの部品を組み合わせて、一貫したシステムとして動くことを期待するようなものです。うまくいくこともあります。いかなくなるまで。
私のシステムを救った唯一のルール
すべてのアプリに一つの居場所を
この整理は楽しい作業ではありませんでした。重複アプリのアンインストール、残骸パッケージの削除、すっかり忘れていたPPAの除去、そして実際にどのバージョンの何が使われているのかの解明。ある時点で、同じアプリの3つのバージョンが3つの異なる仕組みでインストールされており、どれもまったく同じ動作をしませんでした。それは柔軟性とは呼べず、偶然生み出してしまった断片化されたソフトウェア多元宇宙のようでした。
そのクリーンアップの過程のどこかで――半ば苛立ち、半ば自分のやり方の徹底ぶりに感心しながら――恥ずかしいほどシンプルなルールに行き着きました。「すべてのアプリに一つの居場所を」。APTでインストールしたなら、そのアプリについてはAPTを使い続ける。Flatpakを選んだなら、そのバージョンにコミットする。どうしてもPPAが必要なら、それは後で忘れる気軽な追加ではなく、意図的な選択として扱う。
重複なし、オーバーラップなし、そしてバックグラウンドで静かに同期がズレていく並列インストールも絶対になし。効果は即座に、正直少し驚くほど現れました。アップデートは文句を言わなくなり、依存関係の衝突は止み、ソフトウェアの削除は本当に削除されるようになりました(小さな幽霊を残すこともなくなりました)。私のシステムは、ゆるくつながった判断の寄せ集めではなく、再びシステムとして振る舞うようになりました。そしてもっと重要なことに、奇妙な小さな問題ごとに首をかしげることがなくなりました。今では、何がどこにあるのかわかっているからです。
Linuxは壊れていなかった。私がようやく理解しただけ
これが不快な真実です。Linuxは私を裏切らず、ランダムに崩壊せず、不機嫌な日を選んだわけでもありません。
Linuxは私の指示に完璧に従っていたのです。私はただ、その指示が互いに矛盾していることに気づいていなかっただけ。パッケージマネージャーが実際にどう機能するかを理解すると、カオスは神秘的なものではなくなりました。論理的で、予測可能で、振り返れば少し明白にさえ思えます。こういうものはいつもそうなのです。そして予測可能になったものは、修正可能です。変化が必要だったのはLinuxではなく、私のほうだったのです。
-
Wayland対応など新機能を多数搭載して登場した「MATE Desktop 1.26」
MATEは、視覚的に心地よいデスクトップ体験と高いパフォーマンスを両立させたデスクトップ環境です。GNOME 2の後継として開発されており、GNOMEやKDEと比べて大幅に軽快に動作する点が特徴です。この特性により、やや古いハードウェアでLinuxを動かしたいユーザーにとって、MATEは非常に魅力的な選択肢となっています。そのMATEの開発チームはこのほど、最新の安定版となる「MATE Desktop 1.26」をリリースしました。18か月以上にわたる開発期間を経てついに登場した今回のバージョンには、数多くの新機能が盛り込まれています。MATE Desktop 1.26の主な新機能多くのコンポ
-
Ubuntuソフトウェアセンターの高速でクリーンな代替手段「App Grid」とは
Ubuntuの標準アプリ「Ubuntuソフトウェアセンター」を、もっと高速なツールに置き換えられることをご存じでしょうか。今回は、最高の代替手段と言われる「App Grid」をご紹介します。 はじめにお伝えしたいこと 本題に入る前に、ひとつ重要な点をお伝えしておきます。App Gridはクローズドソース(ソースコード非公開)のアプリケーションです。多くのLinuxユーザーは、オープンソースの理念に共感してLinuxを選んでいます。その姿勢自体は何ら問題ありませんが、「クローズドソースのアプリは一切使わない」という主義をお持ちの方には、App Gridは向いていないでしょう。 App Grid