今回のエントリはQubes OSの fedora テンプレートにFedora公式レポジトリ以外のソースからパッケージをインストールする方法を紹介します。またノンフリーのパッケージをインストールするために RPM Fusion の利用法も取り上げます。そのほか snap と flatpak のソフトウェアをインストールする手順も説明します。
- 外部レポジトリの利用方法その1 (クローンしたテンプレートを一時的にネットに接続)
- 外部レポジトリの利用方法その2 (ディスポーザブル経由でダウンロードする例)
- fedoraテンプレートでの RPM Fusion の利用
- Snapパッケージの利用 (Spotify をインストールする例)
- Flatpakのアプリケーションをインストール (FreeTubeをインストールする例)
Qubes OSの fedora-39-xfce や debian-12-xfce などのテンプレートはセキュリティを確保するためデフォルトではネットワークにつながっていません。例外的に dnfコマンドもしくはaptコマンドを使用するときのみネットにつながるよう設計されています。これゆえテンプレートではFirefoxなどのウェブブラウザが機能しないのはもちろん、wget や curl コマンドを使って何らかのファイルをダウンロードすることすら許されません。しかし外部ソースからパッケージをインストールするには、rpmファイル、debファイル、署名ファイル等をどうにかしてテンプレートまで持ってこないとインストールはできません。
Qubes公式で解説されている外部ソースの利用方法は、一時的にたとえば5分程度の時間だけテンプレートをネットにつなげてインストール作業をするというものです。dnf や apt でつながる外部ソースをみだりに増やすとテンプレートが攻撃されるリスクが拡大してしまうので、もともとのテンプレートとは別に新しいテンプレートをクローンして作成し、そちらに外部レポジトリを追加することが推奨されています。
外部レポジトリの利用方法その1 (クローンしたテンプレートを一時的にネットに接続)
(外部レポジトリの利用に関するQubes 公式解説はこちらです)
このセクションではウェブブラウザのBraveをインストールする場合を例にとって外部レポジトリの追加方法を解説します。Braveブラウザは広告やトラッカーのブロック、ブラウザ・フィンガープリント対策などのプライバシー機能に特徴がある Chromium 系のウェブブラウザです。
fedora-39-xfce テンプレートのクローンを作成
画面左上Q から以下のように選んで fedora-39-xfce テンプレートのSettings画面を起動します。
Settingsウィンドウの右側下の Clone qube ボタンをクリックします。
Clone qubeという小さなウィンドウが出現します。新しいテンプレートに名前を付けて、テーマカラーを選んでください。ここでは fedora-39-xfce-clone という名前を付けテーマカラーは赤にしました。OKボタンを押すと新テンプレートの作成が始まります。
The qube was cloned successfully というメッセージが出ると作成終了です。
Braveブラウザのインストール
work, personal などの既存キューブからFirefoxを起動してBraveの公式サイトを訪問して、インストール方法を確認します。
「Braveをダウンロード」のところをクリックすると、 Fedoraに Braveブラウザをインストールするやり方が見つかりました。
つぎに一時的に fedora-39-xfce-cloneテンプレートをネットにつなげます。 fedora-39-xfce-clone の Qube Settings ウィンドウを開きます。
Basicタブの上の方にある Net qubeの項目が現時点では default(none) になっていますが、ドロップダウンメニューから sys-firewall を選択してください。
sys-firewallを選択すると、ネットにつなげるのは危険だからやめるよう警告が出ますが、OKボタンを押します。
Settingsウィンドウの Firewall rules のタブを選び、Limit outgoing connections toのラジオボタンをクリックします。ウィンドウの下のほうにある Allow full access for [5 min]のボックスにチェックを入れます。その横の x min のところの上下ボタンをいじると、何分間ネットにアクセスを許すのか調整できます。Apply ボタンまたは OKボタンを押してこれまでの変更内容を有効化してください。
つぎにクローンしたテンプレートfedora-39-xfce-cloneのターミナルを起動します。
このターミナルに Brave公式解説にあったとおりのコマンドを入力すればBraveをインストールできます。
[user@fedora-39-xfce-clone ~]$ sudo dnf install dnf-plugins-core (中略) パッケージ dnf-plugins-core-4.6.0-1.fc39.noarch は既にインストールされています。 依存関係が解決しました。 行うべきことはありません。 完了しました!
最初の dnf-plugins-coreはインストール済みで上のコマンドを打つ必要はありませんでした。
[user@fedora-39-xfce-clone ~]$ sudo dnf config-manager --add-repo https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
出力:
repo の追加: https://brave-browser-rpm-release.s3.brave.com/brave-browser.repo
この config-managerのコマンドにより /etc/yum.repos.d/以下に Braveのレポジトリの情報が入ります。つぎは署名ファイルをダウンロードします。
[user@fedora-39-xfce-clone ~]$ sudo rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
先程設定した制限時間以内にこのコマンドを実行しないとアクセスが拒否されてインポートに失敗します。失敗した場合は fedora-39-xfce-cloneの Qube Settings画面に戻って Firewall rulesタブのAllow full access for [x min]のボックスにチェックが入っていることを確認した上で、Applyボタンを押すとクローンしたテンプレートが再びネットにつながります。
つぎに dnf install コマンドで Braveブラウザをインストールします。dnfコマンドは常にネットにつながるので、 制限時間が過ぎてもネットから遮断されることはありません。
[user@fedora-39-xfce-clone ~]$ sudo dnf install brave-browser
fedora-39-xfce-cloneテンプレートの Qube Settings 画面の Basicタブから Net qubeの設定を default (none)に戻してOKボタンを押したらインストール作業は終了です。
このあと忘れずにfedora-39-xfce-cloneキューブをシャットダウンしてください。シャットダウンしてから、Braveブラウザを利用するキューブを起動します。
Braveブラウザの利用開始
Braveブラウザを利用するために、画面左上 Q - 歯車アイコン - Qubes Tools - Create New Qube を使用して、何か新しい appキューブをfedora-39-xfce-cloneベースで作成します。以下では brave-webというキューブを作成しました。あるいは personalなどの既存キューブのテンプレートを fedora-37-clone に変更するのもよいでしょう。
上の Create New Qubeツールのウィンドウにある Applicationsの枠内に + ボタンがあるのでそこを押すと Brave Web Browser を選択できる小さいウィンドウが出現します。
Create New Qube ツール最下部の Create ボタンを押して brave-web キューブを作成します。
次にbrave-webキューブのBraveブラウザを起動させます。テンプレートのシャットダウン前にbrave-webキューブを起動させると、まだBraveのインストール情報が利用できないので起動に失敗します。その場合はテンプレートをシャットダウンさせたあと、brave-webキューブを再起動してください。
初めてBraveを利用するときキーリングのパスワード設定画面が出てきます。Qubes OSの各キューブはパスワード無しの設定になっているのでこの画面が出てくるようです。適切なパスワードを指定して続行ボタンを押します。
これでBrave ブラウザが利用できるようになりました。
外部レポジトリの利用方法その2 (ディスポーザブル経由でダウンロードする例)
今度は Visual Studio Code (以下VS Code)をもう少し別のやり方でインストールします。Braveブラウザの例で用いたようなテンプレートを数分間ネットにつなげてファイルをダウンロードをするやり方ではなく、ディスポーザブルを起動して必要なファイルをダウンロードし、それをテンプレートに移動させてからインストールするやり方を紹介します。
Microsoftならセキュリティの面で信頼してもよいと思われることやVSCodeはwork, personalなど既存のキューブでも使いたい事情なども考え、クローンしたほうではなく元の fedora-39-xfce テンプレートに入れることにしました。ただしディスポーザブルからテンプレートにファイルを移すことによってテンプレートが攻撃を受けてしまうリスクは常にありますから、何をやっているのか正確に理解してから以下のサンプルコマンドを実行してください。少しでも不明な点がある場合はクローンしたテンプレート fedora-39-xfce-clone の方で実行してください。
ディスポーザブルのFirefoxでVSCodeのインストール方法を調べる
default-dvmベースのディスポーザブルの Firefoxを起動します(DebianのディスポーザブルのFirefoxでもかまいません)。
このディスポーザブルのFirefoxでVisual Studio Code を検索して公式サイトを訪問します。
VS Code 公式サイトでLinuxの解説のところを見たら、FedoraにVS Codeをインストールするコマンドが掲載されていました。
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
dnf check-update
sudo dnf install code
このコマンドの1行目は rpmコマンドでマイクロソフトの署名ファイル microsoft.ascをインポートします。2行目は /etc/yum.repos.d/ディレクトリに VS Code のレポジトリの情報を持つテキストファイル vscode.repo を作成をします。あとは sudo dnf install code
するだけです。
しかしこのコマンドをそのまま テンプレートのターミナルで実行すると、 rpm --import
のところで通信がつながらずエラーになります。 2行目の echo コマンドがあるところはネットにつなぐコマンドを使っていないのでテンプレートでも実行できます。 dnf コマンドはテンプレートでも常に使用可能なので問題なく実行できます。
結局 rpm --import によって microsoft.asc の署名ファイルをインポートするところだけが工夫すべきところです。
さきほど起動したFirefoxのディスポーザブルを用いて microsoft.ascファイルをダウンロードしましょう。画面右上の青色キューブ - disp#### - Run Terminal を選択して(あるいはFirefoxの上で CTRL+ALT+Tを押して) ターミナルを起動します。
以下のように curl コマンドで署名ファイルをダウンロードします。
[user@disp9337 ~]$ curl -o microsoft.asc https://packages.microsoft.com/keys/microsoft.asc
このascファイルを fedora-39-xfce テンプレートに移動させます。
[user@disp9337 ~]$ qvm-move microsoft.asc
移動先には fedora-39-xfce を選んでください。
fedora-39-xfceテンプレートで VS Codeのインストール
fedora-39-xfce が起動してファイルが移動し終わったら、fedora-39-xfce のターミナルを開きます。
以下のようにして署名ファイルをインポートします。disp#### のところは実際のディスポーザブルの番号を入力してください。
[user@fedora-39-xfce ~]$ sudo rpm --import QubesIncoming/disp####/microsoft.asc
以下のコマンドをディスポーザブルから Shift + Ctrl + Vなどのコピーアンドペースト機能を使用して fedora-39-xfceテンプレートに貼り付けて実行してください。
[user@fedora-39-xfce ~]$ sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
上のコマンドにより作成されたファイルを確認します。
[user@fedora-39-xfce ~]$ cat /etc/yum.repos.d/vscode.repo [code] name=Visual Studio Code baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
これで dnf コマンドでVS Codeをインストールできるようになりました。dnfコマンドは常にネットにつながっているので、VS Codeの本体は dnf コマンドでテンプレートからインストールします。ディスポーザブル経由でダウンロードする必要はありません。では dnf install を実行しましょう。
[user@fedora-39-xfce ~]$ sudo dnf check-update
[user@fedora-39-xfce ~]$ sudo dnf install code
インストールに成功したら fedora-39-xfceテンプレートをシャットダウンしてください。
workキューブ上でVS Codeを起動し、日本語拡張機能をインストール
VS Codeを利用したいappキューブのSettings画面を開いて Applicationsタブの左側の一覧から Visual Studio Codeを >
ボタンを押して右側欄に移します。以下は workキューブで設定している例です。
workキューブの VS Codeを起動します。
すると以下のようにVS Codeが立ち上がります。
そのあと例えば 日本語ランゲージパックの拡張機能をインストールします。
日本語拡張機能のインストールボタンを押します。
以下のように日本語化されました。
VS Codeの拡張機能はホームディレクトリに保存されます1。このためVS Codeを使用する各キューブ毎に拡張機能のインストール作業を行う必要があります。
fedoraテンプレートでの RPM Fusion の利用
(RPM Fusionの利用に関するQubes 公式の解説はこちらです)
Fedoraはノンフリーなソフトウェアを公式のレポジトリには置かない厳格な方針を採用しています。mp3の音楽を聞く場合や、mp4フォーマットの動画を見る場合などノンフリー系のソフトウェアを利用したいときは RPM Fusionという別のボランティアベースのレポジトリを使わないといけません。
実はRPM Fusionのレポジトリの情報はfedoraテンプレートの /etc/yum.repos.d/ 以下に .repo の拡張子で終わるファイルの形で保存されています。以下は fedora-39-xfce テンプレートのターミナルから ls コマンドを使って /etc/yum.repos.d/ の内容を表示したものです。 RPM Fusion以外に Google Chromeのレポジトリに関する repoファイルもすでに入っています。
[user@fedora-39-xfce ~]$ ls /etc/yum.repos.d/ fedora-cisco-openh264.repo rpmfusion-free-updates.repo fedora-updates-testing.repo rpmfusion-free.repo fedora-updates.repo rpmfusion-nonfree-updates-testing.repo fedora.repo rpmfusion-nonfree-updates.repo google-chrome.repo rpmfusion-nonfree.repo qubes-r4.repo vscode.repo rpmfusion-free-updates-testing.repo
上の /etc/yum.repos.d/以下にある (testingを除く)RPM Fusion関係のレポジトリを有効にするために次のコマンドを打ちます。
[user@fedora-39-xfce ~]$ sudo dnf config-manager --set-enabled rpmfusion-free rpmfusion-free-updates rpmfusion-nonfree rpmfusion-nonfree-updates
つづいて dnf upgrade をすると ダウンロードしてよいか聞かれるので y を入力します。
[user@fedora-39-xfce ~]$ sudo dnf upgrade --refresh Fedora 39 - x86_64 2.0 kB/s | 2.1 kB 00:01 Fedora 39 openh264 (From Cisco) - x86_64 951 B/s | 989 B 00:01 Fedora 39 - x86_64 - Updates 1.9 kB/s | 2.9 kB 00:01 Qubes OS Repository for VM (updates) 348 B/s | 833 B 00:02 RPM Fusion for Fedora 39 - Free 10 kB/s | 639 kB 01:02 RPM Fusion for Fedora 39 - Free - Updates 9.3 kB/s | 247 kB 00:26 RPM Fusion for Fedora 39 - Nonfree 12 kB/s | 259 kB 00:21 RPM Fusion for Fedora 39 - Nonfree - Updates 6.3 kB/s | 91 kB 00:14 Visual Studio Code 4.7 kB/s | 1.5 kB 00:00 依存関係が解決しました。 ================================================================================ パッケージ Arch バージョン リポジトリー サイズ ================================================================================ アップグレード: rpmfusion-free-release noarch 39-1 rpmfusion-free 11 k rpmfusion-nonfree-release noarch 39-1 rpmfusion-nonfree 11 k トランザクションの概要 ================================================================================ アップグレード 2 パッケージ ダウンロードサイズの合計: 22 k これでよろしいですか? [y/N]:
このあと RPM Fusion の GPG公開鍵をインポートしてよいか聞かれたら y を押します。
RPM Fusion for Fedora 39 - Free 1.6 MB/s | 1.7 kB 00:00 GPG 鍵 0xD651FF2E をインポート中: Userid : "RPM Fusion free repository for Fedora (2020) <rpmfusion-buildsys@lists.rpmfusion.org>" Fingerprint: E9A4 91A3 DE24 7814 E7E0 67EA E06F 8ECD D651 FF2E From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-39 これでよろしいですか? [y/N]:
RPM Fusion for Fedora 39 - Nonfree 1.3 MB/s | 1.7 kB 00:00 GPG 鍵 0x94843C65 をインポート中: Userid : "RPM Fusion nonfree repository for Fedora (2020) <rpmfusion-buildsys@lists.rpmfusion.org>" Fingerprint: 79BD B88F 9BBF 7391 0FD4 095B 6A2A F961 9484 3C65 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-nonfree-fedora-39 これでよろしいですか? [y/N]:
気になる人は公式サイトに鍵の情報が載っているので、そこで確認してください。
つぎにRPM Fusion のマルチメディア関連の解説に載っていた必要なコーデックをインストールするコマンドを実行します。
[user@fedora-39-xfce ~]$ sudo dnf groupupdate multimedia --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
Fedora公式解説に載っていたメディア関連のインストールはこれで完了です。 ついでにメディアプレーヤーの VLCもインストールしておきます。
[user@fedora-39-xfce ~]$ sudo dnf install vlc
上記のインストール作業が終わったら fedora-39-xfceテンプレートをシャットダウンしてください。
テンプレートのシャットダウン後に personalなどのappキューブを再起動して mp4フォーマットの動画などを開いてみます。以下は personalキューブで mp4動画を VLCで開いて視聴しているところです。
Snapパッケージの利用 (Spotify をインストールする例)
今度は Snap版の Spotify をインストールします。Qubes公式解説によると Snap版のアプリは appキューブ毎にインストールするものだそうです2。
最初にfedora-39-xfce テンプレートにSnap関連の必要なパッケージをインストールします。 fedora-39-xfce テンプレートのターミナルを起動して以下を入力します。
[user@fedora-39-xfce ~]$ sudo dnf install snapd qubes-snapd-helper
インストールが成功したら fedora-39-xfceテンプレートをシャットダウンします。
次に動画や音楽を楽しむための mediaキューブを作成することにします。これはfedora-39-xfceベースのキューブにします。 画面左上 Q - 歯車アイコン - Qubes Tools - Create New Qube を選びます。
以下のウィンドウで Name欄は "media", Label欄は "orange", Template欄は fedora-39-xfce です。Create ボタンをクリックして新キューブを作成します。
mediaキューブのターミナルを起動します。
以下のように Snap版のSpotifyをインストールします。
[user@media ~]$ snap install spotify error: too early for operation, device not yet seeded or device model not acknowledged
初めて snap を実行すると上のようなエラーが出るようです。もう一度同じコマンドを実行するとダウンロードが始まります。
[user@media ~]$ snap install spotify
spotify 1.2.31.1205.g4d59ad7c from Spotify✓ installed
のようなメッセージが出たらインストール成功です。
snap install コマンドが終了したら、media キューブの Settings を開きます。Applicationsタブをクリックして、上のほうにある Refresh Applications
ボタンをクリックします。Refreshの作業が終わると Applicationsタブのウィンドウの左欄に Spotify が現れます。それを >
ボタンを押して右側欄に移します。
OKボタンを押すと、Qubes のメニューから Spotifyが利用できるようになります。
Flatpakのアプリケーションをインストール (FreeTubeをインストールする例)
Youtubeを視聴するためのサードパーティアプリに FreeTubeというものがあります。以下では FreeTube の Flatpak版を入れてみます。 上で作成した media キューブにインストールすることにします。
fedora-39-xfce テンプレートにはまだ flatpakのシステムが入っていません。fedora-39-xfce のターミナルを起動して以下のように flatpak をインストールしてください。
[user@fedora-39-xfce ~]$ sudo dnf install flatpak
インストール完了後 fedora-39-xfce テンプレートをシャットダウンしてください。
mediaキューブが起動済みの場合は必ず再起動してください。
ではmediaキューブのターミナルを開いてください。
最初に Flathubの「リモート」の情報を flatpakに追加します。「リモート」というのは flatpakにおけるレポジトリみたいなものです。--user
オプションを付けてホームディレクトリ内にFlathubのリモートを追加します。
[user@media ~]$ flatpak remote-add --user --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
実際にリモートが追加されたことを確認します。
[user@media ~]$ flatpak remotes Name Options fedora system,oci flathub user
FreeTubeを flatpakを使って検索してみます。
[user@media ~]$ flatpak search freetube
データを取りに行くのでしばらく待たされます。すると以下のような出力が返ってきました。
[user@media ~]$ flatpak search freetube Name Description Application ID Version Branch Remotes FreeTube An Open Source YouTube app for privacy io.freetubeapp.FreeTube 0.20.0 Beta stable flathub
これをインストールします。flatpak install に --userオプションを付けるのを忘れないでください。そうしないとホームディレクトリ内にインストールされません。
[user@media ~]$ flatpak install --user io.freetubeapp.FreeTube Looking for matches… Required runtime for io.freetubeapp.FreeTube/x86_64/stable (runtime/org.freedesktop.Platform/x86_64/23.08) found in remote flathub Do you want to install it? [Y/n]:
Yを数回押すとインストールが始まります。
Error: Not enough disk space to complete this operation error: Failed to install org.freedesktop.Platform: While pulling runtime/org.freedesktop.Platform/x86_64/23.08 from remote flathub: opcode open-splice-and-close: opcode close: min-free-space-size 500MB would be exceeded, at least 92.5 kB requested
エラーが出てしまいました。media キューブのホームディレクトリのサイズを拡大する必要がありそうです。
mediaキューブの Qube Settingsを開いて Basicタブの下の方にある Private storage max sizeを拡大してください。ここでは10GBに増やしました。
再度 FreeTubeのインストールを試みます。
[user@media ~]$ flatpak install --user io.freetubeapp.FreeTube Looking for matches… Required runtime for io.freetubeapp.FreeTube/x86_64/stable (runtime/org.freedesktop.Platform/x86_64/23.08) found in remote flathub Do you want to install it? [Y/n]: Y io.freetubeapp.FreeTube permissions: ipc network pulseaudio x11 dri file access [1] dbus access [2] bus ownership [3] [1] xdg-download [2] org.freedesktop.PowerManagement, org.freedesktop.ScreenSaver, org.gnome.SessionManager, org.gnome.SettingsDaemon [3] org.mpris.MediaPlayer2.chromium.*, org.mpris.MediaPlayer2.freetube ID Branch Op Remote Download 1. [✓] org.freedesktop.Platform 23.08 i flathub 177.4 MB / 227.3 MB 2. [✓] io.freetubeapp.FreeTube stable i flathub 108.6 MB / 112.2 MB Installation complete.
今度はインストールに成功しました。
mediaキューブの Qube Settingsウィンドウをもう一度開いて Applicationsタブをクリックします。上のほうにある Refresh applicationsボタンをクリックしてください。しばらくすると左側欄に FreeTubeが現れるのでそれを右側に移したらOKボタンを押します。
以上でmediaキューブの FreeTubeが起動できるようになりました。
- 拡張機能のファイルは/home/user/.vscode/extensions/ 以下に保存されていました。↩
- fedora系のapp キューブに Spotifyを入れると /var/lib/snapd/snap/bin/spotify にインストールされました。ルートディレクトリ内にインストールされますが、bind-dirsという仕組みを利用してappキューブ内に保存されるように Qubesチームが工夫しているようです。↩