FreeBSD」カテゴリーアーカイブ

FreeBSD アップデート (9.2 → 10.1)

FreeBSD 9.2 のホストを 10.1 に更新する。基本的には freebsd-update で問題ない。

$ sudo freebsd-update -r 10.1-RELEASE upgrade
Password:
Looking up update.FreeBSD.org mirrors... 5 mirrors found.
Fetching metadata signature for 9.2-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata patches.. done.
Applying metadata patches... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic world/base

The following components of FreeBSD do not seem to be installed:
src/src world/doc world/games

Does this look reasonable (y/n)? y

Fetching metadata signature for 10.1-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 9.2-RELEASE for merging... done.
Preparing to download files... done.
Fetching 10177 patches.....10....20....30....40....50....60....70....80....90....100....(略)....10010....10020....10030....10040....10050....10060....10070....10080....10090....10100....10110....10120....10130....10140....10150....10160....10170... done.
Applying patches... done.
Fetching 1719 files... done.
Attempting to automatically merge changes in files... done.

The following changes, which occurred between FreeBSD 9.2-RELEASE and
FreeBSD 10.1-RELEASE have been merged into /etc/group:

(略)

The following files will be removed as part of updating to 10.1-RELEASE-p3:
/boot/kernel/amd.ko
/boot/kernel/amd.ko.symbols
/boot/kernel/atadisk.ko
/boot/kernel/atadisk.ko.symbols
/boot/kernel/atapicam.ko
/boot/kernel/atapicam.ko.symbols
/boot/kernel/atapicd.ko
/boot/kernel/atapicd.ko.symbols
/boot/kernel/atapifd.ko
/boot/kernel/atapifd.ko.symbols
(略)

The following files will be updated as part of updating to 10.1-RELEASE-p3:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
(略)
/var/cache
/var/db/mergemaster.mtree
/var/empty
/var/yp/Makefile.dist
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
$ sudo freebsd-update install
Password:
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
$ 

ここで再起動…したら起動途中で止まってしまった。

Trying to mount root from ufs:/dev/ada0p2 [rw]...
mountroot: waiting for device /dev/ada0p2 ...
Mounting from ufs:/dev/ada0p2 failed with error 19.

Loader variables:
  vfs.root.mountfrom=ufs:/dev/ada0p2
  vfs.root.mountfrom.options=rw

Manual root filesystem specification
  : [options]
      Mount  using filesystem 
      and with the specified (optional) option list.

    eg. ufs:/dev/da0s1a
        zfs:tank
        cd9660:/dev/acd0 ro
          (which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)

?                 List valid disk boot devices
.                 Yield 1 second (for background tasks)
      Abort manual input

mountroot>

“?” を叩いて有効なデバイスの一覧を見ると、ada0p2 の代わりに da0p2 があったのでそれを入力したら起動した。

/dev/fstab を ada0p2 → da0p2, ada0p3 → da0p3 と書き換えて正常に起動することを確認。

FreeBSD 9.2 で pkgng へ移行する

今どきの FreeBSD ではサードパーティアプリケーションは pkgng で管理するもののようだ。
というわけで、FreeBSD 9.2 で pkgng への移行作業を行うことにした。

参考:
http://www.freebsd.org/doc/ja/books/handbook/pkgng-intro.html

これまで使ってきた ports のデータベースは変換しないといけないらしい。
ハンドブックにしたがって作業する。

# /usr/sbin/pkg
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
...
# pkg2ng
...
#

そして、/etc/make.conf に

WITH_PKGNG=yes

を追加しておく。

さてこれで pkg upgrade でパッケージの更新ができるはずなのだが、
やってみるとやれ設定ファイルがおかしいだの、リポジトリがないだのいわれて
一向に動かない。

pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file


pkg No valid repository found.

追加の設定が必要だった。pkg のバージョンが新しくてハンドブックが追いついていない模様。

  • /usr/pkg/local/etc/pkg.conf は削除
  • ディレクトリ /usr/local/etc/pkg/repos を作成
  • 設定ファイル /usr/local/etc/pkg/repos/FreeBSD.conf を作成

# rm /usr/local/etc/pkg.conf
# mkdir -p /usr/local/etc/pkg/repos
# vi /usr/local/etc/pkg/repos/FreeBSD.conf

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
  mirror_type: "srv",
  enabled: true
}

参考: http://april.fool.jp/blogs/2013/12/pkgng-1-2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%AB%E4%BC%B4%E3%81%86%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C%E3%80%82/

オフィシャルにはどこに情報出てるんですかね?
pkg help ではわからなかったんですが。

# pkg update

インストールされてる perl が 5.12 と古くて自動で更新できなかった。

たとえば以下のような関連付けを行うと更新できる。

# pkg set -o lang/perl5.12:lang/perl5.16
# pkg upgrade

FreeBSD 9.0 → 9.2

ほったらかしにしてあった FreeBSD 9.0 を 9.2 にアップグレードした。

参考: http://www.freebsd.org/doc/ja/books/handbook/updating-upgrading-freebsdupdate.html

$ sudo freebsd-update -r 9.2-RELEASE upgrade

The following components of FreeBSD do not seem to be installed:
src/src

Does this look reasonable (y/n)? y

The following file could not be merged automatically: /etc/group
Press Enter to edit this file in /usr/bin/vi and resolve the conflicts
manually…

(自動でマージできなかった設定ファイルを手作業で編集)

(自動でマージされたファイルの確認)

To install the downloaded upgrades, run “/usr/sbin/freebsd-update install”.
$ sudo freebsd-update install
Installing updates…
Kernel updates have been installed. Please reboot and run
“/usr/sbin/freebsd-update install” again to finish installing updates.
$ sudo shutdown -r now

(再起動)

$ sudo freebsd-update install

$

ASTEC-X の日本語入力

ASTEC-X 8.0 で Windows の IME 使って日本語入力するための設定。IME は Google 日本語入力を使用。ASTEC-X のコントロールパネルの「日本語入力」で XIM プロトコルは有効にしておく。

Emacs24 なら環境変数 LANG と XMODIFIERS を設定する。XMODIFIERS に何を設定するのだったかをよく忘れる。正解は @im=ASTEC_IMS 。LANG は ja_JP.eucJP とかでも可。

export LANG=ja_JP.UTF-8
export XMODIFIERS=@im=ASTEC_IMS
emacs

gedit なら、上記に加えて GTK_IM_MODULE の設定が必要。

export LANG=ja_JP.UTF-8
export XMODIFIERS=@im=ASTEC_IMS
export GTK_IM_MODULE=xim
gedit

update to 6.2-RELEASE

$ cd <srcdir>
$ cvs update -PdAC -I! -r RELENG_6_2_0_RELEASE
$ MAKEOBJDIRPREFIX=<wrkdir> make buildworld
$ MAKEOBJDIRPREFIX=<wrkdir> make buildkernel
$ MAKEOBJDIRPREFIX=<wrkdir> sudo make installkernel
<reboot>
$ sudo  mergemaster -p -m <srcdir>/etc
$ MAKEOBJDIRPREFIX=<wrkdir> sudo make installworld
$ MAKEOBJDIRPREFIX=<wrkdir> sudo make delete-old
$ sudo  mergemaster -ai -m <srcdir>/etc
<reboot>