Raspbianをwheezyからjessieにアップグレード

2015/04頃にdebianのバージョン8 jessieがリリースされたようです。
それに伴い、現在では配布されているraspbianもjessieになっているらしいのですが、私がセットアップした頃はまだwheezyでした。

今回はraspbianをwheezyからjessieにアップグレードします。

システムを最新の状態へ更新

システムのバージョンを確認して8未満であった場合にはアップグレードを行います。

そこでまずは現在のraspbianを最新の状態へ更新します。
アップグレード前なので、念のためです。

root@raspberrypi:~# cat /etc/debian_version   
7.8  
root@raspberrypi:~# apt-get update  
root@raspberrypi:~# apt-get upgrade  
root@raspberrypi:~# apt-get dist-upgrade  

wheezyをjessieへアップグレード

システムを最新にしたら早速アップグレードを行います。

まずはapt-getの問い合わせ先をjessieのものに変更します。

# :%s/wheezy/jessie/g で置換できる  
root@raspberrypi:~# vi /etc/apt/sources.list  

変更が完了したら、アップグレードを行います。

システムのデフォルト状態から変更されたファイルがある場合にはアップデートやアップグレード中に確認が入るため、夜中に通して実行などはできませんので注意してください。
夜中の間に実行したい場合には -y オプションで可能ではありますが、オススメしません。

root@raspberrypi:~# time apt-get update  
real    1m14.749s  
user    0m46.280s  
sys 0m3.050s  
  
root@raspberrypi:~# time apt-get upgrade  
()  
real    33m32.162s  
user    7m36.170s  
sys 2m48.870s  
  
root@raspberrypi:~# time apt-get dist-upgrade  
()  
設定ファイル '/etc/pam.d/su'  
 ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。  
 ==> パッケージ配布元が更新版を提供しています。  
   どうしますか? 以下の選択肢があります:  
    Y か I  : パッケージメンテナのバージョンをインストールする  
    N か O  : 現在インストールされている自分のバージョンを残す  
      D     : 両バージョンの差異を表示する  
      Z     : 状況を調査するためにシェルを開始する  
 デフォルトでは現在使っている自分のバージョンを残します。  
*** su (Y/I/N/O/D/Z) [デフォルト=N] ? Y  
()  
real    75m5.914s  
user    12m42.040s  
sys 4m35.720s  

一箇所サンプルを記載しましたが、(略)となっている部分には何回か上記のような設定の上書き確認が表示されています。
ここは個人で判断して選択してください。

全部Yにしても、何が差し戻されたかだけ控えていればあとから設定の修正は可能です。
必要であれば以下のようにしてテキストに出力しておくと良いかもしれませんね。

またコマンドの先頭にtimeをつけている部分がありますが、これを行うとコマンドの実行時間が計測できます。
目安として記録してみました。結構かかります。

$ apt-get dist-upgrade > output.txt  

最後にシステムの再起動をして完了です。
ちなみに私はシステム再起動を行う前に設定が変更されてしまっていたpam.d/suを先に修正しました。

root@raspberrypi:~# reboot  

アップグレード確認

再起動が完了したら、システムがアップグレードされているか確認します。

root@raspberrypi:~# cat /etc/debian_version   
8.0  
root@raspberrypi:~# hostnamectl   
   Static hostname: raspberrypi  
         Icon name: computer  
           Chassis: n/a  
        Machine ID: 440a68c6f28d3e287c6b6c7b554a9684  
           Boot ID: ff532e20c64442e4ab446002b7cf2190  
  Operating System: Raspbian GNU/Linux 8 (jessie)  
            Kernel: Linux 4.1.7-v7+  
      Architecture: arm  

上記それぞれでバージョン8にアップグレードされていることが確認できました。

不要パッケージ等の削除

最後に不要パッケージや、不要な設定ファイルを削除します。

wheezyからjessieに変更するとinitシステムがsysvinitからsystemdに変更されているため、wheezyの起動ファイルや設定ファイルが残っているのは好ましくありません。
いつかきっと謎エラーを発生させて、我々のやる気を削ぐことになるでしょう。

# 不要パッケージ削除  
root@raspberrypi:~# apt-get autoremove  
root@raspberrypi:~# apt-get autoclean  
  
# https://www.debian.org/releases/jessie/mips/release-notes/ch-information.ja.html  
# rc" ("Removed, but Config-files remain"、削除されたが設定ファイルが残っている)   
root@raspberrypi:~# dpkg -l | awk '/^rc/ { print $2 }'  
root@raspberrypi:~# apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')  

これで不要パッケージの削除と、不必要な設定ファイルが削除されました。

あとがき

CentOS7でもsystemdが利用されるようになりましたよね。
あぁsystemd流行ってるのかなと思うと、そもそも従来のinitとsystemdで何がどう違うのか知りたくなります。

今のところはsystemdの方が起動時のログ系が見づらいという印象しかないのですが、たぶんちゃんと調べるとsystemdの方が全体的に優れているんでしょうね。
気になります。