Ubuntu 16.10 に JDK と JRE をインストール

仕事で普段あまり使わない ubuntu に java 環境を作ろうとした時のメモ。

ちなみにバージョンは

```
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.10 (Yakkety Yak)"
...
```

16.10(Yakkety Yak) です。
2018年8月時点で最新は 18.04.1 LTS (Bionic Beaver) のようなので古いですね。

JDK、JRE のインストール自体は

```
$ sudo apt-get install default-jdk
$ sudo apt-get install default-jre
```

で済むはずなのですが

```
$ sudo apt-get install default-jre
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
〜 略 〜
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 7 個。
29.5 MB 中 27.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 110 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y
無視:1 http://jp.archive.ubuntu.com/ubuntu yakkety/main amd64 java-common all 0.57ubuntu1
エラー:2 http://jp.archive.ubuntu.com/ubuntu yakkety/main amd64 default-jre-headless amd64 2:1.8-57ubuntu1
  404  Not Found
〜 略 〜
E: http://jp.archive.ubuntu.com/ubuntu/pool/main/j/java-common/default-jre_1.8-57ubuntu1_amd64.deb の取得に失敗しました  404  Not Found
E: いくつかのアーカイブを取得できません。apt-get update を実行するか --fix-missing オプションを付けて試してみてください。
```

のようにエラーになってしまいました。
で、最後のメッセージの通り `apt-get update` を試すと

```
$ sudo apt-get update
無視:1 http://dl.google.com/linux/chrome/deb stable InRelease
ヒット:2 http://dl.google.com/linux/chrome/deb stable Release
取得:3 https://download.docker.com/linux/ubuntu yakkety InRelease [29.5 kB]
〜 略 〜
エラー:14 http://jp.archive.ubuntu.com/ubuntu yakkety Release
  404  Not Found
エラー:15 http://jp.archive.ubuntu.com/ubuntu yakkety-updates Release
  404  Not Found
エラー:16 http://jp.archive.ubuntu.com/ubuntu yakkety-backports Release
  404  Not Found
パッケージリストを読み込んでいます... 完了
E: The repository 'http://security.ubuntu.com/ubuntu yakkety-security Release' does no longer have a Release file.
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: The repository 'http://jp.archive.ubuntu.com/ubuntu yakkety Release' does no longer have a Release file.
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: The repository 'http://jp.archive.ubuntu.com/ubuntu yakkety-updates Release' does no longer have a Release file.
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
E: The repository 'http://jp.archive.ubuntu.com/ubuntu yakkety-backports Release' does no longer have a Release file.
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
```

のようにこちらもエラー。。。。

原因は古いバージョンの ubuntu のパッケージのリポジトリが変わってしまっている事にあるようです。
archive.ubuntu.com でなく old-releases.ubuntu.com へ取得先を変更する必要があります。

apt のソース設定は `/etc/apt/sources.list` なのでこちらを修正します。

```
$ sudo cp /etc/apt/sources.list /etc/apt/sources.listORG #念のためバックアップ
$ sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
```

もし jp のサブドメインのリポジトリを使っている場合は、`jp.old-release.ubuntu.com` とかになっていると思います。
このようなドメインは存在しないようなので `jp.` を削除します(私は`vim`で開いて置換しました)。

これで

```
$ sudo apt-get update
$ sudo apt-get install default-jdk
$ sudo apt-get install default-jre
```

して、

```
$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-0ubuntu1.16.10.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
$ javac -version
javac 1.8.0_131
```

インストール出来ました。

以上です。

JDK/JRE のインストールというよりも `apt-get update` のエラー回避がメインになってしまいました。。。
`apt-get update`のエラー回避に関しては [こちら](https://qiita.com/ytyng/items/76784390a538bbb5117e) を参考にさせて頂きました。

ありがとうございます。