[Fedora Linux] Toolbx の使い方

2024-03-31 公開 / 2024-03-31 更新

Fedora Toolbx (toolbox) は、開発者のためにユーザーアカウント単位でコンテナ環境を提供するコマンドラインツールです。コマンドは toolbox ですが、toolbox は一般名称だからでしょうか、ソフトウェア名は Toolbx になっているようです。

使用した OS は以下の通りです。

Fedora Silverblue 40 (beta) x86_64

Fedora Toolbx は Fedora Linus Workstation および Fedora Silverblue をはじめとする Fedora Atomic Desktops で利用できますが、他の Fedora エディションでも toolbox をインストールすれば使用できるとのことです。

Toolbx 〜 使い捨てのプライベートコンテナ 〜

勝手に「使い捨てのプライベートコンテナ」と呼びましたが、Toolbx はコンテナに関連する領域を、アカウント内の $HOME/.local/share/containers/ に確保します。Toolbx には、開発環境を準備するための最低限のコマンドしかないので、Docker や Podman を使ったことがあれば、すぐに Toolbx を利用することができるでしょう。

toolbox create でコンテナを作成すると、デフォルトで、ホストと同じバージョンの Fedora の dnf コマンドが利用できる通常イメージのコンテナがダウンロードされます。必要に応じて dnf コマンドで必要なパッケージを追加してお好みの開発環境を準備することができます。GUI アプリもコンテナ内から起動できます。

アカウント領域はコンテナ内で丸ごと共有されていますので、コンテナから抜けても開発したファイルにそのままアクセスできます。そのため、開発したアプリを Flatpak 化することも容易です。

開発が終わってコンテナ領域が不要になれば、簡単に削除できます。

Toolbx コンテナの作成

既に述べたように、端末エミュレータ上で toolbox create コマンドを実行すると、デフォルトで、ホストと同じバージョンの Fedora の dnf コマンドが利用できるイメージがダウンロードされて、利用可能なコンテナがひとつ作成されます。

bitwalk@fedora:~$ toolbox create
Image required to create toolbox container.
Download registry.fedoraproject.org/fedora-toolbox:40 (372.9MB)? [y/N]: y
Created container: fedora-toolbox-40
Enter with: toolbox enter
bitwalk@fedora:~$ 

toolbox list コマンドを実行すると、ダウンロードされたイメージと利用可能なコンテナの一覧を確認できます。

bitwalk@fedora:~$ toolbox list
IMAGE ID      IMAGE NAME                                    CREATED
95a10f3648cb  registry.fedoraproject.org/fedora-toolbox:40  17 hours ago

CONTAINER ID  CONTAINER NAME     CREATED        STATUS   IMAGE NAME
ef0b3ea93551  fedora-toolbox-40  2 minutes ago  created  registry.fedoraproject.org/fedora-toolbox:40
bitwalk@fedora:~$ 

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
Fedora 40 - x86_64                              762 kB/s |  34 MB     00:45    
Fedora 40 openh264 (From Cisco) - x86_64         90  B/s | 1.8 kB     00:19    
Fedora 40 - x86_64 - Updates                    8.4  B/s | 134  B     00:15    
Fedora 40 - x86_64 - Test Updates               5.7 MB/s | 4.3 MB     00:00    
依存関係が解決しました。
================================================================================
 パッケージ                 Arch     バージョン         リポジトリー      サイズ
================================================================================
アップグレード:
...
(途中省略)
...

Complete!
[bitwalk@toolbox ~]$ 

Toolbx で利用できる領域は、ホストの /var/home/アカウント が利用できる領域になります。

[bitwalk@toolbox ~]$ df -hT
ファイルシス   タイプ    サイズ  使用  残り 使用% マウント位置
devtmpfs       devtmpfs    4.0M     0  4.0M    0% /dev
tmpfs          tmpfs       2.0G   84K  2.0G    1% /dev/shm
selinuxfs      selinuxfs    39G  9.3G   30G   25% /sys/fs/selinux
tmpfs          tmpfs       391M  3.8M  387M    1% /etc/hostname
tmpfs          tmpfs       782M  1.5M  781M    1% /run/media
/dev/vda3      btrfs        39G  9.3G   30G   25% /run/host
/dev/vda3      btrfs        39G  9.3G   30G   25% /run/host/var
/dev/vda3      btrfs        39G  9.3G   30G   25% /run/host/var/home
tmpfs          tmpfs       2.0G  130M  1.8G    7% /tmp
/dev/vda2      ext4        974M  295M  612M   33% /run/host/boot
overlay        overlay      39G  9.3G   30G   25% /

