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

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

エラー内容
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/4969800b-525f-40b3-1a07-9dbda2e86f45.png)

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

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

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


#対処
以下の２つとなります。
①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](https://qiita-image-store.s3.amazonaws.com/0/201787/713069b1-4f2b-5ed5-4a0c-04dd581fd22c.png)
＃jenkinのインストール完了。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201787/40865f3c-2254-7e24-ed6e-1d56fb6a72b0.png)
＃Jenkinsの初回起動完了！

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


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

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

>You need to have a JDK and JRE installed. <b>openjdk-7-jre and openjdk-7-jdk</b> 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](https://qiita-image-store.s3.amazonaws.com/0/201787/398990dc-1fa0-1d19-23f0-bd01effc8579.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:
<b>Java 8 (either a JRE or Java Development Kit (JDK) is fine)</b>
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

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

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