概要
Ubuntu 16.04 で docker-ce のアップグレードを行ってみました
アップグレード自体は apt upgrade コマンドを叩けば終了なのですが、全然別件で Linux カーネルのインストールエラーに直面したので対応してみました
環境
- Ubuntu 16.04
- docker-engine 17.03 -> 17.05
- linux-image-generic 4.4.0.96 -> 4.4.0.97
遭遇したエラー
アップグレードしようとしたときに遭遇したエラーは以下の通りです
[root@localhost /boot Wed Oct 18 10:40:08]# apt upgrade docker-engine
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-extra-4.4.0-97-generic : Depends: linux-image-4.4.0-97-generic but it is not installed
linux-image-generic : Depends: linux-image-4.4.0-97-generic but it is not installed
Recommends: thermald but it is not installed
E: Unmet dependencies. Try using -f.
こんな感じです
実は /boot の領域が足りなくて上記のエラーが発生しています
対応する
単純に /boot の領域を空ければ OK
古いカーネルのファイルが残っているので削除してあげます
- cd /boot
例えば config 系のファイルでは過去のバージョンがずらっと保存されているのが確認できると思います
[root@localhost /boot Wed Oct 18 10:45:39]# ls -l config-4.4.0-*
-rw-r--r-- 1 root root 189412 Apr 19 2016 config-4.4.0-21-generic
-rw-r--r-- 1 root root 190236 Mar 25 2017 config-4.4.0-71-generic
-rw-r--r-- 1 root root 190356 Jun 14 21:24 config-4.4.0-81-generic
-rw-r--r-- 1 root root 190356 Jun 27 04:45 config-4.4.0-83-generic
-rw-r--r-- 1 root root 190356 Jul 19 00:00 config-4.4.0-87-generic
-rw-r--r-- 1 root root 190356 Aug 1 07:25 config-4.4.0-89-generic
-rw-r--r-- 1 root root 190356 Aug 8 22:58 config-4.4.0-91-generic
-rw-r--r-- 1 root root 190356 Aug 10 20:02 config-4.4.0-92-generic
-rw-r--r-- 1 root root 190356 Aug 12 08:40 config-4.4.0-93-generic
この中の最新版以外 (今回の場合は 4.4.0-93 以外) の古いファイルをすべて削除してあげます
config の他に abi, initrd System.map, vmlinuz があるのでこれも削除するコマンドを実行します
rm *4.4.0-21-*
rm *4.4.0-71-*
rm *4.4.0-81-*
rm *4.4.0-83-*
rm *4.4.0-87-*
rm *4.4.0-89-*
rm *4.4.0-91-*
rm *4.4.0-92-*
これでだいぶ /boot が空くと思います
空いたら最新のカーネルをインストールしてあげましょう
- apt -f install
で該当のエラーが出なくなると思います
無事インストールできたら docker-engine のアップグレードを実施しましょう
- apt upgrade docker-engine
- docker -v
Docker version 17.05.0-ce, build 89658be
こんな感じです
最後に
docker-engine を最新版にアップグレードした際に遭遇したカーネルエラーに対応してみました
/boot に空きがあれば遭遇することはないエラーだと思います
もし同じようなエラーに遭遇した場合はやってみてください
0 件のコメント:
コメントを投稿