Sambaの4.2.0リリースに伴い、3系列サポートが終了する、とのことなので、4.xに移行した。
顛末を記す。

Samba 3系列のサポート終了について

一応はソースを。
4.2.0のリリースノートに記載されている。

https://www.samba.org/samba/history/samba-4.2.0.html

With the final release of Samba 4.2, the last series of Samba 3 has been discontinued! People still running 3.6.x or earlier,should consider moving to a more recent and maintained version (4.0 - 4.2).

Samba 4について(Active DirectoryにしなくてもOK)

Samba 4はActive Directoryに対応しているが、従来のドメイン管理(NT4-style)もできる。
Active Directory対応の追加により、従来機能が差し替わることはないし、テストも続けられる。

なお、3から4へのアップデートで、自動的にActive Directoryへ変更されることはない。

移行先の選定(4.1にした)

どうせ移行するなら4.2がいいなと思ったんだけど、2015/4/28現在、4.2のports/packageはない。
しかたなく4.1にした。

移行にあたっての注意

4へのアップグレードにあたり注意すべきことは以下の三点である。
うっかりすると、マシン起動時にsambaが起動しなかったり、共有が消えたり、ユーザがアクセスできなくなったりする。あな恐ろし。

  1. rc.conf(マシン起動時のsamba起動設定)の書き換え
  2. samba設定ファイルの移行
  3. sambaユーザデータベースの移行

インストール(アップグレード)の流れ

全体の流れを示す。

  1. samba3を停める。
  2. samba3の削除
  3. samba4のインストール
  4. rc.confの書き換え
  5. 設定ファイルの移管
  6. ユーザーデータベースの移管
  7. 起動

Samba3の停止

アンインストールの前に。
なお、serviceコマンドで使うSambaの識別子は、3の"samba"が4では"samba_server"に変わる(後述)。

$ sudo service samba stop
Stopping smbd.
Waiting for PIDS: 654.
Stopping nmbd.
Waiting for PIDS: 651.

Samba3の削除とSamba4のインストール

pkgならsamba4のインストール時にsamba3を削除してくれる。
samba4インストール後のメッセージは超重要。

$ sudo pkg install samba41
(略)
Conflicts with the existing packages have been found.
One more solver iteration is needed to resolve them.
The following 6 packages will be affected (of 0 checked):

(nobwak注 samba3は自動的に削除される)
Installed packages to be REMOVED:
samba36-3.6.25

New packages to be INSTALLED:
cyrus-sasl: 2.1.26_9
libinotify: 20140622
gamin: 0.1.10_8
ldb: 1.1.19_1
samba4: 4.1.17 
(略)
Message for samba4-4.1.17 :
 ===============================================================================
How to start: http://wiki.samba.org/index.php/Samba4/HOWTO
* Your configuration is: /usr/local/etc/smb4.conf
* All the relevant databases are under: /var/db/samba4
* All the logs are under: /var/log/samba4
* Provisioning script is: /usr/local/bin/samba-tool
(略)
Bug reports should go to the: https://bugzilla.samba.org/
===============================================================================

rc.confの書き換え

本記事の手順上、rc.confの書き換えをここに記載しているが、本来は設定ファイルの正常性確認や検証を済ませてからのほうがよい。

sambaの3と4では、rc.confの書式が違う。
ここを忘れたままだと、serviceコマンドでのsambaサーバの操作ができないし、次回のマシン再起動時にsambaが自動起動しない。

samba3だと;
samba_enable=“YES”
samba4だと;
samba_server_enable=“YES”

したがって、rc.confは以下のようになる。
もちろん、samba3の方は、不要なら削除して構わない。

# samba_enable="YES"
samba_server_enable="YES"

設定ファイルの移管

sambaの3と4では、設定ファイルの場所は/usr/local/etc/の下で変更ないのだが、ファイル名が異なる。
気づかずにsamba4を起動すると共有フォルダが消える。

samba3だと;
smb.conf
samba4だと;
smb4.conf

samba3の書式はsamba4でも有効なので、コピーするかリンクを張る。
私はリンクにしておいた。

$ cd /usr/local/etc/
$ sudo ln -s ./smb.conf ./smb4.conf
$

ユーザーデータベースの移管

samba向けのユーザデータベースも移管が必要である。
これをしないとユーザごとの認証ができない。
これには、ほとほと困らされた。

ユーザデータベースの置き場所は以下の通り。

samba3だと;
/usr/local/etc/samba/
samba4だと;
/var/db/samba4/private/

したがって、/var/db/samba4/privateとディレクトリを作成し、/usr/local/etc/samba/の下にあるファイルをコピーすればよい。

なお、samba4のユーザデータベース置き場をどう調べたかというと、ビルドオプションを表示させてPRIVATE_DIRを見た。
(こんなのすぐ分かるかよ!)

$ smbd -b|less

Build environment:
   Built by:    root@101i386-default-job-07
   Built on:    Thu Apr 16 17:40:08 UTC 2015
   Built using: cc
   Build host:  FreeBSD 101i386-default-job-07 10.1-RELEASE-p9 FreeBSD 10.1-RELEASE-p9 i386
   SRCDIR:      /wrkdirs/usr/ports/net/samba41/work/samba-4.1.17/source3
   BUILDDIR:    /wrkdirs/usr/ports/net/samba41/work/samba-4.1.17/source3

Paths:
   SBINDIR: /usr/local/sbin
   BINDIR: /usr/local/bin
   CONFIGFILE: /usr/local/etc/smb4.conf
   LOGFILEBASE: /var/log/samba4
   LMHOSTSFILE: /usr/local/etc/lmhosts
   LIBDIR: /usr/local/lib
   MODULESDIR: /usr/local/lib/shared-modules
   SHLIBEXT: so
   LOCKDIR: /var/db/samba4
   STATEDIR: /var/db/samba4
   CACHEDIR: /var/db/samba4
   PIDDIR: /var/run/samba4
   SMB_PASSWD_FILE: /var/db/samba4/private/smbpasswd
   PRIVATE_DIR: /var/db/samba4/private
(以下略)

起動

起動前にtestparmでsmb4.confのチェックをするのはいい習慣であります。

$ testparm
Load smb config files from /usr/local/etc/smb4.conf
Processing section "[fileshare]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
(略)

では起動。
rc.confでsamba_server_enable=“YES"と記載しているなら、以下の通り。

$ sudo service samba_server start
Performing sanity check on Samba configuration: OK
Starting nmbd.
Starting smbd.
Starting winbindd.
$

していないなら、以下のように「onestart」にする。

$ sudo service samba_server onestart

以上。