10.0-RELEASE pkg install
FreeBSD 10.0-RELEASEが公開されて少し経ってしまったけれど、VMwareでためしてみる。
pkgng
10.0-RELEASEで標準のような扱いになったのでpkgと呼ぶべきかもしれないけれど、new generationのpkg管理ツール。pkg_*のツール類はさくっと削除されたので、新しいツールに移行しなければならない。
とりあえず使ってみると、debian系で利用できるapt-getのような感じ。使いやすいと思う。現時点で、すでにportsとも互換性がある。
これまで、インストールするportsのリストを作って、perlスクリプトでportsからコンパイルとインストールを自動化してきた。今後どのようにするのが良いのか考えてみた。基本的な方針は、pkgでインストールできるものはしたい。ただし、lang/php5のWITH_APACHEのように、portsからインストールしたいものもある。その他の大物として、math/RのWITH_ATLASがある*1。でも、必要なものはこの2つくらいかもしれない。
小飼弾さんが書いているように、portsからオプションをカスタマイズしたものは、pkg lockすることで、pkg updateを回避できるらしい。すごい。
これを使って新しいpkgインストールの手順を考えよう。
方針
基本的な方針は、何でも入れること! サーバー用途であろうとデスクトップ用途であろうと同じ構成のFreeBSD boxにする。デスクトップ環境を整えるだけならば、基本的にブラウザがちゃんと動けば、それなりには使える。でも、せっかくFreeBSD boxを構成するのだから、やりたいことを思いついた時にすぐできる環境が良い。自分が必要そうなものはすべてインストールしておく。
今までも、この方針でportsのリストを書いてきた。ただし、今回は、もうそれはobsoleteだろうと思われるものは削除する。
なるべく、簡単な手順が望ましいのでシェル・スクリプトを書く。情弱.jpさんのシェル・スクリプトは、FreeBSDをインストールした後の作業が、ほぼ完全にスクリプト化されていて、すごい。とてもインスパイア(笑)された。感謝。
ただ、pkgのリストは別に管理したい。pkgコマンドは、portsのwww/apache22のような表記を受け入れるので、いままでのportsリストを流用できる! やる気が出てくる。
デスクトップ環境をシェル・スクリプトで整える。KDE4と言いたいんだけど、現状KDE4はパッケージはなし、portsもコンパイルできなさそう。なので、MATEにする。とうとうgnome系に移行することになる。マテ茶はあんまり好きじゃないんだけど。。。
- ブラウザはFirefoxとChromiumの両方
- オフィスソフトはLibreOffice
- 画像編集ソフトはGIMP
- 動画ソフトはVLC
をインストールする。
pkgInstaller.sh
引数で指定したファイルに書かれたportsリストを順番にpkgでインストールするスクリプト。一行にpkgが分かるpkgネームを書く。apache22-2.2.26でもいいし、www/apache22でもよい。単にapache22でも良いようだ。#で始まる行はコメントで無視される。
pkgInstaller.sh
#!/bin/sh filename=$1 if [ ! -e ${filename} ]; then echo "${filename} does not exist. Stopped." exit 1 fi export ASSUME_ALWAYS_YES=yes cat ${filename} | grep -v "^#" | grep -v "^$" | while read line do pkg install ${line} done
こんな感じのportsリストファイルを用意した。
ports_list_1st.txt(一部。最後に全部を掲載する。)
# x11/xorg # japanese/ibus-mozc japanese/jls japanese/less japanese/nkf japanese/p5-Jcode japanese/kterm japanese/a2ps # editors/emacs japanese/mozc-el japanese/teTeX print/dvipdfmx print/yatex print/latex-beamer textproc/prosper japanese/dvi2tty # net/samba36 www/apache22 databases/mysql55-server # x11/mate x11/slim x11-themes/slim-themes japanese/font-std japanese/font-vlgothic japanese/font-takao # (後略)
freebsdPostInstall.sh
あとは、これを呼び出すスクリプトを書く。やることの順番としては、
- freebsd-update
- portsnap
- /etc/rc.confに追記
- /etc/fstabに追記
- ./pkgInstaller.shでports_list_1st.txtに書かれたpkgをインストール
- www/linux-f10-flashplugin11とjapanese/acroread9をportsからインストール
- /etc/sysctl.confに追記(chrome用)
- /etc/rc.conf.localを作成
- /usr/local/etc/hal/fdi/policy/10-x11-kbd.fdiを作成
- lang/php5をWITH_APACHEのオプションだけつけてportsからインストール
- ./pkgInstaller.shでports_list_2nd.txtに書かれたpkgをインストール
freebsdPostInstall20140311.sh
#!/bin/sh freebsd-update fetch freebsd-update install portsnap fetch extract cp /etc/rc.conf /etc/rc.conf.ORG cat >> /etc/rc.conf <<EOF # sendmail off sendmail_enable="NO" sendmail_submit_enable="NO" sendmail_outbound_enable="NO" sendmail_msp_queue_enable="NO" # other settings snddetect_enable="YES" mixer_enable="YES" linux_enable="YES" EOF cp /etc/fstab /etc/fstab.ORG cat >> /etc/fstab <<EOF proc /proc procfs rw 0 0 linprocfs /compat/linux/proc linprocfs rw 0 0 EOF ./pkgInstaller.sh ports_list_1st.txt make BATCH=yes -C /usr/ports/www/linux-f10-flashplugin11 install clean make BATCH=yes -C /usr/ports/japanese/acroread9 install clean cp /etc/sysctl.conf /etc/sysctl.conf.ORG cat >> /etc/sysctl.conf <<EOF kern.ipc.shm_allow_removed=1 EOF cat >> /etc/rc.conf.local <<EOF dbus_enable="YES" hald_enable="YES" avahi_daemon_enable="YES" avahi_dnsconfd_nable="YES" #vmware_guest_vmblock_enable="YES" #vmware_guest_vmhgfs_enable="YES" #vmware_guest_vmmemctl_enable="YES" #vmware_guest_vmxnet_enable="YES" #vmware_guestd_enable="YES" slim_enable="YES" EOF cat >> /usr/local/etc/hal/fdi/policy/10-x11-kbd.fdi <<EOF <?xml version="1.0" encoding="ISO-8859-1"?> <deviceinfo version="0.2"> <device> <match key="info.capabilities" contains="input.keyboard"> <match key="info.udi" string="/org/freedesktop/Hal/devices/atkbd_0"> <merge key="input.x11_options.XkbRules" type="string">xorg</merge> <merge key="input.x11_options.XkbModel" type="string">jp106</merge> <merge key="input.x11_options.XkbLayout" type="string">jp</merge> <merge key="input.x11_options.XkbOptions" type="string">ctrl:nocaps</merge> </match> </match> </device> </deviceinfo> EOF make -C /usr/ports/lang/php5 config make -C /usr/ports/lang/php5 config-recursive make -C /usr/ports/lang/php5 install clean ./pkgInstaller.sh ports_list_2nd.txt cat <<'EOF' Don't forget these commands before rebooting. # cp dot.xinitrc /home/${LOGNAME}/.xinitrc # chown ${LOGNAME}:${GROUP} /home/${LOGNAME}/.xinitrc EOF
lang/php5は最初のmake configでapacheだけオプションを追加し、次のmake config-recursiveはすべてオプションを変更せずOKすることを想定している。lang/php5のあとに入れるべきものをports_list_2nd.txtに書いてある。lang/php5が必要ない場合は、
make -C /usr/ports/lang/php5 config make -C /usr/ports/lang/php5 config-recursive make -C /usr/ports/lang/php5 install clean ./pkgInstaller.sh ports_list_2nd.txt
の部分を削除するか、コメントアウトすることでfreebsdPostInstall.shの処理の間、まったく入力の必要がなくなる。
freebsdPostInstall.shが実行されたあとrebootするとログインマネージャのslimが起動する。なのでユーザーに$HOME/.xinitrcがないとログインできなくなる。次のような.xinitrcを作成する。
dot.xinitrc($HOME/.xinitrc用)
export LANG=ja_JP.UTF-8 mozc_server_start export XIM=ibus export GTK_IM_MODULE=ibus export QT_IM_MODULE=xim export XMODIFIERS=@im=ibus export XIM_PROGRAM="ibus-daemon" export XIM_ARGS="--daemonize --xim" #vmware-user-suid-wrapper & exec mate-session
fonts.conf(3月12日追記、下記ファイルは変更済み)
これらの作業の後に、rebootするとデスクトップ環境を整えられる。しかし、これだけだと日本語フォントの一部が少し変なところがある。特にMATE端末のフォントが変なので、使いにくい。
後藤大地さんのこの記事で扱われているfonts.confが使いやすいので、使わせてもらう。感謝。この記事では、$HOME/.fonts.confに置くと書いているけれど、現在は$HOME/.config/fontconfig/fonts.confが良いようだ。このfonts.confを使うことで、フォントの問題は改善される。
まとめ
これらのスクリプト類をまとめた。
freebsdPostInstall.tar.gz (3月12日追記分のファイルを追加)
FreeBSDのインストールを終了した後、/root/にfreebsdPostInstall.tar.gzを展開したとする。(bsdinstallでユーザーの追加はしてないとする。)
# mkdir /home (これをしないと/homeは/usr/homeへのシンボリックリンクとなる) # adduser (ここでfreebsdというユーザーを追加したとする) # cd /root/freebsdPostInstall # ./freebsdPostInstall20140311.sh (約2時間程度かかる) # cp dot.xinitrc /home/freebsd/.xinitrc # chown freebsd:freebsd /home/freebsd/.xinitrc # mkdir -p /home/freebsd/.config/fontconfig # cp fonts.conf /home/freebsd/.config/fontconfig/ # chown -R freebsd:freebsd /home/freebsd/.config # shutdown -r now
これでブートしたら、めでたくデスクトップ環境が整う。
VMwareの場合は、次の修正をしておけば、この手順でデスクトップ環境を整えられることができた。
注意点としては、ports_listと呼んでいるけれどもpkgでインストールできるもののリストでなければならない。名前がちょっとおかしいかな。
2014/03/22追記:訂正記事あり
訂正
修正されたファイル:freebsdPostInstall20140322.tar.gz
VMwareの場合の修正
- freebsdPostInstall20140311.shの
cat >> /etc/rc.conf.local <<EOF dbus_enable="YES" hald_enable="YES" avahi_daemon_enable="YES" avahi_dnsconfd_nable="YES" #vmware_guest_vmblock_enable="YES" #vmware_guest_vmhgfs_enable="YES" #vmware_guest_vmmemctl_enable="YES" #vmware_guest_vmxnet_enable="YES" #vmware_guestd_enable="YES" slim_enable="YES" EOF
の部分の#を消す。
- ports_list_1st.txtの
#x11-drivers/xf86-video-vmware #emulators/open-vm-tools
最後の2行の#を消す。
- dot.xinitrc
#vmware-user-suid-wrapper &
の#を消す。
MATEが起動したら
[iBusの設定]からMozcの設定をする必要がある。
あとの問題は、fontconfigが変なので、$HOME/にfontconfigディレクトリが作られて、cashファイルのようなものができてしまう。消しても問題ないようだ。どうして作られるのかはよくわからない。
ports_list
最後にports_list_1st.txtとports_list_2nd.txtを全部掲載する。
ports_list_1st.txt
# x11/xorg # japanese/ibus-mozc japanese/jls japanese/less japanese/nkf japanese/p5-Jcode japanese/kterm japanese/a2ps # editors/emacs japanese/mozc-el japanese/teTeX print/dvipdfmx print/yatex print/latex-beamer textproc/prosper japanese/dvi2tty # net/samba36 www/apache22 databases/mysql55-server # x11/mate x11/slim x11-themes/slim-themes japanese/font-std japanese/font-vlgothic japanese/font-takao # security/sudo sysutils/screen ports-mgmt/portupgrade net/rsync ftp/wget devel/llvm32 benchmarks/unixbench # java/openjdk6 # www/firefox www/firefox-i18n www/chromium java/icedtea-web emulators/linux_base-f10 www/nspluginwrapper # japanese/libreoffice graphics/gimp multimedia/vlc net/grive emulators/virtualbox-ose # #x11-drivers/xf86-video-vmware #emulators/open-vm-tools
ports_list_2nd.txt
lang/php5-extensions ftp/php5-curl converters/php5-mbstring databases/php5-mysql security/php5-openssl archivers/php5-zip japanese/php_doc www/mediawiki121 lang/ocaml