Java
Ubuntu
install
Jenkins

Ubuntu 14.04でjenkins 2.60.1-1 0 以降のインストールに失敗する(怨み言つき)

概要

ubuntuにjenkinsをインストールしようとして、以下エラーメッセージが出てしまったものの対処内容です。

エラー内容
image.png

# sudo apt-get install jenkins
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
インストールすることができないパッケージがありました。おそらく、あり得
ない状況を要求したか、(不安定版ディストリビューションを使用しているの
であれば) 必要なパッケージがまだ作成されていなかったり Incoming から移
動されていないことが考えられます。
以下の情報がこの問題を解決するために役立つかもしれません:

以下のパッケージには満たせない依存関係があります:
 jenkins : 依存: default-jre-headless (>= 2:1.8) しかし、2:1.7-51 はインストールされようとしています または
                   java8-runtime-headless しかし、インストールすることができません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

原因

javaが1.8以前(1.7等)である ←特にこれ
UbuntuのOSバージョンが14
jenkinsのバージョンが2.60.1-1 0 以降
(2017/11/5時点で、バージョン指定せずにインストールすると最新版の2.73.2 0 が選択される)

対処

以下の2つとなります。
①java 1.8をインストールする
②Ubuntu のOSバージョンを 16以上にする

この記事では①java 1.8での解決方法について記載します。

対処方法①-1 java 1.8 インストール

java 1.8 をインストールします。今回はOpen JDK 8 をインストールします。

$ sudo apt-add-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

http://note.kurodigi.com/ubuntu1404-openjava8/

対処方法①-2 java 1.8のデフォルト化

java 1.8以外のバージョンが入っている場合は以下でデフォルトjavaを変更します。java,javac両方とも。

# update-alternatives --config java
alternative java (/usr/bin/java を提供) には 2 個の選択肢があります。

  選択肢    パス                                         優先度  状態
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1071      自動モード
  1            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1071      手動モード
  2            /usr/lib/jvm/java-8-openjdk-i386/jre/bin/java   1069      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/java (java) を提供するために 手動モード で /usr/lib/jvm/java-8-openjdk-i386/jre/bin/java を使います
# update-alternatives --config javac
alternative javac (/usr/bin/javac を提供) には 2 個の選択肢があります。

  選択肢    パス                                      優先度  状態
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-i386/bin/javac   1071      自動モード
  1            /usr/lib/jvm/java-7-openjdk-i386/bin/javac   1071      手動モード
  2            /usr/lib/jvm/java-8-openjdk-i386/bin/javac   1069      手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/javac (javac) を提供するために 手動モード で /usr/lib/jvm/java-8-openjdk-i386/bin/javac を使います

https://www.linuxmania.jp/apt-install-java.html

対処方法①-3 $JAVA_HOMEの編集

環境変数 $JAVA_HOME を java 1.8 へ変更します。方法が多数あるため一例にとどめますが、私の場合は /etc/profile 内に記載していた export JAVA_HOME 部分を変更して、その後リブートして適用しています。

/etc/profile 変更前

(割愛)
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME

/etc/profile 変更後

(割愛)
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-i386
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME

#JAVA_HOMEのパスは対処方法①-2のコマンド結果に記載されているもの。

対処方法①-4 javaインストール確認

java -version と echo $JAVA_HOMEで確認しておきます。

$ java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-8u141-b15-3~14.04-b15)
OpenJDK Server VM (build 25.141-b15, mixed mode)

$echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-i386

対処方法①-5 Jenkinsインストール確認

あとはJenkinsのインストールコマンドを再実行するだけです。
image.png
#jenkinのインストール完了。

image.png
#Jenkinsの初回起動完了!

ここまでで対処は完了です。あとはGUI画面のガイドに従いインストールを進めてください。

以下、対処方法を見つけるまでの怨み言

そもそも

