やっふぁい!一ヶ月ぶりの更新です。SOZ!
roadtoalinuxmintuser

theming

roundup
Linux Mint Tips : SNAP、FLATPAK、APPIMAGE 違い比較 00:05

Linux Mint を使用していると deb パッケージ以外にもいくつか新しいパッケージ形式が使えることに気づきます。それは Appimage、Flatpak、Snap の 3 種類です。

この 3 つのパッケージ形式はディストロに依らずインストールすることができるフォーマットとしてまたたく間に普及しました。Endless OS や Fedora Silverblue のようにディストロ非依存のパッケージ(Flatpak)だけしかインストールできないようなディストロもすでに存在しています。こういったパッケージ形式はメインのパッケージ形式として使うのに十分使えるものなのでしょうか。

今回はそれぞれのディストロ非依存のパッケージ形式と、ディストロ非依存のパッケージ形式そのものの良い点と悪い点を見ていくことにします。

ディストロ非依存のパッケージ形式はどう機能するのか


ディストロ非依存のパッケージ形式は実行するのに必要な依存関係を全てを一つのパッケージにまとめています。そのパッケージ形式のフレームワークをサポートしているシステムであれば、たいてい実行することが出来ます。これは deb や rpm パッケージのように依存関係もシステムにインストールされていることを必要とするような従来のパッケージ形式とは異なります。したがって、開発者はほとんどのディストロに対応させるのにパッケージを一つ作成すれば良くなりました。

最新のセキュリティの更新を当てた依存関係を含めてパッケージを適切にメンテする必要があります。もしされなかったらセキュリティ上のリスクに晒されることになります。これはリポジトリを介してディストロ開発者が提供していた依存関係で動いていた従来のパッケージ形式とは対象的な点です。

ディストロ非依存のパッケージ形式は依存関係も含むため、ファイル形式は概して大きくなります。同じ依存関係がたくさんのパッケージに含まれてしまうかも知れません。一方で従来のパッケージ形式はシステムに一つあれば十分です。逆に、これはある特定のバージョンのソフトウェアを使いたい場合には利点となります。同じ共有ライブラリを使用する場合では実現するのはやや困難です。

Snap


Snap は Canonical 社が Ubuntu のために作ったディストロ非依存のパッケージ形式で、2014 年にリリースが開始されました。それ以降、Arch、Gentoo、Fedora といった有名なディストロが Snap フレームワークをサポートしています。

Snap パッケージのオンラインアプリストア「Snapcraft」は Snap パッケージを検索しインストールするのに使用できます。この一点集中型のアプリストアはメリットともデメリットとも見なせます。ユーザーが Snap パッケージを見つけるのに一箇所だけ探せば良いのは好都合ですが、このストアが Canonical 社のみによって運営されていることはデメリットとも見なせます:

Snapcraft では開発者が Snap 形式にパッケージングするためのガイドを提供しており、オープンソースでもプロプライエタリなソフトウェアでも Snapcraft app store で公開することが出来ます。更に、Snap パッケージは IoT も視野に入れており、Ubuntu Core が動いているデバイスにも向いています。

uApp Explorer によれば現在利用可能な Snap パッケージは 2296 ほどあるようです。

古いバージョンを削除し空きを増やす


/var/lib/snapd/snaps/ の容量がかなり多くなっていたらキャッシュを削除し空きを増やしましょう。snap パッケージは更新された後、3 つのバージョンの snap が保存されます。つまり、インストールされた snap パッケージに更新が少なくとも 2 回あれば 3 つのリビジョンがシステムに存在していることになり、スペースを占有するのです。

そこで snap には refresh.retain と呼ばれる、システムに保存するリビジョンの最大数を指定するオプションがあります。範囲は 2 から 20 までの間です。そこで、以下を実行し 2 つのリビジョンだけにしてみましょう:
sudo snap set system refresh.retain=2
一方で、現在アクティブな最新の snap パッケージ以外の古いバージョンを全て削除するスクリプトを書いてくれた方がいます:
#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done

このスクリプトに「remove-old-snaps」とでも名前を付けて、ホームディレクトリにでも保存したら、実行権限を与えます:
chmod +x remove-old-snaps
実行します:
sudo ./remove-old-snaps
出力例:
atom (revision 223) removed
atom (revision 222) removed
bitwarden (revision 15) removed
bitwarden (revision 16) removed
canonical-livepatch (revision 50) removed
canonical-livepatch (revision 54) removed
chromium (revision 607) removed
chromium (revision 660) removed
core (revision 6531) removed
core (revision 6405) removed
core18 (revision 719) removed
core18 (revision 731) removed
gallery-dl (revision 36) removed
gallery-dl (revision 167) removed
gimp (revision 110) removed
gimp (revision 113) removed




