[トップ] [自作PC] [PCの履歴] [フリーソフト] [プロバイダー選び] [レンタルサーバー]
[ワイマックスで損しない方法] [VPS比較] [フレッツ光東西でギガビットインターネット接続] [着メロ] [MSX] [ツイッターでポイントを貯めよう! ]

東京電力(時分) 万kW / 万kW (.9%) 東北電力(時分) 万kW / 万kW (.2%)
関西電力(時分) 万kW / 万kW (.4%) 九州電力(時分) 万kW / 万kW (.6%)
北海道電力(時分) 2.2万kW / 3.4万kW (.6%)

FreeBSDメモ mergemasterは-sivaでなく-UPiで

[FreeBSDメモに戻る]

  • FreeBSDメモ mergemasterは-sivaでなく-UPiで
    • mergemasterは-sivaでなく-UPiで
      • mergemasterをさらにさらにさらに早く
    • 参考までに
    • ついでに、9.0-CURRENTのビルド
    • p.s
    • アンケート
    • このことに関する話題

[こちら]、及び[こちら]より転載

mergemasterは-sivaでなく-UPiで

mergemasterについて、FreeBSD-questionsに面白い投稿
http://lists.freebsd.org/pipermail/freebsd-questions/-September/.html)があった。

もし結論を早く知りたい人がいれば、結末から読んでください。

mergemasterにはかなり前に自動アップデート機能が追加されていたらしく…。

具体的には、mergemasaterに-Uオプションを与えて実行する。

これは、ユーザ変更がされていないファイルであれば自動的にアップデートするというもの。

便利は便利なのだが、その性質上、ユーザ変更の有無を比較するための原本が必要になる。

その原本が/var/db/mergemaster.mtree。

今までに何度かmergemasterを実行していれば上記ファイルはあるはずだが、ない場合には「ソースをアップデートする前に」mergemasterを一回カラ打ちする必要がある。

  • 実行例
# mergemaster
*** Unable to find mtree database. Skipping auto-upgrade.

*** Creating the temporary root environment in /var/tmp/temproot
 *** /var/tmp/temproot ready for use
 *** Creating and populating directory structure in /var/tmp/temproot

mtree -eU  -f /usr/src/etc/mtree/BSD.root.dist -p /var/tmp/temproot/
(略)

こうしておけば、次からmergemaster -Uとやるだけで、かなりのファイルを自動アップデートしてくれて楽になるはず。

しかし、自動アップデートはやはり怖いので、入れ替え前のファイルはどこかに保存しておきたい。だから-Pオプションも追加。バックアップは/var/tmp/mergemaster/preserved-files-`date %y%m%d-%H%M%S`に作られる。

さらに、アップグレードにより新規に追加されたファイルは問答無用でインストールしていいはずなので、-iオプションも追加。

つまりmergemaster -UPi

ところで、mergemasterの設定ファイルであるmergemaster.rcは/usr/share/examples配下にない。何でないのだろう、と思っていたのだが、なんとmergemasterのマニュアル内にあった。最後まで読んでなかったよ…。

というわけで、以下のファイルを/etc/mergemaster.rcとして保存しておけばオプション要らず。

  • /etc/mergemaster.rc
AUTO_INSTALL=yes
AUTO_UPGRADE=yes
PRESERVE_FILES=yes
PRESERVE_FILES_DIR=/var/tmp/mergemaster/preserved-files-`date %y%m%d-%H%M%S`
IGNORE_MOTD=yes
VERBOSE=yes

AUTO_UPGRADEが-Uオプションに対応するが、現時点(7.1-BETA2)ではマニュアルに記載されていない。

4行目以降はmergemasterのマニュアルを参考に書いた。

PRESERVE_FILES_DIRはバックアップファイルを置くディレクトリ書式の指定。

IGNORE_MOTDはmotdを無視する設定。

mergemasterをさらにさらにさらに早く

mergemasterについては、mergemasterを少しだけ楽に、mergemasterは-sivaでなく-UPiで。とやってきたが、つい先頃、7.1-STABLEと7.1-RELEASEを行き来した際、CVS Idが違うだけで「どうするよ?」と山ほど聞かれたのにウンザリして、改めてmergemasterのmanを読んだら解決したのでメモ。

結論をさっさと書くと、下記が俺の/etc/mergemaster.rc

ポイントは最下行。この指定によりCVS Idを無視して比較してくれるので、かなり楽になる。

  • /etc/mergemaster.rc
AUTO_UPGRADE=yes
AUTO_INSTALL=yes
IGNORE_FILES='/etc/motd'
PRESERVE_FILES=yes
VERBOSE=yes
DIFF_OPTIONS='-I$FreeBSD:.*[$]'

manから引用すると下記の通り。

#Additional options for diff.  This will get unset when using -s.
#DIFF_OPTIONS='-I$FreeBSD:.*[$]'        # Ignores CVS Id tags

注意すべきは、この設定はコマンドラインオプションでは指定できず、/etc/mergemaster.rcに記載しておく必要がある点。

まあ、上記のようにすれば後はmergemasterと叩くだけだから。

なお、以前の記事でmergemaster.rc内に記載していたIGNORE_MOTDオプションは今後無くなる運命なので、IGNORE_FILESとして/etc/motdを指定すること。

参考までに

テスト用VirtualBoxのFreeBSDマシン (8.2-RELEASE) を何も考えずに容易にアップデートできました。

ついでに、9.0-CURRENTのビルド

  • releng-supfile (注:CURRENT版を取得するものです)
*default host=cvsup.local
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix

src-all

  • ports-supfile
*default host=cvsup.local
*default base=/usr
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix

ports-all

  • /etc/mergemaster.rc
AUTO_UPGRADE=yes
AUTO_INSTALL=yes
IGNORE_FILES='/etc/motd'
PRESERVE_FILES=yes
VERBOSE=yes
DIFF_OPTIONS='-I$FreeBSD:.*[$]'

  • コマンドライン
#cvsup releng-supfile
#cd /usr/src
#make buildkernel kernconf=GENERIC
#make buildworld
#make installkernel kernconf=GENERIC
#make installworld
#mergemaster -UPi
#reboot

え?シングルユーザーに移行してないって?

p.s

9.0はこんなブート画面になるんだね@@
freebsd9beta2.png

アンケート

このことに関する話題

このページのトラックバックURL
https://daiba.cx/?cmd=tb&tb_id=8fafccf6f5c5bd3c

リンク元

FreeBSDメモ/mergemasterは-sivaでなく-UPiでのトラックバックはありません。