色々なサイトでインストール方法や事前準備について書いてありましたが、「ここが一番確かだろう」と日本語版Jenkinsドキュメントサイト(https://wiki.jenkins.io/display/JA/Jenkins) の以下内容を信じたのが誤りでした。

You need to have a JDK and JRE installed. openjdk-7-jre and openjdk-7-jdk are suggested.
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Ubuntu

よっしゃ、Java1.7入れればええんやな!という最大の誤算

サイトの指示に従ってJava1.7入れてみました。Jenkinsインストールしてみました。そしたら記事トップのエラーが消えない。なんでやねん。

「OSとの相性ちゃうかな?」とJenkinsバージョンを手当たり次第確認

インストールコマンドからバージョンを指定してインストール攻撃。

Ubuntu用パッケージバージョンの参考:
https://pkg.jenkins.io/debian-stable/

sudo apt-get install jenkins=2.73.2 0       ⇒インストール不可         
sudo apt-get install jenkins=2.73.1 0       ⇒インストール不可         
sudo apt-get install jenkins=2.60.3 0       ⇒インストール不可         
sudo apt-get install jenkins=2.60.2 0       ⇒インストール不可         
sudo apt-get install jenkins=2.60.1-1 0     ⇒インストール不可         
sudo apt-get install jenkins=2.60.1 0       ⇒インストール可能         
sudo apt-get install jenkins=2.46.2 0       ⇒インストール可能         

ここらへんから英語版ドキュメントに頼ることを覚える

「2.60はいくらなんでも古いわ…」「でも公式でjava1.7だけで大丈夫やって書いとるんやし…」「なんでや…」「どこが問題なんや…」「google先生ェ…」

https://issues.jenkins-ci.org/browse/JENKINS-44502

Because of this dependency Jenkins 2.46.3 cannot be installed on Ubuntu 14.04 as it lacks an official Java8 package.
「Ubuntu14.0では正式版のJava8がないからアカンのやで、あきらめや」

https://issues.jenkins-ci.org/browse/JENKINS-43629

Oddly enough, one of our staging environments is running Ubuntu 16.04 LTS, where the upgrade worked normally.
「最新のJenkins入れたかったらUbuntu16で出直しなはれ」

jenkins-angry.png ←わし

大本命英語版Jenkinsドキュメント

https://jenkins.io/doc/pipeline/tour/getting-started/

Prerequisites
For this tour, you will require:

A machine with:
256 MB of RAM, although more than 512MB is recommended
10 GB of drive space (for Jenkins and your Docker image)
The following software installed:
Java 8 (either a JRE or Java Development Kit (JDK) is fine)
Docker (navigate to Get Docker at the top of the website to access the Docker download that’s suitable for your platform)

oh...
Java1.8入れなアカンかったんか…

ということで

ろくに情報のメンテできんような連中がwiki運営すなボケ!

参考

Jenkins公式(英語)
https://jenkins.io/

Getting Started with the Guided Tour(Jenkins公式のインストール要件)(英語)
https://jenkins.io/doc/pipeline/tour/getting-started/

Jekins Ubuntu用パッケージバージョン
https://pkg.jenkins.io/debian-stable/

Ubuntu 14.04にOpen JDK 8を導入する
http://note.kurodigi.com/ubuntu1404-openjava8/

Ubuntuで複数のJavaをインストールして管理する方法
https://www.linuxmania.jp/apt-install-java.html

Unable to upgrade Jenkins on Ubuntu 14.04 LTS using 'apt-get upgrade' - The following packages have been kept back
https://issues.jenkins-ci.org/browse/JENKINS-43629

Jenkins 2.46.3 LTS apt (Debian/Ubuntu) package incorrectly has Java 8 as dependency
https://issues.jenkins-ci.org/browse/JENKINS-44502





(参考非推奨)Jenkinsのドキュメントの日本語ドキュメント
https://wiki.jenkins.io/display/JA/Jenkins

(参考非推奨)Installing Jenkins on Ubuntu
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Ubuntu