第658回まででChromeベースのEPUBリーダーをsnapパッケージ化することが完了しました。今回はそのパッケージをSnap Storeに公開してみましょう。Snap Storeで公開されると全世界のユーザーがsnapコマンドないしUbuntu Software経由でパッケージをインストールできるようになります。
前回のおさらい
前回までで
$ 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/
」
このディレクトリは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_
)~/snap/パッケージ名/リビジョン
」SNAP_
)
直近2リビジョン残しているのはsnap refresh
で別のリビジョンをインストールしたあとに、snap revert
で元に戻したい際にデータをリストアできるようにするためです。よってSNAP_
のディレクトリにはデータベースのような
それに対して、SNAP_
はユーザーが作成したデータのような、
このあたりのディレクトリはsnapcraft.$HOME
」$SNAP_
」
今回のThorium Readerの場合、$SNAP_
に保存されます
しかしながらThoriumはこのディレクトリをコンテンツデータの保存よりもむしろデータベース的に使用しているようです。このため、
常に最新のパッケージをダウンロードする
これまでdebファイルを取得する際には、https://
」
source
の行を1行変更するだけです。
parts:
thorium-reader:
source: https://www.edrlab.org/software/thorium-reader/github/debian
source-type: deb
ただしこれは状況により良し悪しです。明示的にバージョンを固定してパッケージを作ったほうが安全な場合もありますので、
バージョンの自動設定
これまでsnapパッケージのバージョンはversion
フィールドで固定的に付けていました。実はこのversion
のようないくつかのメタデータは、
データの取得方法は次の2種類です。
- AppStream用のXMLファイルから取得する
- ビルド時にスクリプトを実行して取得する
前者はGUIアプリケーションなどのように、/usr/
」
AppStreamデータがないのであれば、version
とgrade
だけです。今回のケースならダウンロードしたパッケージのどこかに、
まずは現在のsnap/
は次のような内容になっています。
base: core20
version: '0.2'
license: BSD-3-Clause
(中略)
parts:
thorium-reader:
source: https://www.edrlab.org/software/thorium-reader/github/debian
source-type: deb
plugin: dump
override-build: |
snapcraftctl build
sed -i 's|Icon=.*|Icon=/usr/share/icons/hicolor/0x0/apps/thorium.png|g' \
$SNAPCRAFT_PART_INSTALL/usr/share/applications/thorium.desktop
sed -i 's|/opt/Thorium/thorium|/opt/Thorium/thorium --no-sandbox|g' \
$SNAPCRAFT_PART_INSTALL/usr/share/applications/thorium.desktop
stage-packages:
- libdrm-common
- libnss3
これを次のように変更します。
base: core20
adopt-info: thorium-reader
license: BSD-3-Clause
(中略)
parts:
thorium-reader:
source: https://www.edrlab.org/software/thorium-reader/github/debian
source-type: deb
plugin: dump
override-pull: |
snapcraftctl pull
VERSION=$(dpkg-parsechangelog -S Version -c 1 \
-l $SNAPCRAFT_PART_SRC/usr/share/doc/edrlab.thoriumreader/changelog.gz)
snapcraftctl set-version "$VERSION"
override-build: |
snapcraftctl build
sed -i 's|Icon=.*|Icon=/usr/share/icons/hicolor/0x0/apps/thorium.png|g' \
$SNAPCRAFT_PART_INSTALL/usr/share/applications/thorium.desktop
sed -i 's|/opt/Thorium/thorium|/opt/Thorium/thorium --no-sandbox|g' \
$SNAPCRAFT_PART_INSTALL/usr/share/applications/thorium.desktop
stage-packages:
- libdrm-common
- libnss3
ポイントは次のとおりです。
version
フィールドを削除し、そのかわりに adopt-info: thorium-reader
を追加しました。override-pull
フィールドを追加しました。
override-pull
はpull
ステージsnapcraftctl pull
で、pull
を実行してから、
今回はソースがdebパッケージなので、changelog
ファイル」dump
プラグインだとそのファイルが残らないために使えません。そこでchangelog
ファイルをパースすることにします。
changelog
ファイルのパースには、dpkg-parsechangelog
コマンドが便利です。今回はVersion
フィールドを、
この状態でビルドしてみましょう。
$ snapcraft --debug --enable-experimental-extensions (中略) Snapped thorium-reader-snap_1.6.0_amd64.snap
無事にバージョン1.
gradeの変更とクリーンビルド
ここまでのsnapパッケージはローカル用の開発版ということで、snap/
の中でgrade: devel
」
そこでgrade
も変更しておきましょう。
grade: stable
confinement: strict
これだけです。ついでに正式にアップロードするパッケージをクリーンビルドしておきます。
$ snapcraft clean --enable-experimental-extensions $ snapcraft --enable-experimental-extensions Snapped thorium-reader-snap_1.6.0_amd64.snap
clean
サブコマンドでビルド用の仮想マシンごとデータが削除されるため、
パッケージのセルフレビュー
Snap Storeにアップロードされたパッケージは自動的なレビューと、
$ sudo snap install review-tools $ snap-review thorium-reader-snap_1.6.0_amd64.snap thorium-reader-snap_1.6.0_amd64.snap: pass
問題なさそうですね。
Snap Storeにパッケージをアップロードする
まずSnap Store用の開発者アカウントを作成します。これはUbuntu Oneシングルサインオンを利用しているため、
Snap Storeのアカウントログインページにアクセスしてください。作成済みならそのままログインします。未作成なら
認証情報を取得する
次にsnapcraft
コマンドでログインし、
$ snapcraft login Enter your Ubuntu One e-mail address and password. If you do not have an Ubuntu One account, you can create one at https://snapcraft.io/account Email: (メールアドレス) Password: (パスワード) We strongly recommend enabling multi-factor authentication: https://help.ubuntu.com/community/SSO/FAQs/2FA Login successful.
アップロード先のチャンネルを決める
次にsnapパッケージをアップロードする
- stable:
- 広く使われる安定版を提供するチャンネルです。ユーザーはstableが存在するパッケージのみ検索可能です。
- chandidate:
- stableになる直前の最終テストに使われるチャンネルです。
- beta:
-
メジャーバージョンアップ時など、
大きな変更が行われる際に広くテストを募るためのチャンネルです。 - edge:
-
常に最新のコードをビルド・
公開するためなどに使われるチャンネルです。
実際のところどのチャンネルをどう使うかは開発者の自由です。candidateやbetaはテストが必要なときしか使わない結果、
今回は手元でテストしているので、
パッケージをアップロードする
さぁ、
$ snapcraft upload --release=stable thorium-reader-snap_1.6.0_amd64.snap Preparing to upload 'thorium-reader-snap_1.6.0_amd64.snap'. After uploading, the resulting snap revision will be released to 'stable' when it passes the Snap Store review. Running the review tools before pushing this snap to the Snap Store. You are required to register this snap before continuing. Refer to 'snapcraft help register' for more options. Would you like to register 'thorium-reader-snap' with the Snap Store? [y/N]: y (中略) released Revision 1 of 'thorium-reader-snap' created. Track Arch Channel Version Revision latest amd64 stable 1.6.0 1 candidate ↑ ↑ beta ↑ ↑ edge ↑ ↑
まず先ほどのsnap-review
を自動的に実行してチェックしています。
次にsnapcraft register
」
無事にアップロードが完了し、
$ snap info thorium-reader-snap name: thorium-reader-snap summary: EPUB reader based on the Readium Toolkit publisher: – store-url: https://snapcraft.io/thorium-reader-snap license: BSD-3-Clause description: | Thorium Reader is an easy to use EPUB reading application for cross platforms. This is unofficial re-packing of the debian package provided by EDRLab. commands: - thorium-reader-snap.thorium refresh-date: today at 19:45 JST channels: latest/stable: 1.6.0 2021-03-19 (1) 115MB - latest/candidate: ↑ latest/beta: ↑ latest/edge: ↑ installed: 1.6.0 (x10) 115MB -
開発版は一旦綺麗に削除してからインストールを試してみると良いでしょう。
$ sudo snap remove --purge thorium-reader-snap thorium-reader-snap removed $ sudo snap install thorium-reader-snap thorium-reader-snap 1.6.0 from Mitsuya Shibata (cosmos-door) installed
無事にインストールできたでしょうか?
公開サイトを調整する
アップロードされたパッケージは、
snapcraft.
- アイコン画像:256KB、
512x512以下のPNG/ JPEG/ SVGファイル - タイトル:パッケージ名よりはわかりやすいタイトルを
- カテゴリー:複数指定可能
- スクリーンショット:どんなソフトウェアかすぐにわかる画像を添付する
- 開発者向けURL:利用者が修正提案を出しやすくなるサイトを指定する
- ライセンス:指定しなくてもかまわないが明示したほうが良い
もちろん他の項目も埋めたほうがいいのですが、
![図1](/assets/images/admin/serial/01/ubuntu-recipe/0660/thumb/TH800_01.jpg)
これでSnapパッケージを作ってから公開するまでの説明は一通り完了です。この先はたとえばdebパッケージ以外もパッケージングしてみるとか、
ぜひ皆さんもsnapパッケージを作成・