某所で Web サーバとして使っている Debian squeeze を wheezy へアップグレードした。
アップグレードする理由
現安定版の wheezy (Debian 7) は、2013年5月4日にリリースされた。
・次の安定版がリリースされると、それまでの安定版は一般に「旧安定版」(old stable) と呼ばれて区別される。
・セキュリティアップデートは、次の安定版がリリースされた後も、そのまま一年間は継続して提供される。
Debian - Wikipedia
2ヶ月後の2014年5月には、旧安定版の squeeze はセキュリティアップデートが終了すると思われるので、このタイミングで wheezy にアップグレードしておいた。
ちなみに、旧安定版の squeeze (Debian 6) は、2011年2月6日にリリースされている。もう3年たっている。
使っている主要なソフトウェア・パッケージのアップグレード
今回の移行バージョンを表にしてみた。
squeeze | wheezy |
---|---|
OpenJDK 6 | OpenJDK 6 |
Tomcat 6 | Tomcat 6 |
Perl 5.10 | Perl 5.14 |
Ruby 1.8 | Ruby 1.8 |
MySQL 5.1 | MySQL 5.5 |
Perl, Ruby, Java (OpenJDK), Tomcat は新しいバージョン (Perl 6, Ruby 1.9, OpenJDK 7, Tomcat 7) も用意されているが、旧バージョン (Perl 5, Ruby 1.8, OpenJDK 6, Tomcat 6) もあるので無理にアップグレードしなくてもOK。
MySQL は設定ファイル /etc/mysql/my.cnf の [mysqld] セクションにある default-character-set=utf8 の設定を削除して、 character-set-server=utf8 を追加した。 [client] セクションや [mysqldump] セクションにある default-character-set=utf8 の設定は残しておいてOK。
参考 ⇒ [ヅ] Debian GNU/Linux squeeze に MySQL 5.1 をインストール (2012-01-21)
ちなみにこのサーバでは、 Apache はソースコードを自前でコンパイル・ビルドして使っているので、パッケージ更新の作業は不要だった。ビルドしなおす必要があるかと思ったが、そのままでも動いている。
アップグレード作業の前に
バックアップ大切。 Apache, Tomcat, MySQL を停止して、コンテンツをバックアップしておく。
資料をざっと読んでおくの大切。
アップグレード作業の流れ
作業は 第4章 Debian 6.0 (squeeze) からのアップグレード を見ながら進める。
telnet + screen でサーバへ接続。
script コマンドで作業を記録開始。
# script -t 2>~/upgrade-wheezy.time -a ~/upgrade-wheezy.script
/etc/apt/sources.list を wheezy 用に書き換える。
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb http://cdn.debian.net/debian/ wheezy main contrib non-free
deb http://cdn.debian.net/debian/ wheezy-updates main contrib
deb-src http://cdn.debian.net/debian/ wheezy main contrib non-free
deb-src http://cdn.debian.net/debian/ wheezy-updates main contrib
参考: Debian JP Project - CDN 対応ミラーの設定
wheezy のパッケージ情報を取得する。
# apt-get update
アップグレード後に削除されるパッケージやインストール容量の情報を見る。
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
必要なパッケージが削除されてしまう可能性を避けるために、まずは最小のアップグレードを実施。
# apt-get upgrade
システムの完全なアップグレードを実施。
# apt-get dist-upgrade
OSを再起動。
# shutdown -r now
アップグレード作業の実際(;´Д`)
作業しながらできるだけ Twitter にメモをツイートしていた。それをここに残しておく。
本日の予定: ひきこもり( ´∀`) [t] 2014-03-08 08:09:11 |
screen を使う。「このプログラムは安全な再接続を可能にし、リモート接続プロセスが切断された場合でもアップグレード作業が中断しないようにしてくれます」Debian 6.0 (squeeze) からのアップグレード http://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.ja.html [t] 2014-03-08 08:39:47 |
「aptitude を 「ビジュアルモード」 で起動して g (「Go」) を押してください」「内容を確認して、修正するかあるいは提案されたアクションを実行すべきです」Debian 6.0 (squeeze) からのアップグレード http://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.ja.html [t] 2014-03-08 08:41:55 |
Debian JP Project - CDN 対応ミラーの設定 http://www.debian.or.jp/community/push-mirror.html [t] 2014-03-08 08:45:25 |
/etc/apt/sources.list に追加するURL. wheezy でもOK. Debian JP Project - CDN 対応ミラーの設定 http://www.debian.or.jp/community/push-mirror.html [t] 2014-03-08 08:48:19 |
「以前のリリースの一部では、アップグレード作業に aptitude の利用を推奨していました。このツールは squeeze から wheezy へのアップグレードには推奨されません」squeeze からのアップグレード http://www.debian.org/releases/wheezy/amd64/release-notes/ch-upgrading.ja.html [t] 2014-03-08 08:52:24 |
アップグレードでいちばんこわいのはやっぱりソフトウェアRAIDまわりかなぁ。 [t] 2014-03-08 09:08:28 |
サーバからアーカイブファイルをバックアップするのにけっこう時間がかかる。 [t] 2014-03-08 09:57:15 |
# apt-get -o APT::Get::Trivial-Only=true dist-upgrade アップグレード: 438 個、新規インストール: 185 個、削除: 9 個、保留: 0 個。 329 MB のアーカイブを取得する必要があります。 [t] 2014-03-08 10:16:40 |
なにがさくじょされるんだろうがくぶる [t] 2014-03-08 10:17:02 |
削除対象: console-terminus defoma libept1 libpango1.0-common mysql-client-5.1 mysql-server-5.1 mysql-server-core-5.1 portmap x-ttcidfont-conf [t] 2014-03-08 10:17:55 |
# apt-get upgrade [t] 2014-03-08 10:18:46 |
sysstat の日時統計データファイルの形式がバージョンアップで変更。過去の形式の統計データファイルを削除。 [t] 2014-03-08 10:20:12 |
「W: Possible missing firmware /lib/firmware/rtl_nic/rtl8105e-1.fw for module r8169」 [t] 2014-03-08 10:25:27 |
# apt-get dist-upgrade [t] 2014-03-08 10:25:39 |
"Configuring libc6" "Restart services during package upgrades without asking?" "<Yes>" [t] 2014-03-08 10:29:36 |
MySQL の root パスワードを設定。 [t] 2014-03-08 10:33:05 |
Σ(゚∀゚ノ)ノキャー 「linux-image-3.2.0-4-amd64 を設定しています」「必要なファームウェアファイルがなくなっている可能性があります」「contrib および non-free セクションを含むようパッケージマネージャを再設定する必要があるかも」 [t] 2014-03-08 10:37:34 |
contrib と non-free は設定してあるからたぶんだいじょうぶだろうと「<了解>」をポチッとな。 [t] 2014-03-08 10:38:27 |
「mysql-server-5.5 を設定しています」 「Please read the /usr/share/doc/mysql-server-5.5/README.Debian file for more information.」 [t] 2014-03-08 10:40:33 |
差分を見たら新しいファイルのほうが良さげ。 「設定ファイル `/etc/munin/plugin-conf.d/munin-node' ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。 ==> パッケージ配布元が更新版を提供しています」 [t] 2014-03-08 10:43:11 |
これは自分のいじったファイルを残す。出力先とか指定してる。 「設定ファイル `/etc/munin/munin.conf' ==> これはインストールしてから (あなたかスクリプトによって) 変更されています。 ==> パッケージ配布元が更新版を提供しています。」 [t] 2014-03-08 10:44:50 |
"update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64" [t] 2014-03-08 10:45:29 |
うーん、ちょっとこわい。 "W: Possible missing firmware /lib/firmware/rtl_nic/rtl8168f-2.fw for module r8169" [t] 2014-03-08 10:45:39 |
・゚・(つД`)・゚・ ウェ―ン 「処理中にエラーが発生しました: mysql-server-5.5 mysql-server E: Sub-process /usr/bin/dpkg returned an error code (1)」 [t] 2014-03-08 10:46:03 |
"rc mysql-server-5.1" 古いパッケージが削除されてるけど、設定が残ってるのがいけないのかな。 [t] 2014-03-08 10:49:51 |
rc mysql-server-5.1 => 削除・設定 iF mysql-server-5.5 => インストール・設定失敗 という状況なので、やっぱり設定が問題ぽい。まずは /etc/mysql/my.cnf を退避。 [t] 2014-03-08 10:56:59 |
パッケージ削除のシミュレーション。 # apt-get -s --purge remove mysql-server-5.1 Purg mysql-server-5.1 Conf mysql-server-5.5 Conf mysql-server これでいけそう。 [t] 2014-03-08 10:57:44 |
「dpkg: 依存関係の問題により mysql-server の設定ができません: mysql-server は以下に依存 (depends) します: mysql-server-5.5 ...しかし: パッケージ mysql-server-5.5 はまだ設定されていません」 [t] 2014-03-08 10:59:23 |
改めて # apt-get install mysql-server でインストール。また、 MySQL の root のパスワード設定画面に。インストールできたぽい。 [t] 2014-03-08 11:01:59 |
きれいな MySQL に。 # dpkg -l | grep mysql-server ii mysql-server ii mysql-server-5.5 ii mysql-server-core-5.5 [t] 2014-03-08 11:02:14 |
設定ファイルを戻して、 MySQL を起動・・・ 「Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!」 (ノД`)シクシク [t] 2014-03-08 11:05:42 |
/var/log/syslog を見ると、 「#007/usr/bin/mysqladmin: connect to server at 'localhost' failed」 [t] 2014-03-08 11:11:19 |
「error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'」 [t] 2014-03-08 11:11:23 |
「Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!」 [t] 2014-03-08 11:11:35 |
mysql のプロセスは動いてないので、 /var/run/mysqld/mysqld.sock を削除・・・ 「rm: `/var/run/mysqld/mysqld.sock' を削除できません: そのようなファイルやディレクトリはありません」 って、あれっ? [t] 2014-03-08 11:14:38 |
もっかい # /etc/init.d/mysql start して、 「Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!」 おぉっと。。。 [t] 2014-03-08 11:15:39 |
/var/log/syslog をよく見たらちゃんと他にもエラーが出ていた。これをつぶしていくか。。 [t] 2014-03-08 11:20:36 |
「[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'」 [mysqld] セクションから default-character-set=utf8 を削除。 [t] 2014-03-08 11:23:31 |
MySQL 起動したー ヽ(=´▽`=)ノ [t] 2014-03-08 11:24:10 |
そういや apt-get purge しちゃったけど MySQL のデータも消えてるのかな。。 [t] 2014-03-08 11:24:36 |
apt-get purge remove しても MySQL のデータは消えてなかった ヽ(=´▽`=)ノ わざわざバックアップからインポートしなくて済んだ。 [t] 2014-03-08 11:26:13 |
さて、いちばんこわい shutdown -r now で再起動。これで Linux カーネルも入れ替わる。 [t] 2014-03-08 11:31:17 |
294日ぶりの再起動かな。 /md2 のチェックが 9.3% から進まなくて((((;゚Д゚))))ガクガクブルブル [t] 2014-03-08 11:34:14 |
あー、進んだ。よかった。。。 [t] 2014-03-08 11:34:32 |
58%まできた [t] 2014-03-08 11:41:45 |
68%の時点でなんかエラーでまくり(´Д` ) [t] 2014-03-08 11:51:17 |
こんなときに宅内Wi-Fiルータに繋がらない(´Д` ) [t] 2014-03-08 11:51:44 |
宅内 Wi-Fi ルーターふっかつ。。。 [t] 2014-03-08 11:54:00 |
再起動完了。 $ uname -mrsv Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.54-2 x86_64 [t] 2014-03-08 11:54:19 |
Tomcat さん起動せず。 # /etc/init.d/tomcat6 start [FAIL] no JDK found - please set JAVA_HOME ... failed! [t] 2014-03-08 11:59:09 |
/usr/lib/jvm/default-java -> java-1.6.0-openjdk-amd64 だけど、 java-1.6.0-openjdk はあるけど amd64 は無し。 [t] 2014-03-08 12:04:27 |
あれっ?と思ったけど過去の記録を見るとJREだけインストールしてたみたい。 # dpkg -l | grep jdk ii openjdk-6-jre-headless:amd64 ii openjdk-6-jre-lib rc sun-java6-jdk [t] 2014-03-08 12:07:35 |
「Java ランタイム、または Java 互換の開発キットを示しています。amd64 では、当該開発キットは openjdk-6-jdk です」 Debian -- wheezy の default-jdk パッケージに関する詳細 https://packages.debian.org/ja/wheezy/default-jdk [t] 2014-03-08 12:13:31 |
OpenJDK 7 がデフォルトじゃないけど、いちおう存在してる。 Debian -- wheezy の openjdk-7-jdk パッケージに関する詳細 https://packages.debian.org/ja/wheezy/openjdk-7-jdk [t] 2014-03-08 12:15:21 |
/etc/default/tomcat6 に JAVA_HOME=/usr/lib/jvm/java-6-openjdk 記述 # /etc/init.d/tomcat6 start [ ok ] Starting Tomcat servlet engine: tomcat6. [t] 2014-03-08 12:19:37 |
Tomcat と MySQL は復活したぽい。Ruby まわりがまだいまいちっぽいな。。 [t] 2014-03-08 12:22:10 |
Ruby が 1.9 に自動で上がってた。 # ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] [t] 2014-03-08 12:22:56 |
Wheezy にもまだ Ruby 1.8 は残っているみたいなので、まずはこっちをインストールしてみる。 / Debian -- wheezy の ruby1.8 パッケージに関する詳細 https://packages.debian.org/ja/wheezy/ruby1.8 [t] 2014-03-08 12:24:51 |
binmode がどーのこーのでエラーになってたから Ruby 1.8 から 1.9 になった影響ぽい。 [t] 2014-03-08 12:26:00 |
wheezy の Ruby のデフォルトは Ruby 1.9.3 になってる。 / Debian -- wheezy の ruby パッケージに関する詳細 https://packages.debian.org/wheezy/ruby [t] 2014-03-08 12:28:42 |
# aptitude install ruby-switch [t] 2014-03-08 12:29:58 |
# ruby-switch --list ruby1.8 ruby1.9.1 [t] 2014-03-08 12:30:09 |
# ruby-switch --set ruby1.8 [t] 2014-03-08 12:31:41 |
update-alternatives: /usr/bin/ruby (ruby) を提供するために 手動モード で /usr/bin/ruby1.8 を使います [t] 2014-03-08 12:31:51 |
update-alternatives: /usr/bin/gem (gem) を提供するために 手動モード で /usr/bin/gem1.8 を使います [t] 2014-03-08 12:31:54 |
Ruby 1.8 へ切り替え完了。 # ruby -v ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux] [t] 2014-03-08 12:32:09 |
OpenJDK 7 とか Ruby 1.9 とかも導入したいところだけど、まずはエラーログでも眺めて細かいところをつぶしていくかな。 [t] 2014-03-08 12:37:40 |
とりあえず Debian squeeze から wheezy へのアップグレード完了 \(^o^)/ [t] 2014-03-08 12:38:35 |
アップグレードを終えて
いちばん心配していたミラーリング RAID 1 設定について何も問題が起きなくてよかった。
参考 ⇒ [ヅ] Debian squeeze + RAID1 + GRUB2 (grub-pc) (2012-03-23)
もうひとつ心配していた MySQL のアップグレードも思ったよりラクに終わったのでよかったε-(´∀`*)
Java, Tomcat, Ruby のバージョンアップについてはまた落ち着いてからやろうと思う。
参考資料
tags: debian linux
Posted by NI-Lab. (@nilab)