tar.gz から .deb をつくって Ubuntu に Oracle Java をインストール

Oracle JavaLinux 向け公式インストーラーは RPM と tarball との二択。
alian というパッケージ変換ツールを使うと RPMDEB に変えられるというので Ubuntu で試してみたところ、インストール後のスクリプトで alternatives がないとエラーが(というのも Ubuntu では update-alternatives を使うからだが)発生してしまった。

どうしたものかと少々さぐったところ、tarball から alien を使って DEB を作るという記事 http://uchan.hateblo.jp/entry/2016/03/19/004153 が見つかった。
というので真似してみた。

http://www.oracle.com/technetwork/java/javase/downloads/index.html から最新 64bit 版 JDK をダウンロード。(これを書いている時点では 8u91)
/opt/oraclejdk_8-amd64 に配置するつもりでパッケージ化準備を進める。

$ DST="/opt/oraclejdk_8-amd64"
$ mkdir -p /tmp/jdk{/DEBIAN,$DST}
$ cat >/tmp/jdk/DEBIAN/postinst <<EOF
#!/bin/sh
cd "$DST/bin"
for f in *; do
  update-alternatives --install "/usr/bin/\$f" "\$f"\
 "$DST/bin/\$f" 1000
done
EOF
$ chmod 0755 /tmp/jdk/DEBIAN/postinst
$ tar xzf ~/Downloads/jdk-8u91-linux-x64.tar.gz\
 -C /tmp/jdk$DST --strip-component 1
$ cd /tmp/jdk
$ tar czf $(basename $DST).tar.gz opt/ DEBIAN/
$ fakeroot alien --version=1.8.0.91 --bump=0 $(basename $DST).tar.gz

これで /tmp/jdk の下に oraclejdk-8-jdk_1.8.0.91-1_all.deb ができあがる。
これをシステムに導入するときは dpkg コマンドを使う。:

$ sudo dpkg -i oraclejdk-8-jdk_1.8.0.91-1_all.deb

うん、できた。
念のため update-alternatives も実行して、インストールした JDK を使うよう選択しておく。:

$ sudo update-alternatives --config java