Ubuntu で不要なパッケージを削除する（設定ファイルだけのこっているもの、古いカーネルなど）

背景
----

Ubuntu で定期的に `aptitude safe-upgrade` を実行してパッケージ更新していると、カーネルの更新で `/boot` パーティションの空き領域が少なくなります。

`apt-get autoremove` を実行すると、古いカーネルパッケージが削除されて `/boot` パーティションの空き領域を回復することができますが、削除されていないものが残っていたので、手動で削除しました。


参考
----

* [検索パターン (aptitude ユーザマニュアル バージョン 0.4.3 第2章 aptitude リファレンスガイド)](http://dolphin.c.u-tokyo.ac.jp/~nori1/aptitude-ja/ch02s03.html)


環境
----

```sh
$ lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.3 LTS
Release:        14.04
Codename:       trusty

$ uname -a
Linux brix 3.19.0-42-generic #48~14.04.1-Ubuntu SMP Fri Dec 18 10:24:49 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
```


手順
----

### 古いカーネルを削除する

インストール済みのカーネルパッケージを確認する。

```sh
# パッケージ名に 3.13.0, 3.16.0, 3.19.0, 4.2.0 を含むものを検索
$ aptitude search ~i\(3\.1[369]\.0\|4\.2\.0\)
```
```shell-session
i   linux-headers-3.13.0-70                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-70-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i   linux-headers-3.13.0-71                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-71-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i   linux-headers-3.13.0-73                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-73-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i A linux-headers-3.13.0-74                             - Header files related to Linux kernel version 3.13.0
i A linux-headers-3.13.0-74-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i A linux-headers-3.19.0-42                             - Header files related to Linux kernel version 3.19.0
i   linux-headers-3.19.0-42-generic                     - Linux kernel headers for version 3.19.0 on 64 bit x86 SMP
i A linux-image-3.13.0-74-generic                       - Linux kernel image for version 3.13.0 on 64 bit x86 SMP
i A linux-image-3.19.0-42-generic                       - Linux kernel image for version 3.19.0 on 64 bit x86 SMP
i A linux-image-extra-3.13.0-74-generic                 - Linux kernel extra modules for version 3.13.0 on 64 bit x86 SM
i A linux-image-extra-3.19.0-42-generic                 - Linux kernel extra modules for version 3.19.0 on 64 bit x86 SM
i A linux-signed-image-3.13.0-74-generic                - Signed kernel image generic
i   linux-signed-image-3.19.0-42-generic                - Signed kernel image generic
```

 3.13.0-70, 3.13.0-71, 3.13.0-73 が不要なので削除する。削除対象パッケージのみを検出する条件を確認する。

```sh
# パッケージ名に 3.13.0-70, 3.13.0-71, 3.13.0-73 を含むものを検索
$ aptitude search ~i\(3\.13\.0-7[013]\)
```
```shell-session
i   linux-headers-3.13.0-70                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-70-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i   linux-headers-3.13.0-71                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-71-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
i   linux-headers-3.13.0-73                             - Header files related to Linux kernel version 3.13.0
i   linux-headers-3.13.0-73-generic                     - Linux kernel headers for version 3.13.0 on 64 bit x86 SMP
```

不要なカーネルパッケージを削除する。

```sh
# 「-F %p」はパッケージ名のみ表示するフォーマット指定
$ sudo aptitude purge $(aptitude search ~i\(3\.13\.0-7[013]\) -F %p)
```


### 削除したパッケージで設定ファイルが残っているものを削除する

```sh
# パッケージを確認する
$ aptitude search ~c

# パッケージを削除する
$ sudo aptitude purge $(aptitude search ~c -F %p)
```