Fedora Silverblue はデスクトップ用途の immutable な(変更できない)OS で、rpm-ostree で生成された OS イメージを使用しています。一方、GUI を伴うデスクトップアプリケーションの管理には Flatpak が採用されています。rpm-ostree、flatpak どちらも OSTree の技術を利用しています。
rpm-ostree は rpm パッケージをユーザーが追加できるので、再起動が必要になるものの辛うじて OS をカスタマイズできます。しかし rpm パッケージそのものを開発するのに困ります。また、Flatpak アプリを開発したければ Flatpak で利用可能な SDK を利用できますが、アプリを一から開発するにはとても不便です。
徹底的に予期しない改変を防ぐために OS を(ほぼ)読み込み専用にしてしまうことは究極の対策になります。その反面、このようにアプリ開発に不便を強いることにもなります。この不便を解消できるのが Toolbox というプライベートなコンテナ環境だと言えるでしょう。Toolbox を活用すれば、rpm パッケージも Flatpak パッケージも開発できるのです。
以前のブログ記事 [1] で簡単な紹介をしましたが、あらためて Toolbox の使い方をまとめました。
使用した OS は以下の通りです。
Fedora Silverblue 33 | x86_64 |
Toolbox 〜 使い捨てのプライベートコンテナ 〜
勝手に「使い捨てのプライベートコンテナ」と呼びましたが、Toolbox はコンテナに関連する領域を、アカウント内の $HOME/.local/share/containers/ に確保します。Toolbox には、開発環境を準備するための最低限のコマンドしかないので、Docker や Podman を使ったことがあれば、すぐに Toolbox を利用することができるでしょう。
toolbox create でコンテナを作成すると、デフォルトで、ホストと同じバージョンの Fedora の dnf コマンドが利用できる通常イメージのコンテナがダウンロードされますので、必要に応じて dnf コマンドで必要なパッケージを追加してお好みの開発環境を準備することができます。GUI アプリもコンテナ内から起動できます。
アカウント領域はコンテナ内で丸ごと共有されていますので、コンテナから出ても開発したファイルにそのままアクセスできます。そのため、開発したアプリを Flatpak 化することも容易です。
開発が終わって開発領域が不要になれば、コンテナを簡単に削除できます。
Toolbox コンテナの作成
既に述べたように、端末エミュレータ上で toolbox create コマンドを実行すると、デフォルトで、ホストと同じバージョンの Fedora の dnf コマンドが利用できるイメージがダウンロードされて、利用可能なコンテナがひとつ作成されます。
[bitwalk@localhost ~]$ toolbox create Image required to create toolbox container. Download registry.fedoraproject.org/f33/fedora-toolbox:33 (500MB)? [y/N]: y Created container: fedora-toolbox-33 Enter with: toolbox enter [bitwalk@localhost ~]$
toolbox list コマンドを実行すると、ダウンロードされたイメージと利用可能なコンテナの一覧を確認できます。
[bitwalk@localhost ~]$ toolbox list
IMAGE ID IMAGE NAME CREATED
92d6fdd7ebda registry.fedoraproject.org/f33/fedora-toolbox:33 3 days ago
CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME
8b48b031af21 fedora-toolbox-33 26 seconds ago configured registry.fedoraproject.org/f33/fedora-toolbox:33
[bitwalk@localhost ~]$
toolbox enter コマンドでコンテナ内に入ります。
[bitwalk@localhost ~]$ toolbox enter Welcome to the Toolbox; a container where you can install and run all your tools. - Use DNF in the usual manner to install command line tools. - To create a new tools container, run 'toolbox create'. For more information, see the documentation. ⬢[bitwalk@toolbox ~]$ ls ダウンロード テンプレート デスクトップ ドキュメント ビデオ 公開 画像 音楽 ⬢[bitwalk@toolbox ~]$
dnf コマンドで最新の状態にアップデートできます。sudo コマンドはパスワードがありません。
⬢[bitwalk@toolbox ~]$ sudo dnf update We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Fedora 33 openh264 (From Cisco) - x86_64 1.3 kB/s | 2.5 kB 00:02 Fedora Modular 33 - x86_64 2.2 MB/s | 3.3 MB 00:01 Fedora Modular 33 - x86_64 - Updates 722 kB/s | 918 kB 00:01 Fedora 33 - x86_64 - Updates 2.6 MB/s | 10 MB 00:03 Fedora 33 - x86_64 4.5 MB/s | 72 MB 00:16 Dependencies resolved. ================================================================================================ Package Architecture Version Repository Size ================================================================================================ Upgrading: ... (途中省略) ... Complete! ⬢[bitwalk@toolbox ~]$
Toolbox で利用できる領域は、ホストの /var/home/アカウント が利用できる領域になります。
⬢[bitwalk@toolbox ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on fuse-overlayfs fuse.fuse-overlayfs 176G 12G 164G 7% / devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm tmpfs tmpfs 375M 204K 375M 1% /run/secrets tmpfs tmpfs 749M 9.8M 739M 2% /run/media /dev/sda1 vfat 29G 144K 29G 1% /run/media/bitwalk/DATA /dev/mmcblk0p3 btrfs 176G 12G 164G 7% /run/host/var /dev/mmcblk0p3 btrfs 176G 12G 164G 7% /var/home/bitwalk tmpfs tmpfs 1.9G 48K 1.9G 1% /tmp ⬢[bitwalk@toolbox ~]$
Toolbox コンテナ内のアプリを実行
例として、あらかじめホストでダウンロードしておいた Google Chrome をコンテナ内でインストールします。
⬢[bitwalk@toolbox ダウンロード]$ ls google-chrome-stable_current_x86_64.rpm ⬢[bitwalk@toolbox ダウンロード]$ sudo dnf install ./google-chrome-stable_current_x86_64.rpm Last metadata expiration check: 0:20:54 ago on Tue Nov 3 10:39:33 2020. Dependencies resolved. ================================================================================================ Package Arch Version Repository Size ================================================================================================ Installing: google-chrome-stable x86_64 86.0.4240.183-1 @commandline 68 M Installing dependencies: acl x86_64 2.2.53-9.fc33 fedora 72 k ... (途中省略) ... Complete! ⬢[bitwalk@toolbox ダウンロード]$
このまま、コンテナ内で google-chrome とタイプすれば Google Chrome が起動しますが、ここでは敢えてコンテナから抜け、ホストから実行してみます。コンテナから抜けるには exit とタイプします。
⬢[bitwalk@toolbox ダウンロード]$ exit logout [bitwalk@localhost ~]$
コンテナから exit コマンドで抜けても、コンテナは実行状態のままです。
[bitwalk@localhost ~]$ toolbox list IMAGE ID IMAGE NAME CREATED 92d6fdd7ebda registry.fedoraproject.org/f33/fedora-toolbox:33 3 days ago CONTAINER ID CONTAINER NAME CREATED STATUS IMAGE NAME 8b48b031af21 fedora-toolbox-33 3 hours ago running registry.fedoraproject.org/f33/fedora-toolbox:33 [bitwalk@localhost ~]$
ホスト側から(デフォルトのコンテナに対して)コマンド google-chrome を実行します。
[bitwalk@localhost ~]$ toolbox run google-chrome
Gtk-Message: 11:06:43.094: Failed to load module "canberra-gtk-module"
Gtk-Message: 11:06:43.121: Failed to load module "canberra-gtk-module"
[10908:10908:1103/110643.266238:ERROR:angle_platform_impl.cc(43)] initialize(797): ANGLE Display::initialize error 12289: Could not dlopen libGL.so.1: libGL.so.1: cannot open shared object file: No such file or directory
[10908:10908:1103/110643.266460:ERROR:gl_surface_egl.cc(767)] EGL Driver message (Critical) eglInitialize: Could not dlopen libGL.so.1: libGL.so.1: cannot open shared object file: No such file or directory
[10908:10908:1103/110643.266851:ERROR:gl_surface_egl.cc(1295)] eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED, trying next display type
...
(以下省略)
Google Chrome は確かに起動しましたが、コンテナ側の環境には日本語フォントがインストールされていないので文字化けしています。詳細は省略しますが、コンテナ側の日本語環境を整えれば使えるようになります。
Toolbox コマンド概略
toolbox コマンドの概略を以下にまとめました。覚えるべきコマンドは 6 種類です。
コマンド例 | 説 明 |
---|---|
toolbox create [--container <name>] | |
ツールボックスコンテナを作成します。デフォルトでは、ホストのバージョンと同じ Fedora のイメージをダウンロードします。オプションなしで使用すると、toolbox create は自動的に作成するコンテナに名前を付けます。追加のツールボックスを作成するには --container <name> オプションを使用します。 | |
toolbox enter [--container <name>] | |
toolbox のコンテナを対話的に使用するために入ります。オプションを指定せずに使用すると、toolbox enter はデフォルトの toolbox のコンテナを開きます。複数のツールボックスがある場合は、--container <name> オプションを使って利用するツールボックスを指定します。 | |
toolbox run [--container <name>] <cmd> <arg …> | |
toolbox のコンテナに入らずにコマンドを実行します。オプションなしで使用すると、toolbox run は toolbox のデフォルトのコンテナでコマンドを実行します。複数のツールボックスがある場合は、--container <name> オプションを使用して使用するツールボックスを指定します。 | |
toolbox list | |
ローカルにある toolbox のイメージとコンテナの一覧を表示します。 | |
toolbox rm [--force] <name> | |
toolbox のコンテナを削除します。--force オプションを付けると、実行中であってもコンテナを削除します。 | |
toolbox rmi [--force] <name> | |
toolbox のイメージを削除します。 | |
toolbox --help | |
使用可能なコマンドを一覧表示します。 |
参考サイト
- bitWalk's: Linux ディストロ探訪(10) 〜 Fedora Silverblue 〜 [2019-11-24]
にほんブログ村
0 件のコメント:
コメントを投稿