Ubuntu Weekly Recipe

第660回 自作のsnapパッケージをSnap Storeに公開する

この記事を読むのに必要な時間:およそ 6 分

第658回まででChromeベースのEPUBリーダーをsnapパッケージ化することが完了しました。今回はそのパッケージをSnap Storeに公開してみましょう。Snap Storeで公開されると全世界のユーザーがsnapコマンドないしUbuntu Software経由でパッケージをインストールできるようになります。

前回のおさらい

前回まででThorium Readerの自家製snapパッケージは制限の強いstrictモードで動作するようになりました。その時点でのコードはGitLabにアップロードしてあります。今回はここから進めましょう。

$ git clone https://gitlab.com/mtyshibata/thorium-reader-snap.git
$ cd thorium-reader-snap
$ git checkout -b v0.2 v0.2

ただし公開前にいくつか状況を再確認し,必要に応じて微調整することにします。

データの保存先について

現在のThorium Readerパッケージは取り込んだEPUBデータ等を~/snap/thorium-reader-snap/current/.config/EDRLab.ThoriumReader/に保存しています。

このディレクトリはsnapパッケージのリビジョンが変わるごとに異なります。

$ ls -l ~/snap/thorium-reader-snap/
合計 12
drwxr-xr-x 3 shibata member 4096  2月 23 16:01 common
lrwxrwxrwx 1 shibata member    2  3月 19 18:42 current -> x9
drwxr-xr-x 5 shibata member 4096  3月 19 18:42 x10
drwxr-xr-x 5 shibata member 4096  3月 19 18:42 x9

~/snap/パッケージ名/commonがリビジョンを通して共通のデータSNAP_USER_COMMONで,~/snap/パッケージ名/リビジョンがリビジョンに依存するデータSNAP_USER_DATAとなります。snapの設定では直近2リビジョンのデータを残すことになっているため,上記のような結果になるはずです※1⁠。

※1
ローカルのsnapパッケージを取り込んだ場合は,リビジョンはSnap Storeのそれではなくではなくx1のようなインストール番号になります。

直近2リビジョン残しているのはsnap refreshで別のリビジョンをインストールしたあとに,snap revertで元に戻したい際にデータをリストアできるようにするためです。よってSNAP_USER_DATAのディレクトリにはデータベースのような「バージョンが変わることで元に戻せなくなるデータ」を保存しておきます。

それに対して,SNAP_USER_COMMONはユーザーが作成したデータのような,リビジョンには強く依存しないデータを保存します。

このあたりのディレクトリはsnapcraft.ioのEnvironment variablesにもあるように,snapパッケージからは環境変数として参照できます。たとえば$HOME$SNAP_USER_DATAにマッピングされるなど,ソフトウェア側から参照する環境変数についても言及されていますので眺めておくと良いでしょう。

今回のThorium Readerの場合,前述のとおりEPUBファイルそのものが$SNAP_USER_DATAに保存されます※2⁠。つまり2リビジョンインストールした際は,同じEPUBファイルが2箇所に複製されることになるのです。よってEPUBファイルが大きくなってくるとストレージの仕様効率が悪いのと,バージョンアップ時に時間がかかってしまうという懸念点が存在します。

※2
厳密にはElectronのapp.getPath("userData")で取得されるパスです。Linuxの場合は$XDG_CONFIG_HOMEもしくは~/.configにアプリケーション名を追記した値となります。snapパッケージの$HOME$SNAP_USER_DATAになっているため,$SNAP_USER_DATA/.config/EDRLab.ThoriumReader/となるわけです。

しかしながらThoriumはこのディレクトリをコンテンツデータの保存よりもむしろデータベース的に使用しているようです。このため,バージョンアップ時のことを考えると,より安全側に倒したほうが良いかもしれません。よって今回のケースでは,保存先を変更せずにこのままにしておきます。

常に最新のパッケージをダウンロードする

これまでdebファイルを取得する際には,GitHub上の特定のリリース向けURLを利用していました。リリースを固定して動作確認するには便利ですが,この先メンテナンスを考えると「最新のパッケージ」を取得できたほうが良さそうです。幸い,Thoriumはhttps://www.edrlab.org/software/thorium-reader/github/debianで常に最新のdebパッケージをダウンロードできるために,これを使うことにします。

sourceの行を1行変更するだけです。

parts:
  thorium-reader:
    source: https://www.edrlab.org/software/thorium-reader/github/debian
    source-type: deb

ただしこれは状況により良し悪しです。明示的にバージョンを固定してパッケージを作ったほうが安全な場合もありますので,各自のメンテナンス方法に応じて使い分けると良いでしょう。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。