[Debian / Ubuntu / Docker] debian:jessieからdebian:busterに移行したら"E: Unable to locate package xxxxxxx"の巻

# Target(想定読者)

記事タイトルの条件のほかに、

- rubyをdebian系のLinux上で動かしている

という条件も満たす方におそらく役に立つと思われます。

# Summary(概要)

Dockerfileで`debian:jessie`というイメージが指定されていた。
あまりにも古くて問題になったので`debian:buster`に変えたところ、次のエラーが出た。

```bash
$ apt-get install libgdbm3
E: Unable to locate package libgdbm3
```

```bash
$ apt-get install libmysqlclient-dev
E: Unable to locate package libmysqlclient-dev
```

一応、Dockerとは全く関係ない問題です。
あくまでも、Debian/Linuxの問題。


# Solution(対策)

```bash
# old
# apt-get install libgdbm3

# new
$ apt-get install libgmp-dev
```

```bash
# old
# apt-get install libmysqlclient-dev

# new
$ apt-get install default-libmysqlclient-dev
```

これで解決した。
今日3時間近くかかってる。

仮想敵「修正したのたった2行っすよ...どうなってんすかsiruku6さん、、、、さぼってたんすか....」
siruku6「日本語の記事が、全然なかったんですよ！！！！」\_(-ω-`\_)⌒)\_ｸﾞｯﾀﾘ

# Note(補足)

## note1: `libgmp3-dev`だとダメかも？

むっちゃ色々頑張ってると、`bundle install`中にこんなエラーが出ることもある。
gem `racc`のインストールに失敗しているのだが....

```bash
Fetching racc 1.5.2
Installing racc 1.5.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/Users/myuser2/.gem/ruby/2.7.0/gems/racc-1.5.2/ext/racc/cparse
/opt/local/bin/ruby2.7 -I /opt/local/lib/ruby2.7/2.7.0 -r
./siteconf20210104-30183-axgzet.rb extconf.rb
checking for rb_ary_subseq()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
       --with-opt-dir
       --with-opt-include
       --without-opt-include=${opt-dir}/include
       --with-opt-lib
       --without-opt-lib=${opt-dir}/lib
       --with-make-prog
       --without-make-prog
       --srcdir=.
       --curdir
       --ruby=/opt/local/bin/$(RUBY_BASE_NAME)2.7
/opt/local/lib/ruby2.7/2.7.0/mkmf.rb:471:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:564:in `try_link0'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:582:in `try_link'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:794:in `try_func'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:1083:in `block in have_func'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:971:in `block in checking_for'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:361:in `block (2 levels) in postpone'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:331:in `open'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:361:in `block in postpone'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:331:in `open'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:357:in `postpone'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:970:in `checking_for'
       from /opt/local/lib/ruby2.7/2.7.0/mkmf.rb:1082:in `have_func'
       from extconf.rb:6:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

/Users/myuser2/.gem/ruby/2.7.0/extensions/arm64-darwin-20/2.7.0/racc-1.5.2/mkmf.log
```

その原因は、`libgdbm3`をインストールしなくなったためであった。
このとき、`libgdbm3`の代わりに`libgmp3-dev`をインストールしたのだが、それではダメだった。（気がする）
`libgmp-dev`をインストールしなければならなかった。

ただ、このnote1が解決しなかったのは、note2の問題のせいという可能性があるので、正直自信がない。

次のnote2については、確実にエラーの解消に繋がったのを確認できたので、是非note2もチェックされたい。

## note2: `libgmp-dev`の位置

もう一個注意。

`Dockerfile`の中で、何回も`apt-get install`が書かれていることってありますよね？
その時に、`libgmp-dev`を結構後ろの方の`apt-get install`に混ぜてしまったんですが、そのときは[note1](https://qiita.com/siruku6/items/e198ee07e201de1c154e#note1-libgmp3-dev%E3%81%A0%E3%81%A8%E3%83%80%E3%83%A1%E3%81%8B%E3%82%82)のエラーが解消しませんでした。

`libgmp-dev`を、一番最初の`apt-get install`の中に混ぜてあげたら、エラーが解消した。

なんなんですか.....。。

## note3: `gnupg`

難しくなかったので、書かなくてもわかるかと思って省略してましたが、
`gnupg`も`apt-get install`してあげる必要がありました。
参考まで。

# Resouces(情報元)

- [Nokogiri Official / Cannot install racc](http://nokogiri.org/tutorials/installing_nokogiri.html#cannot-install-racc)
- [StackExchange / Package 'libmysqlclient-dev' has no installation candidate](https://askubuntu.com/questions/1043900/package-libmysqlclient-dev-has-no-installation-candidate)
- [Where’s that log file? Debugging failed Docker builds](https://pythonspeed.com/articles/debugging-docker-build/)  
dockerイメージ構築中にエラーになったときのデバッグ方法はここを見た