【Tips】UbuntuへのDockerインストール時に誤ったリポジトリを追加してしまった場合の対処方法

# 概要
[UbuntuにDockerをインストールする](https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d)際に、x86系のCPU入りPCなのに誤ってARM用のリポジトリを設定してしまった場合の修正方法。このミスをすると手順の最後にあたる`sudo apt install docker-ce`の段でパッケージが見つからないとしてインストールが失敗する。

## 誤った入力（[手続き全体](https://qiita.com/tkyonezu/items/0f6da57eb2d823d2611d)のうち `add-apt-repository` 部分のみ）
```sh
sudo add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

## 正しい入力（同上）
```sh
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

## `sudo apt install docker-ce`のエラーメッセージ
```sh
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
パッケージ docker-ce は使用できませんが、別のパッケージから参照されます。
これは、パッケージが欠落しているか、廃止されたか、または別のソース
からのみ利用可能であることを意味します。
しかし、以下のパッケージが置き換えます:
  docker-ce-cli:armhf

E: パッケージ 'docker-ce' にはインストール候補がありません
```

# 環境
- Ubuntu 16.04.6 LTS (Xenial Xerus)
    * 18.04 LTS に関しては補足参照（基本的にこの記事で書かれている内容と同じ）

# 解決方法
## add-apt-repository のやり直し
`add-apt-repository`部分以外は問題がないので、上記の「正しい入力」で示されている`add-apt-repository`を行えば問題ない。以下再掲。

```sh
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
```

## 誤って追加されたリポジトリの削除
誤ったリポジトリと正しいリポジトリが両方追加されたままの状態で

```sh
sudo apt update
```
とすると、以下の警告がででしまう。

```sh
W: ターゲット Packages (stable/binary-all/Packages) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-ja_JP) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-ja) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-en) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット DEP-11 (stable/dep11/Components-amd64.yml) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット DEP-11-icons (stable/dep11/icons-64x64.tar) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Packages (stable/binary-all/Packages) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-ja_JP) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-ja) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット Translations (stable/i18n/Translation-en) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット DEP-11 (stable/dep11/Components-amd64.yml) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
W: ターゲット DEP-11-icons (stable/dep11/icons-64x64.tar) は /etc/apt/sources.list:54 と /etc/apt/sources.list:57 で複数回設定されています
```
そこで当該ファイルを確認するために

```sh
cat /etc/apt/sources.list
```
とすると行末に

```
# deb-src [arch=armhf] https://download.docker.com/linux/ubuntu xenial stable
# deb-src [arch=armhf] https://download.docker.com/linux/ubuntu xenial stable edge test
deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
```

とあるので、誤ったリポジトリ（今回は`[arch=armhf]`とある2行）をエディタで編集して削除する。

## `docker-ce`のインストール
以上二つの手続きを終えれば`docker-ce`のインストールが可能となる。

```sh
sudo apt install docker-ce
```

# 補足
Ubuntu 18.04 LTS 用の記事は[こちら](https://qiita.com/iganari/items/fe4889943f22fd63692a)だが書いてあることは同じ。基本的に両者とも[英語版の公式ドキュメント](https://docs.docker.com/install/linux/docker-ce/ubuntu/)をなぞっているので最終的にはそちらを確認するのが安全。