ubuntuの「壊れた変更禁止パッケージがあります」の対処法


ubuntu上にpostgresqlを入れる際に悩まされてエラーについて書こうと思います。

## 環境
```
   Ubuntu:20.04
   windows(wsl2)
```

## 前提
PostgreSQL（ポスグレ）をインストールする際にパッケージの関係で怒られました。
```
$ sudo sh -c "echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list"
$ wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install postgresql

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

以下のパッケージには満たせない依存関係があります:
 postgresql : 依存: postgresql-13 しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

以下のパッケージには満たせない依存関係があります:
 postgresql : 依存: postgresql-13 しかし、インストールされようとしていません
```

## 流れ・対処法
##### 1 . ubuntuのパッケージ管理システムapt-getを使いパッケージの更新＆アップグレード
```
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install postgresql
```
この時点でも同様のエラーが出てポスグレはインストールされませんでした。
※大体はここでエラーが解消されるそうですが、今回はだめでした。

##### 2 . aptitudeを使ってパッケージのインストール
```
$ sudo aptitude install postgresql

以下の新規パッケージがインストールされます:
  libllvm6.0{a} libpq5{ab} postgresql-11{b} postgresql-client-11{a} sysstat{a}
更新: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
アーカイブの 31.4 MB を取得する必要があります。展開後に 118 MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
 libpq5 : 依存: libssl1.0.0 (>= 1.0.2~beta3) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

 postgresql-12 : 依存: libicu55 (>= 55.1-1~) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

                 依存: libssl1.0.0 (>= 1.0.2~beta3) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを現在のバージョンに一時固定する:
1)     libpq5 [インストールされていません]
2)     postgresql-12 [インストールされていません]
3)     postgresql-client-12 [インストールされていません]

この解決方法を受け入れますか? [Y/n/q/?]y
インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
アーカイブの 0 B を取得する必要があります。展開後に 0 B のディスク領域が新たに消費されます。
```
依存関係となっているパッケージの種類は分かりましたが、インストールしてくれません。
※個別にパッケージのインストールなどもしましたが、ダメでした、、、
```
 $ sudo apt-get install postgresql-12 libpq5 postgresql-client-12 
```


aptitude install で提案される最初のパッケージのバージョンが記載されていないのが原因ぽいです。
```
1)     libpq5 [インストールされていません]
2)     postgresql-12 [インストールされていません]
3)     postgresql-client-12 [インストールされていません]
```

##### 3. aptitudeで推奨される依存関係のパッケージをインストール
今回は「解決方法を受け入れますか？」のところでnを選択し、ポスグレの依存パッケージも指定してインストールできました
```
$ sudo aptitude install postgresql
以下の新規パッケージがインストールされます:
  libllvm6.0{a} libpq5{ab} postgresql postgresql-13{ab} postgresql-client-13{ab} sysstat{a}
更新: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
アーカイブの 32.2 MB を取得する必要があります。展開後に 121 MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
 libpq5 : 依存: libssl1.0.0 (>= 1.0.2~beta3) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

 postgresql-13 : 依存: libicu55 (>= 55.1-1~) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

                 依存: libssl1.0.0 (>= 1.0.2~beta3) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

 postgresql-client-13 : 依存: libreadline6 (>= 6.0) いずれの利用可能なパッケージからも提供されていない仮想パッケージです

                        依存: libssl1.0.0 (>= 1.0.0) いずれの利用可能なパッケージからも提供されていない仮想パッケー ジです

以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージを現在のバージョンに一時固定する:
1)     libpq5 [インストールされていません]
2)     postgresql [インストールされていません]
3)     postgresql-13 [インストールされていません]
4)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージをインストールする:
1)     libpq5 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]

     以下のパッケージを現在のバージョンに一時固定する:
2)     postgresql [インストールされていません]
3)     postgresql-13 [インストールされていません]
4)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージをインストールする:
1)     libpq5 [12.2-4 (focal)]

     以下のパッケージを現在のバージョンに一時固定する:
2)     postgresql [インストールされていません]
3)     postgresql-13 [インストールされていません]
4)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージをインストールする:
1)     libllvm10 [1:10.0.0-4ubuntu1 (focal)]
2)     libpq5 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
3)     postgresql [12+214ubuntu0.1 (focal-security, focal-updates)]
4)     postgresql-12 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
5)     postgresql-client-12 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]

     以下のパッケージを現在のバージョンに一時固定する:
6)     postgresql-13 [インストールされていません]
7)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージをインストールする:
1)     libllvm10 [1:10.0.0-4ubuntu1 (focal)]
2)     libpq5 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
3)     postgresql [12+214 (focal)]
4)     postgresql-12 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
5)     postgresql-client-12 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]

     以下のパッケージを現在のバージョンに一時固定する:
6)     postgresql-13 [インストールされていません]
7)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]n
以下のアクションでこれらの依存関係の問題は解決されます:

     以下のパッケージをインストールする:
1)     libllvm10 [1:10.0.0-4ubuntu1 (focal)]
2)     libpq5 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
3)     postgresql [12+214ubuntu0.1 (focal-security, focal-updates)]
4)     postgresql-12 [12.11-0ubuntu0.20.04.1 (focal-security, focal-updates)]
5)     postgresql-client-12 [12.7-1.pgdg16.04+1 (xenial-pgdg)]

     以下のパッケージを現在のバージョンに一時固定する:
6)     postgresql-13 [インストールされていません]
7)     postgresql-client-13 [インストールされていません]



この解決方法を受け入れますか? [Y/n/q/?]y
以下の新規パッケージがインストールされます:
  libllvm10{a} libpq5{a} postgresql postgresql-12{a} postgresql-client-12{a} sysstat{a}
更新: 0 個、新規インストール: 6 個、削除: 0 個、保留: 0 個。
アーカイブの 30.8 MB を取得する必要があります。展開後に 123 MB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?] y
取得: 1 http://apt.postgresql.org/pub/repos/apt xenial-pgdg/main amd64 postgresql-client-12 amd64 12.7-1.pgdg16.04+1 [1,416 kB]
取得: 2 http://archive.ubuntu.com/ubuntu focal/main amd64 libllvm10 amd64 1:10.0.0-4ubuntu1 [15.3 MB]
取得: 3 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libpq5 amd64 12.11-0ubuntu0.20.04.1 [117 kB]
取得: 4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 postgresql-12 amd64 12.11-0ubuntu0.20.04.1 [13.5 MB]
取得: 5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 postgresql all 12+214ubuntu0.1 [3,924 B]
取得: 6 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 sysstat amd64 12.2.0-2ubuntu0.1 [448 kB]
30.8 MB を 22秒 秒で取得しました (1,431 kB/s)
```
##### 4.PostgreSQLのバージョンが確認できました
```
$ psql -V
  psql (PostgreSQL) 12.7 (Ubuntu 12.7-1.pgdg16.04+1)
```