freebsd-update コマンド実行中、今まで気になっていたこと

FreeBSD OSを更新しなくてはならない場合、リソースに余裕があるなら freebsd-update -r コマンドで更新する方が楽です。コマンドを発行して画面のメッセージ通りにコマンドを実行して行けば、ある程度サービスを継続したまま、ダウンタイムを最小にし、数時間後にはOS更新作業が終了します。

この作業で面倒だと感じる点が2つ。

  1.  (y / n) をタイプしなくてはならない項目で n を選択すると、更新作業最初からやり直し。
    間違った設定に気づいても、Y  をタイプし、OS更新後に手動で編集した方が早くない?でもブートに失敗したら・・・って毎度悩みます。
  2. 旧バージョンファイルと新バージョンファイルの間に衝突する記述がある場合、diff によるマーク付きで手動で修正する部分が指示されます。その場合、以下 赤字の部分をどのように、編集すべきなのか?
Attempting to automatically merge changes in files... done.

The following file could not be merged automatically: /etc/mail/sendmail.cf
Press Enter to edit this file in vi and resolve the conflicts
manually...

##### $Id: cfhead.m4,v 8.122 2013-11-22 20:51:13 ca Exp $ #####
##### $Id: cf.m4,v 8.33 2013-11-22 20:51:13 ca Exp $ #####
<<<<<<< current version
##### $FreeBSD: releng/9.3/etc/sendmail/freebsd.mc 266713 2014-05-26 20:13:13Z gshapiro $ #####
=======

##### $FreeBSD: releng/10.3/etc/sendmail/freebsd.mc 285304 2015-07-09 05:25:47Z gshapiro $ #####

>>>>>>> 10.3-RELEASE

A. マークの部分を残して、不要の部分を消去すれば、あとはシステムが編集してくれる?

##### $Id: cfhead.m4,v 8.122 2013-11-22 20:51:13 ca Exp $ #####
##### $Id: cf.m4,v 8.33 2013-11-22 20:51:13 ca Exp $ #####
<<<<<<< current version
##### $FreeBSD: releng/9.3/etc/sendmail/freebsd.mc 266713 2014-05-26 20:13:13Z gshapiro $ #####
=======
>>>>>>> 10.3-RELEASE

B. マークを含めて不要な部分を全部削除する?

##### $Id: cfhead.m4,v 8.122 2013-11-22 20:51:13 ca Exp $ #####
##### $Id: cf.m4,v 8.33 2013-11-22 20:51:13 ca Exp $ #####
##### $FreeBSD: releng/10.3/etc/sendmail/freebsd.mc 285304 2015-07-09 05:25:47Z gshapiro $ #####

の、どちらが行うべき作業なのか、ずっと迷ってきました。

freebsd-update でOSを更新するホストは、リモートホストであることが多く、再起動に失敗すると誰かが現場に行ってコンソールキーボードから作業をすることになり、ダメージが大きすぎるので、上記A を試すことはせず無難にB を実行していました。
しかし、面倒くさいので、システム側で編集してくれるなら、A の方が楽。

今回、ようやく疑問を解消する機会が訪れました。

自宅サーバーを、freebsd-update コマンドではなく、ハードウェアの交換という手段で置き換え、旧サーバーから取り出すべきデータ吸い上げ作業も管理用したことから、この旧サーバー FreeBSD 9.3 を freebsd-update -r コマンドで更新しました。Celeron 1200MHz では「freebsd-update install」まで2時間半くらい掛かりましたけどね。

設定が衝突していて、手動で作業すべきファイルは(確か)5ファイルありましたが、sendmail.cf を例に確認した結果を記録します。

上記、A の編集結果;つまりマーク部分を残したまま編集を終了;リブートを行ったところ、次のようにマークの部分が解釈されず、エラーとなってログに記録が残りました。

Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 33: unknown configuration line "<<<<<<< current version"
Feb  8 02:48:45 cafe kernel: 
Feb  8 02:48:45 cafe sm-mta[1145]: NOQUEUE: SYSERR(root): /etc/mail/sendmail.cf: line 33: unknown configuration line "<<<<<<< current version" 
Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 34: unknown configuration line "=======" 
Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 38: unknown configuration line ">>>>>>> 10.3-RELEASE"
Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 49: unknown configuration line "<<<<<<< curre nt version" 
Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 50: unknown configuration line "=======" 
Feb  8 02:48:45 cafe kernel: 554 5.0.0 /etc/mail/sendmail.cf: line 51: unknown configuration line ">>>>>>> 10.3-RELEASE"

結論は、Bのようにマークごと削除しなくてはならないということ。今までの作業内容で正しかったわけです。(この後、他のconfファイルの中に残ったマークを、せっせと消しに行きました。)

マークは、OSのバージョンによって固定なので、挿入だけじゃなく、残っていてもシステム側で自動削除してくれないものかと思いますが、難しいのかな?

時間は掛かりましたが、結果が判明し、スッキリしました。

コメントを残す