[Ubuntu] apt updateしたら、Jenkinsが起動しない

概要

あるdevelopブランチをgithubにpushすると、メインPCのjenkinsでtestが走るようになっていす。

メインPC?Jenkins用のノートPCがあったはずだけど

ついに故障しちゃったのよ

Ubuntu 18.04の「ソフトウェアの更新」や「PCの再起動が必要です」の表示にしたがって、再起動しました。

さて、そのdevelopブランチをpushして、ローカルPCのjenkinsサイトにアクセスすると、jenkinsが起動していません。

jenkinsユーザに suして、jenkinsを再起動しようとしたら、

$ sudo service jenkins status ● jenkins.service - LSB: Start Jenkins at boot time Loaded: loaded (/etc/init.d/jenkins; generated) Active: failed (Result: exit-code) since Sun 2020-11-15 00:30:46 JST; 11min ago Docs: man:systemd-sysv-generator(8) Process: 2334 ExecStart=/etc/init.d/jenkins start (code=exited, status=1/FAILURE) 11月 15 00:30:46 xxxx systemd[1]: Starting LSB: Start Jenkins at boot time... 11月 15 00:30:46 xxxx jenkins[2334]: Found an incorrect Java version 11月 15 00:30:46 xxxx jenkins[2334]: Java version found: 11月 15 00:30:46 xxxx jenkins[2334]: openjdk version "11.0.9.1" 2020-11-04 11月 15 00:30:46 xxxx jenkins[2334]: OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04) 11月 15 00:30:46 xxxx jenkins[2334]: OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing) 11月 15 00:30:46 xxxx jenkins[2334]: Aborting 11月 15 00:30:46 xxxx systemd[1]: jenkins.service: Control process exited, code=exited status=1 11月 15 00:30:46 xxxx systemd[1]: jenkins.service: Failed with result 'exit-code'. 11月 15 00:30:46 xxxx systemd[1]: Failed to start LSB: Start Jenkins at boot time.

Javaバージョンが11.0.9.1 2020-11-04だよ、対応していない、とのことです。

https://www.jenkins.io/doc/administration/requirements/java/ には、Java 8 かJava 11が必要とのことで合っていそうですが、だめなものはしょうがないです。

そういえば前にも同じようなエラーがあった気がします。そのときはJava 8を設定した覚えがありますが、Javaバージョンを確認すると、

$ /usr/bin/java -version openjdk version "11.0.9.1" 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing) $ ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 6月 24 2019 /usr/bin/java -> /etc/alternatives/java $ ls -l /etc/alternatives/java lrwxrwxrwx 1 root root 43 6月 24 2019 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/bin/java

alternativesの11になっていました。apt updateで11に戻ってしまったのでしょうか。

対応

alternativesでJava 8を設定しなおしました。

まず、java です。

$ sudo update-alternatives --config java alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2 update-alternatives: /usr/bin/java (java) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java を使います

次に javac

$ sudo update-alternatives --config javac alternative javac (/usr/bin/javac を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2 update-alternatives: /usr/bin/javac (javac) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javac を使います

たぶん必要ないけど、javadoc

$ sudo update-alternatives --config javadoc alternative javadoc (/usr/bin/javadoc を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javadoc 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javadoc 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2 update-alternatives: /usr/bin/javadoc (javadoc) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc を使います

javahは、11だけでした。

$ sudo update-alternatives --config javah リンクグループ javah に 1 つの alternative のみがあります (/usr/bin/javah が提供): /usr/lib/jvm/java-8-openjdk-amd64/bin/javah 設定は行いません。

たぶん必要ないけど、javap

$ sudo update-alternatives --config javap alternative javap (/usr/bin/javap を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 自動モード 1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javap 1111 手動モード 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 1081 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2 update-alternatives: /usr/bin/javap (javap) を提供するためにマニュアルモードで /usr/lib/jvm/java-8-openjdk-amd64/bin/javap を使います

javaバージョンを確認すると、8になっていました。

$ java -version openjdk version "1.8.0_242-release" OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593) OpenJDK 64-Bit Server VM (build 25.242-b3-6222593, mixed mode)

無事、jenkinsを起動できました。

$ sudo service jenkins start $ sudo service jenkins status ● jenkins.service - LSB: Start Jenkins at boot time Loaded: loaded (/etc/init.d/jenkins; generated) Active: active (exited) since Sun 2020-11-15 00:55:02 JST; 4s ago Docs: man:systemd-sysv-generator(8) Process: 9020 ExecStart=/etc/init.d/jenkins start (code=exited, status=0/SUCCESS) 11月 15 00:55:00 xxxx systemd[1]: Starting LSB: Start Jenkins at boot time... 11月 15 00:55:01 xxxx jenkins[9020]: Correct java version found 11月 15 00:55:01 xxxx jenkins[9020]: * Starting Jenkins Automation Server jenkins 11月 15 00:55:01 xxxx su[9085]: Successful su for jenkins by root 11月 15 00:55:01 xxxx su[9085]: + ??? root:jenkins 11月 15 00:55:01 xxxx su[9085]: pam_unix(su:session): session opened for user jenkins by (uid=0) 11月 15 00:55:01 xxxx su[9085]: pam_unix(su:session): session closed for user jenkins 11月 15 00:55:02 xxxx jenkins[9020]: ...done. 11月 15 00:55:02 xxxx systemd[1]: Started LSB: Start Jenkins at boot time.

github actionsにしたいね

参考記事

Ubuntu 18.04 LTSに複数のJDKをインストールする方法 - Qiita
Ubuntu 18.04 LTSに複数のJDK (Java Development Kit) をインストールする方法についてまとめます。 インストール sudo add-apt-repository ppa:linuxupr...
タイトルとURLをコピーしました