Flatpak

提供: ArchWiki
2016年11月7日 (月) 21:55時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

Wikipedia より:

Flatpak (2016年5月以前までの名前は xdg-app) は、Linux のデスクトップコンピュータ環境のためのアプリケーション仮想化システムである。

インストール

flatpak または flatpak-gitAUR パッケージをインストールしてください。

リポジトリの管理

リポジトリの追加

リモートの flatpak リポジトリを追加するには次のコマンドを実行:

$ flatpak remote-add name location

name は新しいリモートリポジトリの名前、location はリポジトリのパスあるいは URL に置き換えてください。

リポジトリの削除

リモートの flatpak リポジトリを削除するには次のコマンドを実行:

$ flatpak remote-delete name

name は削除したいリモートリポジトリの名前に置き換えてください。

ランタイムとアプリケーションの管理

利用可能なランタイムとアプリケーションの確認

remote という名前のリモートリポジトリに存在するランタイムとアプリケーションを確認するには次を実行:

$ flatpak remote-ls remote

ランタイムやアプリケーションのインストール

ランタイムやアプリケーションをインストールするには次を実行:

$ flatpak install remote name

remote はリモートリポジトリの名前に、name はインストールしたいアプリケーションやランタイムの名前に置き換えてください。

インストールされたランタイムやアプリケーションの確認

インストールされたランタイムやアプリケーションを確認するには次を実行:

$ flatpak list

ランタイムやアプリケーションのアップデート

name という名前のランタイムあるいはアプリケーションをアップデートするには次を実行:

$ flatpak update name

ランタイムやアプリケーションのアンインストール

name という名前のランタイムあるいはアプリケーションをアンインストールするには次を実行:

$ flatpak uninstall name

Flatpak の .desktop ファイルをメニューに追加

ウィンドウマネージャやランチャーはデフォルトでは Flatpak ディレクトリをスキャンしません。スキャンされるディレクトリのリストを編集出来る場合、以下を追加してください:

~/.local/share/flatpak/exports/applications

上記の設定で Awesome から Flatpak アプリが起動できるようになります。

カスタムベースランタイムの作成

ノート:
  • You may want to use an untrusted, unprivileged user account for bundling untrusted software because the software is not sandboxed during app and runtime creation.
  • When distributing bundles to others, you may be legally obliged to provide the source code of some of the bundled software upon request. You may want to use ABS to build these packages from source.

pacman を使うことで Flatpak 用に Arch ベースのカスタムランタイムやベース SDK を作成することができます。カスタムランタイムを使用してアプリケーションをビルドしたりパッケージ化することが可能です。デフォルトの org.freedesktop.BasePlatformorg.freedesktop.BaseSdk ランタイムを使用する代わりとなります。

flatpak だけでなく、fakeroot のインストールが必要です。また、pacman フックを使うには fakechroot も必要です。

まずは、ランタイムやアプリケーションをビルドするためのディレクトリを作成してください:

$ mkdir myflatpakbuilddir
$ cd myflatpakbuilddir

次にランタイムベースプラットフォームをビルドするためのディレクトリを用意します。シンボリックリンクを作成して Arch からデフォルトの /usr/share などにアクセスできるようにしてください:

$ mkdir -p myruntime/files/var/lib/pacman
$ touch myruntime/files/.ref
$ ln -s /usr/usr/share myruntime/files/share
$ ln -s /usr/usr/include myruntime/files/include
$ ln -s /usr/usr/local myruntime/files/local

Arch ランタイムから OS のフォントを利用できるようにするには:

$ mkdir -p myruntime/files/usr/share/fonts
$ ln -s /run/host/fonts myruntime/files/usr/share/fonts/flatpakhostfonts

ランタイムにパッケージをインストールする前に pacman.conf を編集する必要があります。/etc/pacman.conf をビルドディレクトリにコピーして以下の変更を行ってください:

  • CheckSpace オプションを削除して pacman によってルートファイルシステムに関するエラーが表示されないようにしてください。
  • 不必要なカスタムリポジトリを削除してください。必要なのは IgnorePkg, IgnoreGroup, NoUpgrade, NoExtract の設定だけです。

それからランタイムにパッケージをインストールします:

$ fakechroot fakeroot pacman -Syu --root myruntime/files --dbpath myruntime/files/var/lib/pacman --config pacman.conf base
$ mv pacman.conf myruntime/files/etc/pacman.conf

myruntime/files/etc/locale.gen を編集して使用するロケールを設定してください。その後ランタイムのロケールを再生成:

$ fakechroot chroot myruntime/files locale-gen

