[Ubuntu] セキュリティアップデートの自動インストール に書いたように、セキュリティアップデートを自動で適用しています。先日、別の作業で、サーバーにログインしてみると、セキュリティアップデートの適用に失敗していることに気づきました。
今回、これを修復するにあたって行った作業を、自分の作業記録代わりにまとめておきます。なにぶん慣れない作業だったので、あれこれ試したことも書いていますので、ご容赦ください。
セキュリティアップデートのログは、 /var/log/unattended-upgrades 以下に保存されているので、ログファイルを調べるとカーネルヘッダのアップデートの際にエラーが起きてました。
2015-08-18 06:48:35,902 INFO 許可されているパッケージ導入元: ['o=Ubuntu,a=precise-security'] 2015-08-18 06:50:36,988 INFO Packages that are upgraded: linux-headers-virtual linux-image-virtual linux-libc-dev linux-virtual 2015-08-18 06:50:36,989 INFO dpkg のログを '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2015-08-18_06:50:36.988737.log' に書き込み中 2015-08-18 06:51:06,919 ERROR アップグレードのインストールが失敗しました! 2015-08-18 06:51:06,920 ERROR エラーメッセージ: 'installArchives() failed'
さらに詳細にログを見ると、ディスク容量不足とありました。ちなみに、インストールに失敗したのは、linux-headers-3.2.0-89 および linux-headers-3.2.0-89-virtual パッケージのインストールでした。
なお、現時点で動作しているカーネルのバージョンは、
bitnami@ip-10-132-190-144:~$ uname -r 3.2.0-88-virtual bitnami@ip-10-132-190-144:~$
でした。
なにはともあれ、まずは不要なファイルを削除して、再度インストールすればいいかと思い、
bitnami@ip-10-132-190-144:~$ sudo apt-get update bitnami@ip-10-132-190-144:~$ sudo apt-get -f install パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 依存関係を解決しています ... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: linux-image-3.2.0-76-virtual (略) linux-headers-3.2.0-65-virtual これらを削除するには 'apt-get autoremove' を利用してください。 以下の特別パッケージがインストールされます: linux-headers-3.2.0-90 linux-headers-3.2.0-90-virtual linux-headers-virtual linux-image-3.2.0-90-virtual linux-image-virtual linux-virtual 提案パッケージ: fdutils linux-doc-3.2.0 linux-source-3.2.0 linux-tools 以下のパッケージが新たにインストールされます: linux-headers-3.2.0-90 linux-headers-3.2.0-90-virtual linux-image-3.2.0-90-virtual 以下のパッケージはアップグレードされます: linux-headers-virtual linux-image-virtual linux-virtual アップグレード: 3 個、新規インストール: 3 個、削除: 0 個、保留: 177 個。 5 個のパッケージが完全にインストールまたは削除されていません。 25.6 MB のアーカイブを取得する必要があります。 この操作後に追加で 104 MB のディスク容量が消費されます。 続行しますか [Y/n]? y 取得:1 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-image-3.2.0-90-virtual amd64 3.2.0-90.128 [12.9 MB] 取得:2 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-virtual amd64 3.2.0.90.104 [1,760 B] 取得:3 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-image-virtual amd64 3.2.0.90.104 [2,318 B] 取得:4 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-headers-3.2.0-90 all 3.2.0-90.128 [11.7 MB] 取得:5 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-headers-3.2.0-90-virtual amd64 3.2.0-90.128 [978 kB] 取得:6 http://ap-northeast-1.ec2.archive.ubuntu.com/ubuntu/ precise-updates/main linux-headers-virtual amd64 3.2.0.90.104 [2,286 B] 25.6 MB を 1秒 で取得しました (22.8 MB/s) Selecting previously unselected package linux-image-3.2.0-90-virtual. (データベースを読み込んでいます ... 現在 566980 個のファイルとディレクトリがインストールされています。) (.../linux-image-3.2.0-90-virtual_3.2.0-90.128_amd64.deb から) linux-image-3.2.0-90-virtual を展開しています... Done. Selecting previously unselected package linux-headers-3.2.0-90. (.../linux-headers-3.2.0-90_3.2.0-90.128_all.deb から) linux-headers-3.2.0-90 を展開しています... dpkg: /var/cache/apt/archives/linux-headers-3.2.0-90_3.2.0-90.128_all.deb の処理中にエラーが発生しました (--unpack): ディレクトリ `./usr/src/linux-headers-3.2.0-90/arch/ia64/include/asm/uv' の作成中にエラーが発生しました: デバイスに空き領域がありません MaxReports にすでに達しているため、レポートは書き込まれません dpkg-deb: error: subprocess ペースト was killed by signal (Broken pipe) Selecting previously unselected package linux-headers-3.2.0-90-virtual. (.../linux-headers-3.2.0-90-virtual_3.2.0-90.128_amd64.deb から) linux-headers-3.2.0-90-virtual を展開しています... dpkg: /var/cache/apt/archives/linux-headers-3.2.0-90-virtual_3.2.0-90.128_amd64.deb の処理中にエラーが発生しました (--unpack): (`./usr/src/linux-headers-3.2.0-90-virtual/scripts/recordmcount' の処理中に) `/usr/src/linux-headers-3.2.0-90-virtual/scripts/recordmcount.dpkg-new' の作成に失敗しました: デバイスに空き領域がありません MaxReports にすでに達しているため、レポートは書き込まれません dpkg-deb: error: subprocess ペースト was killed by signal (Broken pipe) 以下のパッケージの処理中にエラーが発生しました: /var/cache/apt/archives/linux-headers-3.2.0-90_3.2.0-90.128_all.deb /var/cache/apt/archives/linux-headers-3.2.0-90-virtual_3.2.0-90.128_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1) bitnami@ip-10-132-190-144:~$
と実行しても、やはり同じようにディスクに空きがなくてエラーになってしまいます。
dfで確認すると
bitnami@ip-10-132-190-144:~$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/xvda1 10321208 7680236 2116688 79% / udev 293896 8 293888 1% /dev tmpfs 60432 168 60264 1% /run none 5120 0 5120 0% /run/lock none 302152 0 302152 0% /run/shm bitnami@ip-10-132-190-144:~$
となっており、容量的には約2G近く空いてます。
なんか妙だなとおもって、ひょっとしてiノードが足りなかったりして、まさかねと思って調べてみると
bitnami@ip-10-132-190-144:~$ df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvda1 655360 648599 6761 99% / udev 73474 377 73097 1% /dev tmpfs 75538 254 75284 1% /run none 75538 3 75535 1% /run/lock none 75538 1 75537 1% /run/shm bitnami@ip-10-132-190-144:~$
あぁ・・・。どうもあたりだったようです。話としては、iノードが不足するとファイルを作れなくなると聞いてましたが、まさか本当に起きるなんてびっくりです。
ということで、先に不要なパッケージを削除してみます。
bitnami@ip-10-132-190-144:~$ sudo apt-get autoremove パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 これらを直すためには 'apt-get -f install' を実行する必要があるかもしれません。 以下のパッケージには満たせない依存関係があります: linux-headers-virtual : 依存: linux-headers-3.2.0-89-virtual しかし、インストールされていません E: 未解決の依存関係があります。-f オプションを試してください。 bitnami@ip-10-132-190-144:~$
ところが、現時点ではカーネルヘッダのインストールに失敗した状態なので、依存性エラーになってしまってます。
仕方ないので、まずは手作業で不要なカーネルヘッダのパッケージを削除します。古いlinux-headers-3.2.0-xx および linux-headers-3.2.0-xx-virtual あたりをいくつか消します。
bitnami@ip-10-132-190-144:~$ sudo dpkg --purge linux-headers-3.2.0-60-virtual linux-headers-3.2.0-60 (データベースを読み込んでいます ... 現在 567894 個のファイルとディレクトリがインストールされています。) linux-headers-3.2.0-60-virtual を削除しています ... linux-headers-3.2.0-60 を削除しています ... bitnami@ip-10-132-190-144:~$ sudo dpkg --purge linux-headers-3.2.0-61-virtual linux-headers-3.2.0-61 (データベースを読み込んでいます ... 現在 545865 個のファイルとディレクトリがインストールされています。) linux-headers-3.2.0-61-virtual を削除しています ... linux-headers-3.2.0-61 を削除しています ... bitnami@ip-10-132-190-144:~$
若干ですが、iノードの空きも増えました。
これで、修復をしてみます。
bitnami@ip-10-132-190-144:~$ sudo apt-get -f install (略) linux-image-virtual (3.2.0.89.103) を設定しています ... linux-headers-3.2.0-90 (3.2.0-90.128) を設定しています ... linux-headers-3.2.0-90-virtual (3.2.0-90.128) を設定しています ... dpkg: 依存関係の問題により linux-headers-virtual の設定ができません: linux-headers-virtual は以下に依存 (depends) します: linux-headers-3.2.0-89-virtual ...しかし: パッケージ linux-headers-3.2.0-89-virtual はまだインストールされていません。 dpkg: linux-headers-virtual の処理中にエラーが発生しました (--configure): 依存関係の問題 - 設定を見送ります エラーメッセージは前の失敗から続くエラーであることを示しているので、レポートは書き込まれません。 dpkg: 依存関係の問題により linux-virtual の設定ができません: linux-virtual は以下に依存 (depends) します: linux-headers-virtual (= 3.2.0.89.103) ...しかし: パッケージ linux-headers-virtual はまだ設定されていません。 dpkg: linux-virtual の処理中にエラーが発生しました (--configure): 依存関係の問題 - 設定を見送ります エラーメッセージは前の失敗から続くエラーであることを示しているので、レポートは書き込まれません。 linux-libc-dev (3.2.0-89.127) を設定しています ... 以下のパッケージの処理中にエラーが発生しました: linux-headers-virtual linux-virtual E: Sub-process /usr/bin/dpkg returned an error code (1) bitnami@ip-10-132-190-144:~$
あれ?やはりエラーになりました。
どうも、最初にセキュリティアップデートでインストールに失敗したバージョンの linux-Headers が正しく設定されていないようです。
なので、それぞれのパッケージをインストールしようとしたのですが、
bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-headers-3.2.0-89-virtual パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません: 以下のパッケージには満たせない依存関係があります: linux-headers-3.2.0-89-virtual : 依存: linux-headers-3.2.0-89 しかし、インストールされようとしていません E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。 bitnami@ip-10-132-190-144:~$ bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-headers-3.2.0-89 パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません: 以下のパッケージには満たせない依存関係があります: linux-headers-virtual : 依存: linux-headers-3.2.0-89-virtual しかし、インストールされようとしていません E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。 bitnami@ip-10-132-190-144:~$
だめでした。
で、途方にくれて、ネットを調べていると、似たようなカーネル関係でトラブッてる話題がありました。
一旦、先に linux-virtual や linux-headers-virtual を削除すればいいようです。
やってみます。
bitnami@ip-10-132-190-144:~$ sudo dpkg --purge linux-headers-virtual (データベースを読み込んでいます ... 現在 545884 個のファイルとディレクトリがインストールされています。) linux-headers-virtual を削除しています ... bitnami@ip-10-132-190-144:~$ sudo dpkg --purge linux-virtual (データベースを読み込んでいます ... 現在 545881 個のファイルとディレクトリがインストールされています。) linux-virtual を削除しています ... bitnami@ip-10-132-190-144:~$
次に、足りないパッケージをインストールします。
bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-headers-3.2.0-89 bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-headers-3.2.0-89-virtual
問題なくインストールできました。
再度インストールします。
bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-headers-virtual bitnami@ip-10-132-190-144:~$ sudo apt-get install linux-virtual
これで、正しくインストールできたはずです。念のため、修復も試しておきます。
bitnami@ip-10-132-190-144:~$ sudo apt-get -f install パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが自動でインストールされましたが、もう必要とされていません: linux-image-3.2.0-76-virtual (略) linux-headers-3.2.0-65-virtual これらを削除するには 'apt-get autoremove' を利用してください。 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 177 個。 bitnami@ip-10-132-190-144:~$
特に変更作業も発生しないので、問題なさそうです。
一旦ここで、再起動してみます。
bitnami@ip-10-132-190-144:~$ uname -r 3.2.0-90-virtual bitnami@ip-10-132-190-144:~$
無事カーネルもアップデートされたようです。
最後に、今後のために不要なパッケージを削除しておきます。
bitnami@ip-10-132-190-144:~$ sudo apt-get autoremove --purge
めでたしめでたし。
ちなみに、autoremove を呼び出す際に、 --purge をつけないと設定ファイルが残ってしまいます。この場合、dpkg --list で見ると、先頭2文字が rc になってます。この状態を解消するには、 dpkg --purge パッケージ名 などを使って削除してください。