ククログ

株式会社クリアコード > ククログ > Debianパッケージのメンテナンスをsalsa.debian.orgに移行後にアップデートするには

Debianパッケージのメンテナンスをsalsa.debian.orgに移行後にアップデートするには

はじめに

以前、Debianパッケージのメンテナンスをsalsa.debian.orgに移行するにはというタイトルで、パッケージのメンテナンスをsalsa.debian.orgに移行するのにともない、git-buildpackage(以降gbpと記載)のやりかたに合わせつつリリースするところまでの内容を記事にまとめました。

今回は、アップストリームで新しいバージョンがリリースされたときに、Debianパッケージをgbpを使って更新するときのやりかたを紹介します。

前提条件

gbpを使って作業する際、環境が違っているとそのままではうまくいかないことがあります。 そのため、本記事ではDebianパッケージのメンテナンスをsalsa.debian.orgに移行するにはで紹介した手順で環境をセットアップ済みであることを前提とします。

  • 前回記事で紹介した~/.gbp.confを設定している

  • ブランチはmasterではなくdebian/unstableにしている

  • ビルド方法にはpbuilder+tmpfsを利用する構成になっている

Groonga 8.0.1 から Groonga 8.0.2 にDebianパッケージを更新するのにどのようにしたかを説明します。

リポジトリをcloneする

作業用のリポジトリをcloneします。この操作にはsalsa.d.oにアカウントが必要です。https経由(https://salsa.debian.org/debian/groonga.git )ならsalsa.d.oにアカウントがなくても大丈夫です。

% git clone git@salsa.debian.org:debian/groonga.git

アップストリームのソースをインポートする

Groongaの場合、 debian/watch があるので以下のコマンドを実行することで、ソースをインポートすることができました。

% cd groonga
% gbp import-orig --uscan --debian-branch=debian/unstable
gbp:info: Launching uscan...
uscan: Newest version of groonga on remote site is 8.0.2, local version is 8.0.1
uscan:    => Newer package available from
      https://packages.groonga.org/source/groonga/groonga-8.0.2.tar.gz
gpgv: 2018年04月27日 17時47分26秒 JSTに施された署名
gpgv:                DSA鍵C97E4649A2051D0CEA1A73F972A7496B45499429を使用
gpgv: "groonga Key (groonga Official Signing Key) <packages@groonga.org>"からの正しい署名
gbp:info: Using uscan downloaded tarball ../groonga_8.0.2.orig.tar.gz
What is the upstream version? [8.0.2] 
gbp:info: Importing '../groonga_8.0.2.orig.gbp.tar.gz' to branch 'upstream' (filtering out ['*egg.info', '.bzr', '.hg', '.hgtags', '.svn', 'CVS', '*/debian/*', 'debian/*'])...
gbp:info: Source package is groonga
gbp:info: Upstream version is 8.0.2
gbp:info: Replacing upstream source on 'debian/unstable'
gbp:info: Successfully imported version 8.0.2 of ../groonga_8.0.2.orig.gbp.tar.gz

上記のようにすることで、 upstream ブランチと pristine-tar ブランチが更新されます。

% git checkout pristine-tar
Switched to branch 'pristine-tar'
Your branch is ahead of 'origin/pristine-tar' by 1 commit.
  (use "git push" to publish your local commits)
% git push
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 399.92 KiB | 13.79 MiB/s, done.
Total 4 (delta 1), reused 0 (delta 0)
remote:
remote: To create a merge request for pristine-tar, visit:
remote:   https://salsa.debian.org/debian/groonga/merge_requests/new?merge_request%5Bsource_branch%5D=pristine-tar
remote:
To salsa.debian.org:debian/groonga.git
   f46d803..95ccd57  pristine-tar -> pristine-tar
% git checkout upstream
Switched to branch 'upstream'
Your branch is ahead of 'origin/upstream' by 1 commit.
  (use "git push" to publish your local commits)
% git push
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for upstream, visit:
remote:   https://salsa.debian.org/debian/groonga/merge_requests/new?merge_request%5Bsource_branch%5D=upstream
remote:
To salsa.debian.org:debian/groonga.git
   68022cf..8f10dc8  upstream -> upstream

更新されたブランチをそれぞれpushしておきます。

debian/changelogを更新する

アップストリームの更新であることを示す変更点を debian/changelog に記載します。

groonga (8.0.2-1) unstable; urgency=medium

  * New upstream version 8.0.2.

 -- Kentaro Hayashi <hayashi@clear-code.com>  Wed, 02 May 2018 10:25:09 +0900                                                              

パッケージをビルド、テストする

ここまでできたら、きちんとパッケージとしての体裁が整っているか、ビルドします。

% gbp buildpackage --git-ignore-new

ビルドの過程のdh cleanで、ソースツリーが変更されてしまう場合には、 --git-ignore-new を指定します。 ビルド後にはlintianによるパッケージのチェック結果が表示されるので、報告された問題を都度修正するのがよいでしょう。

次に、パッケージのインストールなどに問題がないかテストします。

パッケージのインストールテストにはpiupartsを用います。

% sudo piuparts -d sid  -t /var/cache/pbuilder/build -b /var/cache/pbuilder/unstable-amd64-base.tgz ../build-area/*.deb

紹介した .gbp.conf の設定をしていれば、cloneしたリポジトリと同階層に build-area ディレクトリが作成され、そこにdebパッケージが配置されているはずです。 piupartsによるテストをパスしたら、次はアップロードしましょう。

mentors.d.nへソースパッケージをアップロード

mentors.d.nへアップロードするためのソースパッケージを用意します。

% debuild -S

パッケージに署名をしたら、dputで実際にmentors.d.nへとアップロードします。

% dput mentors ../groonga_8.0.2-1_source.changes 

RFSを送りスポンサーを探す

bugs.debian.orgにスポンサーを探すメールを投げます。

Groonga 8.0.2-1の場合は次のようなbugとして登録しました。

gbpでタグを打つ

特に問題なければあとはunstableへとアップロードされるのを待つだけです。ただし、パッケージング内容にコメントがつくことがあります。 その場合は都度対応してソースパッケージを再びアップロードします。

パッケージの修正が追加で必要になることもあるので、タグを打つのは実際にunstableに入ってからのほうがよいかもしれません。

タグを打つには、以下のコマンドを実行します。

% gbp buildpackage --git-tag --git-debian-branch=debian/unstable

ここまでで、gbpでDebianパッケージのアップデートをリリースするところまでの作業が完了です。

まとめ

今回は、メンテナンスしているパッケージをgbpのやりかたに合わせつつアップデートする方法を紹介しました。

必要最低限のgbpの使い方しか紹介していないので、詳細については、http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html を参照してください。