Flatpak


Flatpak は独立したオープンソースプロジェクトとして 2015 年にリリースされました。Flatpak プロジェクトの主なコントリビューターは Fedora ですが、それ以外の主要なディストロも Flatpak フレームワークをサポートしています。GitHub にて Flatpak のソースコードを見つけることが出来ます。

Flathub では Flatpak パッケージを探したりインストールしたりできます:
Flatpak にオープンソースでなければならないという制限はありませんが、もともと Flathub ではオープンソースのもののみ公開できていました。今では、プロプライエタリなソフトウェアも当該のサイトで公開できるようになっています。

Snap が Canonical 社によってひとつのリポジトリが管理されているのに対し、Flatpak は複数のリポジトリを使って Flatpak パッケージをインストールしたり更新したり出来ます。

Flatpak フレームワークに関する一般事項と公開の仕方に関するガイドに関しては Flatpak documentation を参照して下さい。

Flatpak の大きなデメリットは、Snap や AppImage と異なり、サーバーに対応していないことです。サーバーでは利用できないとあるデスクトップセッションサービスに依存しているからです。

Flatpak はテーマも適用できます。システムで使っているテーマがインストールできるかどうかは以下のコマンドを実行することでわかります:
flatpak remote-ls flathub | grep org.gtk.Gtk3theme出力例
org.gtk.Gtk3theme.Adapta
org.gtk.Gtk3theme.Adapta-Brila
org.gtk.Gtk3theme.Adapta-Brila-Eta
org.gtk.Gtk3theme.Adapta-Eta
org.gtk.Gtk3theme.Adapta-Nokto
org.gtk.Gtk3theme.Adapta-Nokto-Eta
org.gtk.Gtk3theme.Ambiance
org.gtk.Gtk3theme.Arc
org.gtk.Gtk3theme.Arc-Dark
org.gtk.Gtk3theme.Arc-Dark-solid
org.gtk.Gtk3theme.Arc-Darker
org.gtk.Gtk3theme.Arc-Darker-solid
org.gtk.Gtk3theme.Arc-solid
org.gtk.Gtk3theme.Breeze
org.gtk.Gtk3theme.Breeze-Dark
org.gtk.Gtk3theme.Communitheme
org.gtk.Gtk3theme.Greybird
org.gtk.Gtk3theme.High-Sierra
org.gtk.Gtk3theme.High-Sierra-Dark
org.gtk.Gtk3theme.Lounge
org.gtk.Gtk3theme.Lounge-night
org.gtk.Gtk3theme.Materia
org.gtk.Gtk3theme.Materia-compact
org.gtk.Gtk3theme.Materia-dark
org.gtk.Gtk3theme.Materia-dark-compact
org.gtk.Gtk3theme.Materia-light
org.gtk.Gtk3theme.Materia-light-compact
org.gtk.Gtk3theme.Mint-Y
org.gtk.Gtk3theme.Mint-Y-Dark
org.gtk.Gtk3theme.Mint-Y-Darker

org.gtk.Gtk3theme.Numix
org.gtk.Gtk3theme.Numix-Frost
org.gtk.Gtk3theme.Numix-Frost-Light
org.gtk.Gtk3theme.Plata
org.gtk.Gtk3theme.Plata-Compact
org.gtk.Gtk3theme.Plata-Lumine
org.gtk.Gtk3theme.Plata-Lumine-Compact
org.gtk.Gtk3theme.Plata-Noir
org.gtk.Gtk3theme.Plata-Noir-Compact
org.gtk.Gtk3theme.Pop
org.gtk.Gtk3theme.Pop-light
org.gtk.Gtk3theme.Sierra-Negra
org.gtk.Gtk3theme.Yaru
org.gtk.Gtk3theme.Yaru-dark
org.gtk.Gtk3theme.Zukitre
org.gtk.Gtk3theme.Zukitwo
org.gtk.Gtk3theme.deepin
org.gtk.Gtk3theme.deepin-dark
org.gtk.Gtk3theme.elementary

たとえば Mint-Y-Dark アイコンをインストールするには:
sudo flatpak install flathub org.gtk.Gtk3theme.Mint-Y-Dark
アイコンテーマも以下のコマンドで確認できますが、執筆時点ではたった 2 つしかありません:
flatpak remote-ls flathub | grep org.freedesktop.Platform.Icontheme

