Debian jessie に java8 をインストールする

Synology の NAS に OpenHAB2 をインストールするのに、java8 が必要なことが分かった。簡単ではなかったので、記録に残しておく。

環境は Synology DS216j, DSM 6.2.1, Debian Chroot 8.4-7, Debian 8.11 (jessie) である。この環境で java8 をインストールするということは、oracle-java8-installer や oracle-java8-set-default をインストールすることではなく、openjdk-8-jdk をインストールすることを意味する。

openjdk-8-jdk は通常のセットに入っておらず、backports に入っているので、これを追加する (debian - Failed to fetch jessie backports repository - Unix & Linux Stack Exchange)。

# echo "deb [check-valid-until=no] http://archive.debian.org/debian jessie-backports main" | tee /etc/apt/sources.list.d/backports.list

apt の更新をオプション付きで実行する。

# apt -o Acquire::Check-Valid-Until=false update

このオプションをつけないと、backports のところでエラーになる。このエラーは通常の更新では問題にならないが、エラーを見たくない場合は /etc/apt/apt.conf を新規に作成して、中にこのオプションを書き込んでおくという方法がある。ただし、毎回すべての更新に対して適用されるので注意が必要である。

# echo "Acquire::Check-Valid-Until "false";" | tee /etc/apt/apt.conf

さて、いよいよ openjdk-8-jdk をインストールすることになるが、これもオプションなしで実行するとエラーになる。

# apt install openjdk-8-jdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 openjdk-8-jdk : Depends: openjdk-8-jre (= 8u171-b11-1~bpo8+1) but it is not going to be installed
                 Depends: openjdk-8-jdk-headless (= 8u171-b11-1~bpo8+1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

そこで次のようにオプション付きで実行する (docker - Trouble in installing Openjdk-8 in Debian Jessie - Stack Overflow)。

# apt install -t jessie-backports openjdk-8-jdk
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  adwaita-icon-theme at-spi2-core ca-certificates-java fontconfig fonts-dejavu-extra glib-networking glib-networking-common glib-networking-services gsettings-desktop-schemas
  hicolor-icon-theme java-common libasound2 libasound2-data libasyncns0 libatk-bridge2.0-0 libatk-wrapper-java libatk-wrapper-java-jni libatk1.0-0 libatk1.0-data libatspi2.0-0
  libcairo-gobject2 libcroco3 libdatrie1 libdrm-amdgpu1 libdrm-freedreno1 libdrm-nouveau2 libdrm-radeon1 libdrm2 libflac8 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgif4
  libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa libgraphite2-3 libgtk-3-0 libgtk-3-bin libgtk-3-common libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libharfbuzz0b libice-dev libice6
  libjasper1 libjson-glib-1.0-0 libjson-glib-1.0-common libllvm3.8 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libpcsclite1 libproxy1 libpulse0 librest-0.7-0 librsvg2-2
  librsvg2-common libsensors4 libsm-dev libsm6 libsndfile1 libsoup-gnome2.4-1 libsoup2.4-1 libthai-data libthai0 libtxc-dxtn-s2tc0 libwayland-client0 libwayland-cursor0
  libx11-xcb1 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-sync1 libxcomposite1 libxcursor1 libxdamage1 libxfixes3 libxi6 libxinerama1 libxkbcommon0 libxrandr2
  libxshmfence1 libxt-dev libxt6 libxtst6 libxxf86vm1 openjdk-8-jdk-headless openjdk-8-jre openjdk-8-jre-headless xkb-data

これで完了である。