databaseのバージョンが1.8から1.9に変更されました。3.9以前から3.10以降にアップデートするとデータベース(スキーマ?)の不整合で起動できなくなってしまいます。migrationスクリプトの修正(パス)RPMパッケージインストール後のサービス起動を抑止(参考)エラーメッセージは次です。migrationをダウンロードします。GitHubに挙がっているので、手元にクローンするか、ダウンロード(ZIP)します。今回はダウンロードします。h2-migration.zipこの中は次のようなディレクトリ・ファイル構成です。h2-migration-master/h2-migration-master/README.mdh2-migration-master/lib/h2-migration-master/lib/h2-1.4.180.jarh2-migration-master/lib/h2-1.4.190.jarh2-migration-master/migration.shこれを丸ごと含めることとします。migration.shは、デフォルトでは実行するユーザーの$HOME/.gitbucket下にデータベースがある想定で記載されているので、RPMに含める際に修正をします(RPMビルド時にpatchで修正)。databaseマイグレーションを実行する前にgitbucketを動かすとデータベースが壊れるとの注意があるので、RPMパッケージをインストールした後にサービスの自動起動は抑止します。スペックファイルに、zipファイルをソースとして定義します。%{_tmppath}/%{name}-%{version}-%{release}-rootいままでは、Source0~Source2は、アーカイブではなく単にファイルとしてコピーするだけなので、展開せずに(%prepセクションを定義せずに)いました。今回は、アーカイブを展開してコピーする必要があるので、展開する記述が必要となります。%prepセクションを定義し、そこに%setupマクロで展開を指定します。この%setupが分かりにくいので大分悩みました。分かりやすかったのがここです。複数書くと思ってましたが、実は、1つのマクロで複数のSource定義を展開するものでした。アーカイブではないので展開せず、Source3のみ展開します。展開する先は作成するRPMパッケージ名にちなんだ名前としておく場合、次の記述となります。3-Tオプションは、続くオプションで明示的に指定しないSourceは展開を抑制します。今回はSource3だけ展開するので、-Tオプションを指定し、続くオプションで3を指定しています。-cオプションは、ディレクトリを作成しそこにcdしてからソースを展開します。デフォルトは<RPMパッケージ名-バージョン>です。オプションは、ディレクトリにcdしてから(After)SourceNを展開します。これによって次のように展開されるはずです。修正¶デフォルトのmigration.shは、gitbucketが$HOME/.gitbucketにある想定で書かれていました。これを、gitbucketユーザーのホームディレクトリに変更します。GITBUCKET_HOME=~gitbucketまた、migration.shを実行するカレントディレクトリが、migration.shのあるディレクトリにある前提で書かれていました。これを、どのディレクトリからmigration.shを実行しても動作するように変更します。pwd)RPMパッケージを作るときは、このような修正は元のファイルを変更するのではなく、パッチファイルとして別ファイルに記述しRPMパッケージ作成時にパッチ適用するのがお作法です。そこで、migration.shの修正をパッチファイルに作成します。h2-migration-sh.patchこのh2-migration-sh.patchを、rpmbuild/SOURCESにコピーします。SPECファイルにパッチを記述します。fi将来的には復活させるので、コメントアウトとしておきます。していたら、RPMの案インストール時にこの部分がエラーとなってしまいました。行頭に#をつけてコメントアウトとするのはダメっぽいので、削除しておきます。updte時もサービスを停止するように修正します。いうファイルが生成されます。名前を処理対象とします。3.3-1をインストールします。gitbucket-3.3-1.noarch.rpmgitbucketサービスを起動します。startgitbucket上で適当に操作します(ユーザー作成したりリポジトリ作成したり)。gitbucketサービスを停止し、データベースファイルをバックアップします。3.12-1にアップデートします。gitbucket-3.12-1.noarch.rpmうーん、gitbucketサービスが起動してしまっています。migrationツールをgitbucketに含む方法は中止とします。