Flathub では現在 555 のパッケージを公開しています。Flatpak には全てのパッケージを含む中央リポジトリは存在しないので実際にはもっと多いはずです。

AppImage


AppImage はポータブルなパッケージ形式で、もともと kik という名前で 2004 年にリリースされました。ポータブルな形式なので AppImage を実行するのにインストールは必要ありません。このため、USB メモリーに入れて持ち運ぶことができます。AppImage のソースコードは GitHub で入手できます。

AppImage ウェブサイトで AppImage パッケージのリストを見ることが出来ます:

リストされているパッケージの数は 818 です。AppImage は更新を提供するためのリポジトリはない代わりに、AppImage の中に更新情報が含まれています。この情報を利用することで AppImageUpdate のようなツールを使って手動でパッケージを更新することが出来ます。

AppimageUpdate で Appimage アプリを更新


わざわざ GitHub にアクセスし更新されているかどうかを確認するのは面倒です。しかし AppimageUpdate を使えば更新の有無をチェックし、あれば自動でインストールしてくれます。しかも差分をダウンロードしてくれるので 0% からは始まらないのも利点です。

まずは GitHub かダウンロードします。32bit と 64bit 向けで分かれているので、お使いのシステムにあったものを選びます:


実行権限を与えます:
chmod a+x ~/ダウンロード/AppImageUpdate-x86_64.AppImage
更新(があれば更新)したい Appimage アプリを選びます:


更新をダウンロードさせます。場合によってはエラーを吐くことも有ります。

Appimage アプリをメニューに登録


appimaged は ~/bin や ~/ダウンロードから Appimage を探し出し、検出したらシステムに登録し、メニューに表示させるオプション的なデーモンです。Appimage が消えたらメニューからも消し去ります。firejail がインストールされていれば、サンドボックスで Appimage を実行することも出来ます。

検出場所:
  • $HOME/ダウンロード
  • $HOME/.local/bin
  • $HOME/bin
  • $HOME/Applications
  • /Applications
  • /opt
  • /usr/local/bin

インストール:
wget "https://github.com/AppImage/appimaged/releases/download/continuous/appimaged-x86_64.AppImage"
chmod a+x appimaged-x86_64.AppImage
./appimaged-x86_64.AppImage --install

指示通り再ログインしたら、次を実行します:
appimaged -v
うまくいけばメニューに表示されます:


Appimage で USB メモリに持ち運ぶ


Appimage の良い点はインストール不要なところです。そこで USB メモリで例えば Firefox を持ち運びたいとしましょう。そんなときに役に立つのが pkg2appimage です。

yml ファイルには Appimage を作成するのに何が必要か、どう作成するかが記述されています。以下を実行して Firefox の Appimage ファイルを作成してみましょう:
sudo apt install -y git && git clone https://github.com/AppImage/pkg2appimage.git && cd pkg2appimage
続いて recipes/ ディレクトリ内の Firefox.yml を指定して ./pkg2appimage を実行します:
bash -ex ./pkg2appimage recipes/Firefox.yml
out ディレクトリ直下に Appimage ファイルが生成されています:


ざっくりした比較


機能SnapcraftAppImageFlatpak
パッケージのインストールにソフトウェアは必要?必要
(apt install snapd)
不要必要
Linux Mint ではインストール済み
(apt install flatpak)
共有ランタイムベーシックないフル
サンドボックスAppArmorないカスタム
リポジトリのサポートあるないある
中央リポジトリあるないない
アップデート自動手動自動
テーマがシステムとマッチするかマッチしないマッチする(正しく行われれば)マッチする(システムのテーマの Flatpak 版がインストールされていれば)
サンドボックス化しなくとも実行できるか可能(classic confinement を使用していれば)可能不可能
インストール先(VLC を例に)/snap/vlcダウンロードした場所/var/lib/flatpak/app/org.videolan.VLC
サイズ(VLC を例に)204MB53.2MB78MB

まとめ:
  • システムに変更を加えたくない、古いバージョンを使いたい、持ち運びたい -> AppImage
  • システムのテーマになじませたい、自動更新が良い -> Flatpak
  • システムのテーマになじまなくても良い、AppArmor によるセキュアな環境で実行したい、自動更新が良い -> Snap

参考元: verummeum
| Linux |
<< NEW | TOP | OLD>>
スポンサーサイト 00:05
| - |

Show some apps list:


miku

Follow on your feed reader:


About this blog:

Linux Mint-centric chronicle with anime girls since 2009.Best View with Google Chrome 1980x1080 dimension.
Info 更新は不定期です。

script

LinuxMint ISO 日本ミラーサーバー:




Amazon: