始めに
今時のJavaの開発を行う際、Apache MavenやApache Ivy、Gradleはたまたsbtなどを利用することでしょう。これらのツールは単純にビルドを自動化するだけなく、依存性管理を行ってくれます。これは極めて強力ですが。
ですが、外部公開されているライブラリはともかく自社で開発したライブラリを他でも使いたいと思った際、インハウスリポジトリがないとこれらのツールを生かせません。
そのインハウスリポジトリを構築するツールにはApache ArchivaやArtifactoryがありますが、ここではSonatype Nexus OSSを取り上げます。
Nexusは
- 2.x系
- 3.x系
があり、それぞれ2.14.1_01、3.1.0_04 が現時点(2016/12/03) が最新です。
ここでは3.0.1-01系から最新の3.1.0_04 へのアップデート方法を書いていきます。
公式手順書
公式の手順書は以下にあります。
https://books.sonatype.com/nexus-book/reference3/upgrading.html#upgrade-version-three
が、ここにはポインタだけでその先は
https://support.sonatype.com/hc/en-us/articles/217967608
になります。が、ここにも3.0から3.1へのアップグレードは書かれていなくてさらにその先の
https://support.sonatype.com/hc/en-us/articles/231723267
にようやく手順がでてきます。
基本的にこの通りに行えば問題ありません。
手順
公式手順書を参考に実際におこなったことを書いていきます。(基本的に翻訳ですね)
3.0系のデータディレクトリの位置を確認する
既存のNexusデータディレクトリを確認します。
リンク先にあるように、
ps -ef | grep NexusMain
として、Nexusの起動プロセスの引数を見て、
-Dkaraf.data
で指定されているディレクトリを確認します。
これがデータディレクトリです。
3.0系のアプリケーションディレクトリを確認する。
Nexus3.0系導入時に展開した場所を調べます。
/etc/init.d/ 配下の起動スクリプトなどから追っていくとよいでしょう。
Nexus 3.1.0_01 のアーカイブダウンロードと展開
Nexus OSSのダウンロードページからOSを指定して、適切なアーカイブをダウンロードしインストール先で展開します。
Nexus3.0 のデータディレクトリをバックアップ
最初の手順で調べたNexus3.0のデータディレクトリのバックアップをとります。
普通にcpなどで問題ありません。
Nexus3.0 のデータディレクトリをNexus3.1へ上書き
Nexus3.0データディレクトリを Nexus3.1 の同種のディレクトリである sonatype_work/nexus3/ 配下へコピーします。
デフォルトではNexus3.1の展開ディレクトリと並列にできるようです。
Nexus3.1 の設定プロパティ作成
Nexus3.0データディレクトリの etc/org.sonatype.nexus.cfg ファイルを、Nexus3.1 の sonatype-work/nexus3/etc/nexus.properties としてコピーします。
その上で、
${karaf.etc}
のようにかかれている部分を
${jetty.etc}
と、karafをjetty に置換していきます。
Nexus3.1 の起動
これで移行作業は終わったので、起動スクリプトでNexus3.1を起動させます。
初回起動時に移行が始まり、既存データの取り込みと変換がおこなれます。
終わりに
さて、極めてニッチなNexusのアップグレード手順を書きました。
実はこの作業、私は並行して動いていたNexus2.8.1とNexus3.0.1 を統合してNexus3.0.1に寄せる目的の作業過程で行ったものです。
なぜ3.0.1へ統合する過程で3.1.0になるのか?それは2.x から 3.x へのアップグレードは、それぞれ2.14.1/3.1.0 以上のみサポートあったため、以下の手順を踏む必要がでたのです。
- まず、2.8.1を2.14.1 へ移行する。
- 3.0.1を3.1.0へ移行する。
- 2.14.1を3.1.0へ 移行する。
最初と二番目は直交しているので、まずデータ量のすくなかった二番目からとりかかったのです。
皆さんも移行作業の際はくれぐれも手順書をよく読んで、計画立てて行いましょう。