[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.
Code language: Bash (bash)

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
Code language: Bash (bash)

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 を使います

Code language: Bash (bash)

次に 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 を使います

Code language: Bash (bash)

たぶん必要ないけど、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 を使います

Code language: Bash (bash)

javahは、11だけでした。

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

たぶん必要ないけど、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 を使います


Code language: Bash (bash)

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)
Code language: Bash (bash)

無事、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.
Code language: Bash (bash)

github actionsにしたいね

参考記事

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