[追記] gitに脆弱性が！Updateしなきゃ！ でもyumに最新版がないし、ソースから入れたらエラった！ときのメモ


git インストール linux編としても読めます。

現状(2020/04/20)  の AmazonLinux Git最新Ver.[git-2.14.6-1.62.amzn1](https://alas.aws.amazon.com/ALAS-2020-1357.html)の模様。~~(ダメみたいですね~~  

# 追記(2020/05/05)
**@SSW-SCIENTIFIC さんのご指摘通り、上記linux`yum` の `git-2.14.6-1.62`にセキュリティ修正パッチが適用されており**、今回の脆弱性で言えば、Gitのコンパイル インスコ更新は**必要ではありません**。  
この記事は_学生時代の試験範囲外の板書ノート_程度に考えて下さい。
発熱の為、追記更新が遅れたことをお詫びします。(幸いコロナではありませんでした)


**追記：**
_今日(2020/04/21)_ 時点でGit最新が `2.26.1 → 2.26.2` になりましたので、コマンド修正しました。
**以降は皆様で最新Verを確認し、数字を書き換えて下さい**

## 余談(Linux 以外の事)
- Windows は素直に[ここから](https://git-scm.com/) _git.exe_ を使ってください
    + Update の場合は `PowerShell`からでも

```shell
git update-git-for-windows  # で一発
```

- Mac は `Homebrew` 使えばいいんじゃないっすかねぇ(適当)

```shell
brew update && brew upgrade git
```

- ついでに(入れてるなら) `Xcode` の Updateも必須
    + 尚、**MacOSを Catalina にする必要**がある。(El Capitanに人権はない)
- `SourceTree` の場合はアップデートしたシステムのGitを使うように変更して下さい
    + [他者様の記事](https://qiita.com/orimomo/items/2669c8cc10870ee92c7f#sourcetree%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88) を参考にどうぞ


## Linux で Git を入れたい！(AWS AmazonLinux2の場合)

まずGitの状態確認

```console
$ git --version
  git version 2.14.5
```

はい。
最新(2.26.2) 以下は素直にUpしましょうね。(一応低Ver用のパッチ配布無くもないけど…)

```shell
# 下拵え
yum update # しなくてもいいけど
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel  perl-ExtUtils-MakeMaker
# git依存関係の物をインスコ、これしないと後で泣くことになった(過去完了)

git --version # 依存関係をインスコしてる時点でGitの古いものがを入れられる模様
  git version 2.14.5 # `yum remove git` とかで削除してもいいけど、無視無視。


# だうんろーど
wget https://www.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz
# ここ(https://mirrors.edge.kernel.org/pub/software/scm/git/)から最新を見つけて落とす

tar -zxf git-2.26.2.tar.gz # たくさん展開する
cd git-2.26.2 # いつもの


# 本番
make configure
./configure --prefix=/usr # コンパイルコンパイル
sudo make all
sudo make install # (_´Д｀)ﾉ~~ｵﾂｶﾚｰ


# 確認
$ git --version
  git version 2.26.2
```

## 詰まった所

```shell
$ sudo make all
    SUBDIR git-gui # ← これ
    MSGFMT po/pt_pt.msg make[1]: *** [po/pt_pt.msg] Error 127
make: *** [all] Error 2
$ sudo make install
    SUBDIR git-gui
    MSGFMT po/pt_pt.msg make[1]: *** [po/pt_pt.msg] Error 127 # ← これ
```

__最初に依存関連__を入れないと、こういうエラーが多発する。南無



## Git が入ってる状態でのお手軽 Update

- 見出し2個目の依存関連をやってないと、結局詰まるので、yumなどのパッケージからインストールした方は残念ながらエラる

```shell
# git コマンドで最新リポジトリをクローン
git clone git://git.kernel.org/pub/scm/git/git.git

# pullして、最新のソースを取得して再度コンパイル
cd git
git pull
sudo make all && sudo make prefix=/usr/local install # 見ての通り、コマンド短縮形

# 最終確認
git --version
```

## 追記 Ubuntu の場合

**@github0013@github さんのご教授により簡単な方法を追加しました！(感謝！)**
詳細確認の為にもコメントを確認していってね

```shell
sudo add-apt-repository ppa:git-core/ppa
# > PPAはlaunchpad.netに用意された，個人用リポジトリです(←引用説明文)。個人だからね！他の場合使用時注意ね。
sudo apt update
sudo apt install git # git公式さんが常に最新版をppaに用意してくれているので、これで最新ゲットできます。

git --version
  git version 2.26.2
```
- 個人的メモ；
    + まず_PPA_を登録しなければいけません。
        + `add-apt-repository` を使えない場合は
            + `sudo apt-get install software-properties-common` で登録どうぞ
    + `ppa:git-core/ppa` 何ぞ？
        + _git(公式) さん_が 我々下々のために用意してくださった**PPAリポジトリです**。(素晴らしい)
        + `PPA` を検索すればわかるけど、**「公式 apt アプデおっそ」 → 「自分らで用意シヨ」** っていう流れで高位な開発者たち様が提供して下さっている個人用リポです。
            + 登録すれば、誰でもUPできてしまいます。 _野良パケです_。ご使用はご慎重に。


## 残骸(旧 Ubuntuの場合)

以下は**Ubuntu Gitの場合必要ではなくなった**が、ソース→コンパイルするなど勉強のため残しておきます

```shell
# 適度に更新
sudo apt update
apt list --upgradable
sudo apt upgrade

# 下拵え
sudo apt install make libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip
# 依存定期
sudo apt autoremove # ← aptの場合、必要でなくなった道具を掃除してくれる魔法のコマンド

# だうんろーど、ここからyumと一緒
wget https://www.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

tar -zxf git-2.26.2.tar.gz
cd git-2.26.2

# 本番
make configure
./configure --prefix=/usr
sudo make all
sudo make install

```


## 雑記

手持ちのWin端末は呆気なく終了したのに、`Ubuntu` と `AWS` の Updateで死ぬほどサイト探して、アホほど時間くらいました…
普段如何に`rpm`や`yum` のパッケージ管理に頼ってるかがわかる(´・ω:;.:... )

実際にここまで書いといてなんだけど、普段使用しないので、**来週には忘れてる**と思う。
んで、またネットの海を彷徨って時間を食うのは馬鹿らしいので、自分用に作った！

後はEvernoteにでも突っ込んで更新や新規構築の度に毎回コピペし直すと思う。

**もしコメント注釈の意味に間違いがあったら、教えて下さい！**