Vanilla OSでのパッケージ管理方法をやさしく解説
2025-01-24
Vanilla OSはパッケージ扱いがややこしい
初めてVanilla OSを使う人が困惑するのが複雑なパッケージ管理ではないでしょうか?実行中のホストシステムは改変できないイミュータブルディストロであるため、パッケージの導入もホストシステムが書き換え可能なOSとは大きく異っています。Vanilla OSを使う上で欠かせないのはホストシステムとサブシステムの使い分けです。基本的に仮想環境であるサブシステムで通常の作業を行い、ホストシステムへのパッケージ追加は最終手段と思っておけば良いと思います。
ホストシステムにパッケージを導入する
Vanilla OSはイミュータブルディストロであるため実行中のホストシステムのコア部分は上書き不可であるため、ホストシステムに直接パッケージをインストールすることはできません。そこでVanilla OSではパッケージがインストールされた新たな状態を作り出し、再起動時に新旧の状態を入れ替えることでホストシステムへのパッケージの導入を実現します。この時に使用するのがABRootというホストシステムの状態を管理するツールです。
ABRootを用いて導入するパッケージはドライバーやファームウェアなどのホストシステムに入れる必要性のあるものに限定した方が良いと思います。ユーザーが使用するアプリケーションに関しては後述するAPXによって作成されたサブシステムやVSO(Vanilla System Oparator)などの仮想環境、またはflatpakを経由してインストールすることが望ましいでしょう。
ABRootによるパッケージ導入
ABRootによるパッケージの導入に話を戻します。ABRootでパッケージを導入するにはabroot pkg
コマンドを使用します。ここではgnome-tweak
を導入してみましょう。以下にコマンド例を示します。
abroot pkg add gnome-tweak
abroot pkg apply
これでシステムを再起動し”current state”を選択すればgnome-tweakが導入されています。尚、“previous state”を選択することでパッケージ導入前の状態にロールバックすることが可能です。このように安全にアトミックに状態が更新される点もVanilla OSの特徴と言えるでしょう。
尚、パッケージを削除するには以下のようなコマンドを打ちます。
abroot pkg remove gnome-tweak
abroot pkg apply
仮想環境にパッケージをインストールする
前述のとおり、ユーザーが使用する多くのアプリケーションは仮想環境にインストールし使うことができます。Vanilla OSでは3つの選択肢があります。
- VSOサブシステム上にインストールする
- APXで生成したサブシステム上にインストールする
- Flatpakでインストールする
ここではVanilla OSの固有ツールであるVSOとAPXについて見ていきましょう。
VSOサブシステムへのパッケージ導入
まずVSOについてですが、これはVanilla System Oparatorというホストシステムから隔離されたサブシステムという仮想環境です。Vanilla OS上でターミナルを開くと自動的にVSOの内部に入ることになります。VSO内部でのパッケージのインストールはvso
コマンドによって行うことができます。
vsoコマンドを使用してパッケージをインストールする例は以下のとおりです。
vso install neofetch
VSOはDebianベースの環境であるためapt
コマンドも使用できます。上記のコマンドは以下のコマンドと同義です。
sudo apt install neofetch
パッケージの削除はvso
でもapt
でも可能です。vso
の場合は以下コマンドようにパッケージを削除します。
vso remove neofetch
APXにより生成されたサブシステムへのパッケージ導入
Vanilla OSはAPXによってFedoraやUbuntu, OpenSUSEなどの様々なディストリビューションのサブシステムを操作することができる特徴を持っています。この特性により、公式パッケージにないアプリケーションも別のディストリビューションから探してきて使うことが出来るというわけです。ここではapx
コマンドでOpenSUSEを作成し、OpenSUSEのパッケージマネージャーであるzypper
を使用してleafpadパッケージを導入してみましょう。
まず、apxでopensuseスタックを指定し、suse
という名前のコンテナを作成し起動します。apxからサブシステムを操作する際にはサブシステムの名前を指定します。今回の例ではsuse
という名前が使用されています。コマンド例は以下のとおりです。
apx subsystems new -n suse -s opensuse
apx suse start
尚、Apx GUIというGUIツールもあるので、コマンド操作に抵抗がある場合はそちらでサブシステムの操作を行ってもOKです。
作成したサブシステムの中に入るには以下のようなコマンドを打ちます。
apx suse enter
OpenSUSEサブシステムの中に入れましたので、ここから先はzypper
コマンドを使用してインストールすることができます。
sudo zypper in leafpad
もしサブシステムの外からインストールをする場合は以下のようにします。
apx <subsystem name> install leafpad
なぜapx
コマンドがzypper
コマンドの代りになるかというとapx
には各ディストリビューションのパッケージマネージャーを抽象化する機能があるかです。今回は詳細は省きます。興味のある方はapxのパッケージマネージャーの管理機能を調べてみてください。
これでleafpadがOpenSUSEサブシステムにインストールされたleafpadをホストシステムから使用するためにはエクスポートをします。エクスポートする際にはアプリケーション名かバイバリ名を指定します。基本的にデスクトップファイルを持つGUIアプリケーションはアプリケーション名、コマンドアプリケーションはバイナリを指定します。
apx suse export -a leafpad
これでアプリケーションランチャーからleafpadが起動できるようになりました。
パッケージの削除はサブシステムの中に入り各ディストリビューションのパッケージマネージャーで削除しても良いですし、サブシステムの外からapx
コマンドで以下のように削除してもOKです。
apx suse remove leafpad
VSOとApxのパッケージ関連コマンドまとめ
VSO
以下にvsoでパッケージ管理に関わるコマンドを紹介します。
コマンド | 操作 |
---|---|
vso install | パッケージのインストール |
vso remove | パッケージのインストール |
vso search | パッケージのインストール |
vso update | リポジトリの更新 |
vso upgrade | パッケージの更新 |
vso export | パッケージをホストシステムにエクスポート |
vso unexport | パッケージのエクスポートを取り消し |
Apx
ApxはVanilla OSにおけるサブシステムの管理ツールですが、サブシステム内のパッケージマネージャーであるapt
やDNF
, zypper
を抽象化しサブシステムの外から操作する機能を持っています。つまり、サブシステムがどのパッケージマネージャーを利用しているかを意識することなくサブシステムのパッケージ管理ができるようになっています。いくつかコマンドを紹介します。基本的にはvso
コマンドの”vso”の部分を”apx <subsystem name>“に変えただけど覚えておけば分かりやすいと思います。
コマンド | 操作 |
---|---|
apx <subsystem name> install | サブシステム内にパッケージのインストール |
apx <subsystem name> remove | サブシステム内のパッケージの削除 |
apx <subsystem name> search | サブシステム内のパッケージの検索 |
apx <subsystem name> update | サブシステム内のリポジトリの更新 |
apx <subsystem name> upgrade | サブシステム内のパッケージの更新 |
apx <subsystem name> export | パッケージをホストシステムにエクスポート |
apx <subsystem name> unexport | パッケージのエクスポートを取り消し |
apx <subsystem name> enter | サブシステムの中に入る |
おわりに
Vanilla OSでパッケージを扱う方法を見てきました。Vanilla OSは不変のホストシステムと可変のサブシステムがシームレスに繋がっているために、イミュータブルディストロを使用したことのない方には理解が難しい部分もあると思い、解説記事を書きました。この記事がお役に立てば幸いです。