パッケージをビルドしたり pacman を実行するのに必要なアプリケーションを追加することでベースランタイムからベース SDK を作成できます:

$ cp -r myruntime mysdk
$ fakechroot fakeroot pacman -S --root mysdk/files --dbpath mysdk/files/var/lib/pacman --config mysdk/files/etc/pacman.conf base-devel fakeroot fakechroot --needed

ランタイムと SDK についてのメタデータを追加:

myruntime/metadata
[Runtime]
name=org.mydomain.BasePlatform
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26
mysdk/metadata
[Runtime]
name=org.mydomain.BaseSdk
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26

カレントディレクトリのローカルリポジトリにベースランタイムと SDK を追加してください。“My Arch base runtime” や “My Arch base SDK” などの適当なコミットメッセージを使用すると良いでしょう。

$ ostree init --mode archive-z2 --repo=.
$ EDITOR="nano -w" ostree commit -b runtime/org.mydomain.BasePlatform/x86_64/2016-06-26 --tree=dir=myruntime
$ EDITOR="nano -w" ostree commit -b runtime/org.mydomain.BaseSdk/x86_64/2016-06-26 --tree=dir=mysdk
$ ostree summary -u

ランタイムと SDK をインストール:

$ flatpak remote-add --user --no-gpg-verify myarchos file://$(pwd)
$ flatpak install --user myarchos org.mydomain.BasePlatform 2016-06-26
$ flatpak install --user myarchos org.mydomain.BaseSdk 2016-06-26

pacman でアプリを作成

通常の方法 でアプリケーションをビルドする代わりに、pacman を使って通常の Arch パッケージのコンテナを作成することができます。アプリを作成するとき /usr は読み込み専用であるため、アプリをビルドするときに Arch のパッケージを使うことはできません。pacman でアプリを作成する場合:

  • pacman を使って依存パッケージを全て含んだランタイムを作成する。
  • 通常の方法 でアプリをコンパイルするか、configure スクリプトで --prefix=/app を使用するように Flatpak 向けにカスタマイズした PKGBUILD を使う。

あるいは:

  • pacman を使って pacman でインストールしたアプリを含むランタイムを作成する
  • アプリを起動するためのダミーアプリを作成する。

後者の場合、まずは以下のように pacman を使ってランタイムを作成します (例として gedit をコンテナ化)。ランタイムは pacman を使って初期化・準備します。

$ flatpak build-init -w geditruntime org.mydomain.geditruntime org.mydomain.BaseSdk org.mydomain.BasePlatform 2016-06-26
$ flatpak build geditruntime sed -i "s/^#Server/Server/g" /etc/pacman.d/mirrorlist
$ flatpak build geditruntime ln -s /usr/var/lib /var/lib
$ flatpak build geditruntime fakeroot pacman-key --init
$ flatpak build geditruntime fakeroot pacman-key --populate archlinux

pacman からホストのネットワーク接続が使えるようにする必要があります:

$ flatpak build --share=network geditruntime fakechroot fakeroot pacman --root /usr -S gedit

ランタイムを完成させる前にインストールをテストすることができます:

$ flatpak build --socket=x11 geditruntime gedit

ランタイムをビルドを完了して新しいローカルリポジトリにエクスポートしてください。pacman の GnuPG 鍵のパーミッションが干渉する可能性があるため先に削除する必要があります。

$ flatpak build geditruntime rm -r /etc/pacman.d/gnupg
$ flatpak build-finish geditruntime
$ sed -i "s/\[Application\]/\[Runtime\]/;s/runtime=org.mydomain.BasePlatform/runtime=org.mydomain.geditruntime/" geditruntime/metadata
$ flatpak build-export -r geditrepo geditruntime

それからダミーアプリを作成:

$ flatpak build-init geditapp org.gnome.gedit org.mydomain.BaseSdk org.mydomain.geditruntime

ビルドを完了するときに指定するオプションで、サンドボックス化されたときのアプリのアクセス権限を調整することができます。利用可能なオプションは Flatpak のドキュメントGNOME のマニフェストファイル を見てください。また、ビルドが完了した後、エクスポートする前に必要に応じて geditapp/metadata を編集する方法もあります。メタデータファイルが完成したら、リポジトリにアプリをエクスポートしてください。

$ flatpak build-finish geditapp --socket=x11 [possibly other options] --command=gedit
$ flatpak build-export geditrepo geditapp

ランタイムを使ってアプリをインストール:

$ flatpak --user remote-add --no-gpg-verify geditrepo geditrepo
$ flatpak install --user geditrepo org.mydomain.geditruntime
$ flatpak install --user geditrepo org.gnome.gedit
$ flatpak run org.gnome.gedit

参照