Red Hatの森若です。
この記事は赤帽エンジニア Advent Calendar 2019の3日目です。
今回は Red Hat Tech Nightでボツにした方のネタ、flatpakについて書きます。
スライドはこちら。
Linuxデスクトップ元年……?
今年は令和元年ですが、Linux界隈で"元年"と言えば"Linuxデスクトップ元年"と言いたいところです。「今年こそLinuxデスクトップ元年」って何回聞いたかよくわかりません。
私がこの記事を書くのに使っているのもFedora 31です。Linuxデスクトップ環境そのものはごく順調に進化しているのですが残念ながら普及しているとは言いにくいです。
デスクトップ環境としてのRHEL
Red Hat Enterprise Linuxは言わずと知れたRed Hatの看板製品で、従来デスクトップ用途もカバーしていたのですが、ついに今年RHELのデスクトップ向け型番はなくなってしまいました……(workstationは引き続き提供しています)。
RHEL 8に含まれるデスクトップ向けソフトウェアも少なく、RHELで提供される範囲だけでデスクトップ環境として利用するのは無理があります。たとえば H.264のcodecはfirefoxにはciscoから提供されたライブラリがついてくるものの、一般的なビデオ再生などで使えません。端的に言ってしまうと「Youtubeは再生できるけどローカルのビデオは再生できない」というようなつらい状況です。
RHEL 8にデスクトップアプリケーションを追加する
Red Hat ForumのRHEL8ブースで動画を流したかったのですが、上述のようにcodecもないですし、関連ライブラリとVLCをインストールしたくなりました。
RHELに含まれないデスクトップアプリケーションを追加でインストールしようというときに、いくつか考えられる手法があります。
- 自前でビルドする: 昔ながらの方法です。RHELのパッケージ管理とうまく連携させるのが難しいのでできれば避けたいところです。
- EPELやrpmfusionなどでRHEL8むけのパッケージを入れる: よく使われる手法です。将来の更新時に依存関係の競合が起きると面倒です。
- snapd: コンテナのようにホストのシステムと独立して、依存関係込みでアプリケーションを導入します。 パッケージと競合しない点が便利です。EPELに含まれています。
- flatpak: コンテナのようにホストのシステムと独立して、依存関係込みでアプリケーションを導入します。パッケージと競合しない点が便利です。 RHELに含まれています。
flatpakはRHEL8にも含まれています。今回はこれを使ってみましょう。
flatpakとは?
flatpakは、アプリケーションを配布するための技術で、OSTreeを基盤としています。アプリケーションのバイナリとバイナリが依存するライブラリをまとめて配布し、ディストリビューションによりません(厳密にはkernelの違いなどで影響があります)。さらにデスクトップ環境との統合が行われています。アプリケーションが基盤とする環境(ランタイム)として、freedesktop.org, GNOME, KDE(Qt)の3種類のランタイムが標準的に提供されています。
OSTreeとは?
OSTreeは、一般的なディレクトリツリーをgitのようにバージョン管理します。gitにもバイナリファイルを配置できますが、OSTreeでは起動可能なシステムのディレクトリツリーを扱う事を考慮しています。具体的な特徴としては以下のようなものがあります。
- 複数バージョンを同時にチェックアウトできる
- 容量を節約するためハードリンクを行い同一内容のファイルは実体を1つしか持たない
- リポジトリのミラーを行う際に最近N世代だけのミラーを実施できる
OSTreeは、CoreOS(旧 Atomic Host)でのOSアップデートの基盤技術として利用されています。同じ技術をアプリケーション配布用に使うのがflatpakです。
flathub.org
flatpak形式でアプリケーションを配布しているサイトとして有名なのは flathub.org です。利用のための設定は非常に簡単で、RHELのデスクトップ環境が既に手元にあるならflatpakパッケージを入れたあと、flathub.orgで3クリックして設定パッケージを導入することで完了します。
念のため、flathubで配布されているそれぞれのソフトウェアにたいして、Red Hatからのサポートは特にありません。これは配布手法に何を使っても同じですので気にせず進みます……。
以下はGNOME SoftwareでAudio & Video カテゴリのアプリケーションを見たときのスクリーンショットです。RHEL 8そのままだと存在しなかったVLCのアイコンが画面下のほうに登場しています。
まとめ
RHELをデスクトップ用途に使うのはしんどいのですが、もし使う必要がでてきたらflatpakとflathubを思いだすと少し楽ができます。背景の技術であるOSTreeも面白いので探ってみてください :)
おまけ
個人的にはOSTree推しですが、実は最新のflatpakではOSTreeだけではなくコンテナイメージで標準的に使われるOCI形式も扱えたりします。