[bitwalk@toolbox ~]$ 

Toolbx コンテナ内のアプリを実行

例として、あらかじめホストでダウンロードしておいた Google Chrome をコンテナ内でインストールしてみます。

[bitwalk@toolbox ダウンロード]$ ls
google-chrome-stable_current_x86_64.rpm
[bitwalk@toolbox ダウンロード]$ sudo dnf install ./google-chrome-stable_current_x86_64.rpm
メタデータの期限切れの最終確認: 0:05:21 前の 2024年03月31日 12時46分02秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                     Arch   バージョン         リポジトリー    サイズ
================================================================================
インストール:
 google-chrome-stable           x86_64 123.0.6312.86-1    @commandline    104 M
依存関係のインストール:
 ModemManager-glib              x86_64 1.22.0-3.fc40      fedora          322 k
 NetworkManager-libnm           x86_64 1:1.46.0-2.fc40    updates-testing 1.8 M
 abattis-cantarell-vf-fonts     noarch 0.301-12.fc40      fedora          120 k
...
(途中省略)
...

完了しました!
[bitwalk@toolbox ダウンロード]$ 

さらに、日本語フォントをインストールしておきます。

[bitwalk@toolbox ダウンロード]$ sudo dnf install google-noto-sans-cjk-fonts google-noto-sans-cjk-vf-fonts google-noto-sans-mono-cjk-vf-fonts google-noto-serif-cjk-fonts google-noto-serif-cjk-vf-fonts
...
(途中省略)
...

このまま、コンテナ内で google-chrome とタイプすれば Google Chrome が起動しますが、ここでは敢えてコンテナから抜け、ホストから実行してみます。コンテナから抜けるには exit とタイプします。

[bitwalk@toolbox ダウンロード]$ exit
ログアウト
bitwalk@fedora:~$ 

コンテナから exit コマンドで抜けても、コンテナは実行状態のままです。

[bitwalk@localhost ~]$ toolbox list
IMAGE ID      IMAGE NAME                                    CREATED
95a10f3648cb  registry.fedoraproject.org/fedora-toolbox:40  17 hours ago

CONTAINER ID  CONTAINER NAME     CREATED         STATUS   IMAGE NAME
ef0b3ea93551  fedora-toolbox-40  23 minutes ago  running  registry.fedoraproject.org/fedora-toolbox:40
bitwalk@fedora:~$ 

ホスト側から(デフォルトのコンテナに対して)コマンド google-chrome を実行します。

bitwalk@fedora:~$ toolbox run google-chrome
MESA: error: ZINK: failed to choose pdev
glx: failed to create drisw screen
failed to load driver: zink
[4667:4667:0331/132201.642070:ERROR:viz_main_impl.cc(196)] Exiting GPU process d
ue to errors during initialization
[4601:4601:0331/132201.759600:ERROR:object_proxy.cc(576)] Failed to call method:org.freedesktop.ScreenSaver.GetActive: object_path= /org/freedesktop/ScreenSaver: org.freedesktop.DBus.Error.NotSupported: This method is not part of the idle inhibition specification: https://specifications.freedesktop.org/idle-inhibit-spec/latest/

なにやらエラーが出ていますが、とりあえず起動します。

ホストから起動したコンテナ内の Google Chrome

Toolbx コマンド概略

toolbox コマンド概略を以下にまとめました。覚えるべきサブコマンドは 6 種類です。

Toolbox コマンド概略
コマンド例 説  明
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
  使用可能なコマンドを一覧表示します。

参考サイト

  1. Toolbx :: Fedora Docs
  2. toolbx

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村
このエントリーをはてなブックマークに追加

0 件のコメント: