Monthly Archives: 3月 2008

7.0-RELEASEにしたらルートパーティションの空き容量がなくなった件について

Pocket

webサーバとして使用しているマシンを7.0-RELEASEにした。

古いマシンなので、ソースからのアップデートは出来ず、ISOイメージを使ってさっさと終わらせたのだが、ふと気がつくとルートパーティションの容量がぎりぎりになっている。

これは、7.0-RELEASEからカーネルとカーネルモジュールのシンボルファイルもインストールされるようになったため。

$ uname -a
FreeBSD blue.local 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008     root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  i386
$ du -sh /boot/kernel
112M    /boot/kernel

というように、/boot/kernelで100M超。

シンボルファイルによって、何か障害があったときの原因究明を行いやすくするためだが、6系以前の感覚でいると、ルートパーティションの容量がまったく足りない。

自分で調査もしないし、バグレポートを出すつもりもない場合には必要ないので、/boot/kernel配下の*.symbolというファイルをすべて削除すればよい。

あるいは、カーネルコンフィグファイルの以下の行をコメントアウトしておけば、次回以降のカーネルビルドでシンボルファイルが作られなくなる。

makeoptions    DEBUG=-g                # Build kernel with gdb(1) debug symbols

あるいは/usr/src/UPDATINGの以下記載を参照のこと。

20060118:
This actually occured some time ago, but installing the kernel
now also installs a bunch of symbol files for the kernel modules.
This increases the size of /boot/kernel to about 67Mbytes. You
will need twice this if you will eventually back this up to kernel.old
on your next install.
If you have a shortage of room in your root partition, you should add
-DINSTALL_NODEBUG to your make arguments or add INSTALL_NODEBUG="yes"
to your /etc/make.conf.
No tags for this post.

portsのdistfiles取得先を出来るだけhttpサーバにする方法。

Pocket

FreeBSD-questionsに流れていたのでメモ。

/etc/make.confに下記の行を加えると、portsのdistfileを取得する際、httpサーバを優先的に選んでくれるようになる。

MASTER_SORT_REGEX?= ^http://
No tags for this post.

mergemasterを少しだけ楽に

Pocket

200812追記。本件は古い内容なので、こちらへ。

FreeBSDをアップグレードするときにいつも面倒なのが/etc配下のファイルを更新すること。

アップグレードの手引きには素っ気なくmergemasterと書いてある。

mergemasterは新旧/etc配下ファイルの差分をチェックし、必要であればユーザに選択、マージさせるよくできたスクリプト。

だが、手引きの通り素のまま実行すると、間欠的にファイルの差分チェックを求められるので面倒だ。

/etc配下にはご存知の通りpasswdなど超重要ファイルがあり、失敗するといろいろとヘビーな状態になるので緊張するが、この、間欠的というのがミスのもととなる。

が、-a、-rオプションを使えばそれなりに楽にはなる。

アップグレードする度にいつも何だったっけなあ、と思うのでメモっておく。

# mergemaster -siva
# mergemaster -sivrt <一回めで使用したテンポラリディレクトリ>

aオプションを指定すると、とりあえず差分のないファイルをインストールしてくれる。

残りのファイル、つまり差分のあるファイルはテンポラリディレクトリに残る。

で、tオプションでそのテンポラリディレクトリを指定し、rオプションをmergemasterに与えれば、アップグレードにより差分の発生したファイルのみを対象に作業ができるので効率的、という話。

なお、sオプションは各ファイルの照合を一行ずつやります、というオプションで、iは照合時、インストール先にファイルがなければインストールする、というオプション。詳しくはman mergemaster。

テンポラリディレクトリは、-sivaで作業した際に、これこれのファイルがインストールされていませんよ、と教えてくれるのだが、そのときにディレクトリも教えてくれるのでそれを指定する。

# mergemaster -siva
<中略>
/var/tmp/temproot.0304.23.20.42/COPYRIGHT
# mergemaster -sivrt /var/tmp/temproot.0304.23.20.42/

まあ、見て分かるように/var/tmp/temprootの後は、日付、時間、分、秒と並んでるので、一回めの出力結果をわざわざ注意して見てなくてもいいけど。

No tags for this post.