FreeBSDセットアップ「つまみぐい」その3 アプリケーションの導入と設定(必要なもののみ実行) 設定ファイルの所在と役割 http://www.wakhok.ac.jp/~kanayama/summer/02/site/node196.html http://x68000.q-e-d.net/~68user/unix/config.html http://sakura.take-labo.jp/freebsd/i386-system.php # rcのつくファイルは一般に、起動オプションや環境変数などを設定している。 # .で始まるファイル(やフォルダの中身)は一般に、各種環境を設定している。 # tabで終わるファイルも、設定ファイルであることが多い。 # conf、cfg、config、cfなどで終わるファイルも設定ファイルであることが多い。 # これらのファイルは、デフォルト設定と自分の設定の両方を # バックアップしておくことを強く推奨する。 /etc/rc # 編集には細心の注意が必要(基本的にはいじるな危険) /etc/rc.conf # OSの設定(「rc.」で始まるファイルを実行する際の環境設定) /etc/fstab # ファイルシステムの設定(オートマウントやマウント時の省略オプションなど) /boot/loader.conf # ブート時に読み込むモジュールやドライバの指定 # autoboot_delayという項目で起動時の待ち時間も設定できる /etc/make.conf /usr/share/mk/以下 # makeコマンドの実行環境設定 /var/db/pkg/ /var/db/ports/ # ソフトウェアパッケージの情報 rc.confとmake.confは/etc/defaults/以下にデフォルト設定があり、変更したい 部分だけを書いておけばよい(はず、多分)。/etc/defaults/以下のファイルは、 特に理由がなければ触らないようにする(いじるな危険)。 この他たいていの設定ファイルは/etc/以下、ホームディレクトリ(~/)以下、 /usr/local/etc以下あたりにあるはずなので、必要があればいじっておく。 /etc/defaults/以下や/usr/local/share/以下あたりにデフォルト設定が ある場合も多い(インストール前にディレクトリ構成を確認しておくとよい)。 とりあえず、/usr/shere/examples/etc/以下のファイルには目を通しておく。 # X関係のソフトウェアの場合、/etc/X11/以下や/usr/X11R6/lib/以下など、 # X専用のディレクトリにあることが多い ファイルの検索などについては、その9を参照。 システム全体の設定 http://www.jp.freebsd.org/QandA/HTML/2229.html rc.confはインストール時に(/stand/sysinstallを使って)自動設定されているはず。 # /etc/rc.confに書いていない情報は、/etc/defaults/rc.confにしたがって設定される。 # よって、/etc/rc.confにはデフォルトから変更したい項目だけ書いておけばよい。 デーモンの起動ならデーモン名_enable="YES|NO"、環境変数の設定なら変数名=内容、 # たとえば、apache_enable="YES"でログイン時にapacheを自動起動、 # hostname="myhost"でホスト名をmyhostに設定する # という書式になっている。 設定がわからなくなったら、rc.conf.oldなどの名前でコピー(バックアップ)をとって > /stand/sysinstall からConfigureを選び、再度自動設定をやり直すのが多分一番確実。 # これ以外にも、Configure、Fixit、Load Configあたりのメニューから # いろいろな作業を半自動でやってくれるので、/stand/sysinstallは便利。 makeオプション(コンパイルオプション)の基本設定 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=make.conf&dir=jpman-5.2.0%2Fman§=0 http://www.otsune.com/fswiki/wiki.cgi?page=%2Fetc%2Fmake%2Econf # 設定ファイルは/etc/make.confなのだが、正直なところ筆者はあまり理解できていない。 とりあえず MASTER_SORT_REGEX?= ://[^/]*?.jp[/.] # ダウンロード時に、サーバ名に.jpを含むアドレスを優先させる の1行だけ書いてあれば大きな問題はない(はず、多分)。 5.x系を最小構成でインストールすると/etc/default/make.confが 自動作成されないので、/usr/shere/examples/etc/make.confを参考に 新規作成する。 上記に加えて、 CPUTYPE、DOC_LANG(en_US.ISO8859-1 ja_JP.eucJP)、CVSupの 自動実行あたりも指定しておくとよいのかも。 # CPUTYPEは、i686と書くとpentiumpro、p3と書くとpentium3などと # 自動で書き換えられるようだが、きちんと書いておいたほうが無難だろう。 # ちなみにモバイルペンティアムはpentium3mなどと書く。 FORCE_PKG_REGISTER=yes と書いておくと、強制上書きモードでインストールできる(多分)が、make時に > make install FORCE_PKG_REGISTER=yes # > make FORCE_PKG_REGISTER=yes install でもよい。 としてもよいし、make前に > setenv FORCE_PKG_REGISTER yes などとしても同じ効果(csh系のシェルの場合:make後unsetenvを忘れないように)。 比較的危険なオプションなので一時的な利用の方がよいだろう。 # portinstallの-fオプションは文字通りすべてのパッケージを # 入れなおしてしまうので、こちらの方が使いやすい。 モジュールやドライバの調整 http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=loader.conf&dir=jpman-5.2.0%2Fman§=0 http://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/x2361.html http://www.kisweb.ne.jp/personal/windy/computer/freebsd/tips1.html http://x68000.q-e-d.net/~68user/unix/pickup?MAKEDEV /var/run/dmesg.bootを開いて、目的のデバイスが認識されているかどうか確認 /boot/loader.conf(なければ/boot/defaults/loader.confを参考に新規作成) を適当に編集してリブート。 # コメントが終わった最初の行にuserconfig_script_load="YES"と書いてあることを確認 # これがないとユーザー(つまり自分)が行った設定が有効にならない(はず) ここには、カーネルモジュールとして読み込むものだけを書けばよいので FATディスクシステムのマウントやLinuxエミュレーションを実行する際に msdos_load="YES"とかlinux_load="YES"といった記述をする必要はないことが ほとんど(代わりに、たとえばrc.confでlinux_enable="YES"としておけば、 Linuxエミュレーターがデーモンとして立ち上がる)。 # カーネルモジュールとデーモンの違いは、要するに、カーネル(OS本体)の # 直属の部下として仕事をさせるか、独立したプロセスに外注する形にするか # ということ(のはず)。カーネルモジュールがコケると、OS本体の動きが # おかしくなる可能性があるので、可能な限りカーネルの外で動かす。 > cd /dev/ > sh MAKEDEV デバイス名 # デバイス名はたとえばsnd0などのように、デバイスの種類+番号になる。 # HDDなどは、たとえばad0s2のように、番号の後ろにさらに枝番がつくことがあり、 # IDE接続のHDD、プライマリマスター、第2スライス(Dos用語ではパーティション) # という意味になる。 > ./MAKEDEV デバイス名 とする解説もあるし、MAKEDEVは必要ない場合も あるようだが、詳しいことは不明。shを経由したりカレントディレクトリを 明示的に指定するのは、パスが通っていないからだが、別にどちらでやっても 変わりはない(と思う、多分)。 # 5.x系ではdevfsというソフトウェア(設定ファイルは/etc/devfs.confで、 # 起動スクリプトは/etc/rc.d/devfsらしい)が自動で管理しているらしく、 # MAKEDEVは不要らしい。 # http://www.freebsd.org/ja/releases/5.2.1R/early-adopter.html # http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=devfs&dir=jpman-5.2.0%2Fman§=0 ディスクドライブの確認 まず、マウントしたいパーティションの入ったハードディスクが、物理的に どの位置にあるのかを確認する。 > /stand/sysinstall からConfigure>Fdiskと選んで、ディスク一覧から ディスクを選ぶ。 # 以下単にFdiskと書いた場合、FreeBSD標準のFdiskを指すことにする。 IDE接続のHDD(内蔵ハードディスクはたいていこれ)なら、 プライマリマスター=ad0、プライマリスレイブ=ad1、 セカンダリマスター=ad2、セカンダリスレイブ=ad3、となっているはず # これはBIOSの認識順序に従っているだけなので、Fdiskを使わなくても、 # BIOSの設定画面を出せば上記の法則にしたがってディスク名を把握できる。 # というか、通常はBIOSの起動画面を見るだけで察しがつく。 ついで、マウントしたいパーティションがディスクのどの位置にあるのかを 調べる。Fdiskのディスク一覧からディスクを選ぶと、パーティションが 一覧表示されるので、Nameの欄を確認(ディスクサイズを基準に、何番目に 大きなパーティションなのかを照合するとよい)。ついでにdescの欄も 確認してパーティションタイプを把握しておく。 # 先頭から順に番号が振られているとは限らないので注意 基本パーティション(パーティションタイプがextended以外)なら、 Nameの欄に表示されている名前がディスク名+スライス名になり、 ad0s2とかad3s1といった名前になっているはず。 # スライス名はs1とかs2などとなっているが、これはある程度デタラメな順番で、 # MBMなどのツールを使えば変更できる(が、むやみには触らない方がよい)。 拡張パーティション(パーティションタイプがextended)のスライス名は、 必ずディスクの中で最後になり、拡張パーティション内部の パーティションについては、Nameの欄に表示されているスライス名の数字に、 拡張パーティション内で何番目の位置にあるかという数字を足したものが スライス名になる。 # たとえばad2s3が拡張パーティションで、内部に5つのパーティションがあり、 # そのうち先頭から4つめのパーティションを指定する場合なら、ad2s7となる Fdiskからは、Dos拡張パーティションの内部が確認できないため、 各種パーティションエディタ(MBMにも付属している)を使うのが手っ取り早い。 DosのFdiskも使えないことはないが、FATしか認識できないので注意が必要。 # 拡張パーティション内にFAT以外のパーティション(NTFSやext2など)が # ないのであれば、気にする必要はない ディスクの内容を確認したら すべてCancelしてコンソールに戻る。 ファイルシステムをマウントする http://x68000.q-e-d.net/~68user/unix/pickup?%2Fetc%2Ffstab http://iris.homeunix.net/yayoi/freebsd/setting/mount.asp http://www.zcr.jp/~tada/comp/freebsd3.html http://quox.org/tips/unix/#fs http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=mount&dir=jpman-5.2.0%2Fman§=0 http://www.jp.freebsd.org/cgi/mroff.cgi?sect=8&cmd=&lc=1&subdir=man&dir=jpman-5.2.0%2Fman&subdir=man&man=mount_msdosfs # デバイス名は環境によって違うが、例として、 # FAT32フォーマットのad0s2を/mnt/dosにマウントする場合を想定して # 話を進める。各自の環境に合わせて適宜読み替えが必要。 ハードウェアの認識 /var/run/dmesg.bootを開いて、ad0が認識されているかどうか確認 # 認識していないようならBIOSなどを設定する。 > sh MAKEDEV ad0 > sh MAKEDEV ad0s2 または > ./MAKEDEV ad0 > ./MAKEDEV ad0s2 この作業は、5.x系では必要ない。 手動でマウント > mkdir /mnt/dos として空のディレクトリを用意する。 # マウントには空のディレクトリが必要だが、場所が/mnt/以下である必要はない。 > mount -t msdos /dev/ad0s2 /mnt/dos # 後述のfstabに設定が書いてあれば、> mount /mnt/dosだけでよい -tはファイルシステムを明示するためのオプションで、cdならcd9660、 FATならmsdos、NTFSはntfs、FreeBSDネイティブのファイルシステムはudf。 ちなみに、NTFSはリードオンリーになる。 # このマウント方法だと、SJISコードの日本語ファイル名を # 含むファイルが見えない。解決方法は後述。 ただし、mountに-tオプションをつけるよりも、mount_ファイルシステム名で それぞれのファイルシステムに特化したマウントコマンドを呼んだ方が 使い勝手がよい。たとえばFATパーティションなら> mount_msdosfs を使う。 # mountとmount_msdosfsではオプションの扱いが違うので注意。 # 後述のmount_jamsdosはmount_msdosfsと似た動きをするが、微妙に融通がきかない。 オプションなしでFATパーティションをマウントすると、mountでも mount_msdosfsでも、所有者rootでパーミッションが751になるが、 FATパーティション上のファイルに対してはchrootもchownもできないため、 > mount_msdosfs -u ユーザーID /dev/ad0s2 /mnt/dos として所有者を変更すると、rootを含めて2人のユーザーが書き込み可能になる。 > mount_msdosfs -M 0775 -m 0664 -u 0 -g 1234 /dev/ad0s2 /mnt/dos # あらかじめ、FATパーティションへの書き込みを許可したいユーザーを # 1234番のグループに追加しておく。 とでもしてやれば、rootユーザーと1234番のグループが書き込みできるが、 セキュリティには注意。 # -Mオプションはディレクトリのパーミッション、-mオプションはファイルの # パーミッションを示し、片方を省略すると明示したほうの値が両方に使われる。 自動でマウント http://www.meganekko.nu/Horry/txt/FreeBSD/memory.html # /etc/fstabに設定を書いておけば、起動時に自動でマウントできる。 念のため、以下を実行 > mount -t msdos /dev/ad0s2 /mnt/dos > df きちんとマウントされたことを確認 > umount /mnt/dos > df きちんとアンマウントされたことを確認 書き方の例としては、 /dev/ad0s2 /mnt/dos msdos rw,-u0,-g1234 2 2 などとする。 # Optionは上記のとおりカンマ区切りでスペースを入れずに書く。 # 所有者やグループは任意に変えられる(明示しないとrootが所有者になる)。 # マウントポイントに指定した場所には、あらかじめ空のディレクトリを # 作っておく必要があるので、忘れずにmkdirしておく。 Deviceはハードウェアの名前、MountPointはマウントポイント(たとえば マウントポイントが/mnt/dosならば、ディスクが/mnt/にあるdosという ディレクトリに見える)、FDtypeはファイルシステムの種類、Dumpは バックアップの頻度(0なし、1たまに、2ちょくちょく)、Passは ディスクチェックの頻度。Oprionsは、rwが読み書き可能、roがリードオンリー。 noautoはオートマウントなし(自動マウントはしたくないが、手動マウント時に オプションを省略したい場合に使う) 4.x系でSJISコードの日本語ファイル名を含むDosパーティションをマウントする(必要なら) http://www.jp.freebsd.org/QandA/HTML/1861.html http://iris.homeunix.net/yayoi/freebsd/japanese/jamsdosfs.asp /ports/japanese/msdosfsをインストールして # makeに失敗するようなら> pkg_add -r ja-msdosfs-バージョン番号 で入れる > cp -p /usr/local/sbin/mount_jamsdos /sbin > cp -p /usr/local/lib/ja-msdosfs/msdos_ja.ko /modules > chmod a-x /usr/local/etc/rc.d/ja-msdosfs.sh # chmodの代わりに/usr/local/etc/rc.d/ja-msdosfs.shの名前を変えてやってもよい 確認のため > mount_jamsdos /dev/デバイス名 マウントポイント としてみて、うまくマウントできているようなら/etc/fstabに /dev/デバイス名 マウントポイント jamsdos オプション 0 0 と書いておく(ファイル名がSJISの2バイト文字でも表示可能になる)。 # -Mオプションが使えず、ファイルとディレクトリ両方のパーミッションを # -mオプションで指定することになり、小回りがきかないので注意。 5.x系の場合は下のリンク先を参照 http://iris.homeunix.net/yayoi/freebsd/japanese/jamount.asp リンク先にはカーネルをリコンパイルする方法も紹介されているが、 libiconv_load="YES" msdosfs_iconv_load="YES" としてカーネルモジュールを読み込むだけで大丈夫。 コマンドでのマウントには > mount_msdosfs -L ja_JP.eucJP -D CP932 デバイスのパス マウント先 fstabでのマウントには デバイスのパス マウント先 msdosfs -L=ja_JP.eucJP,-D=CP932,rw 0 0 を使う。 # CP932はShiftJISを表す シンボリックリンク http://x68000.q-e-d.net/~68user/unix/pickup?ln たとえば、/mnt/dosにマウントしたディスクを~/の一部として使いたい場合、 > ln -s /mnt/dos ~/dos などとすると、シンボリックリンク(Dosでいうショートカット、Macでいう エイリアスのようなもの)が作成できる。 シンボリックリンクを削除する場合は > rm ~/dos でよい。 シェルとかデーモンとか http://www.db.is.kyushu-u.ac.jp/~kimura/freebsd/fbsd-settei-kihon.html http://x68000.q-e-d.net/~68user/unix/environment.html http://x68000.q-e-d.net/~68user/unix/shell-variable.html /etc/shells # ログインシェルとして利用するシェルの一覧(ここに名前がないと> chsh -s できない) ~/.cshrc ~/.tcshrc # シェルの設定。パスやらエイリアスやら環境変数やらキーバインドやらを設定。 # 全ユーザー共通の設定は/etc/csh.cshrcなどに書いてもよい。 /etc/rc.カテゴリ名(例:/etc/rc.localなど) /usr/local/etc/rc.d/以下のファイル # 各デーモンの起動。 # Xありなら/usr/X11R6/etc/rc.dも。 /etc/services # ポート番号やプロトコルの設定。 /etc/inetd.conf # ネットワーク用スーパーデーモンの設定(有効にした場合)。 /etc/syslog.conf /etc/newsyslog.conf # システムログの設定とシステムログの圧縮設定。 /etc/crontab # タスク定期実行の設定。 /etc/ssh/sshd_conf # sshdの設定。 /usr/local/etc/rc.d/以下のファイルは、Portsやpkg_addを利用して ソフトウェアをインストールすると自動作成される。 # もちろん、自分で書いてもよい csh系シェルの共通設定は~/.cshrc、tcshの設定は~/.tcshrcに書くように なっているが、tcshを使う場合でも、設定には~/.cshrcのみを使い、 tcshにしか関係のない部分は~/.cshrc内でif ( $?tcsh ) then 以下に 書き込む形で問題ない(デフォルトはこっち)。 cshrcやtcshrcを使わずに、シェルから直接設定することも可能。 # cshrcにしろtcshrcにしろ、シェルが起動時に読み込んで実行するファイルで、 # 扱いとしてはシェルスクリプトとまったく変わりない。つまり、cshrcなどに # 書いてある命令はシェルで直接実行しても効果は同じということになる。 # (命令を実行するのは同じシェルなので、当然といえば当然)。 たとえば、 > setenv PAGER less とすると、デフォルトのページャーをlessに変更できる。ただし、これらの変更は シェルを終了するまでの間しか有効でないことに注意。 # cshrcなどにsetenv PAGER less と書いた場合、シェルが起動されるごとに # 上記の設定が行われるので、結果的として、継続的に設定を維持できる。 シェルの設定は、凝ろうと思えばいくらでも凝れるうえ好みもあるので、 各自好きなようにやればよいのだが、tcshの設定に、 complete cd 'n/*/d/ と書いておくと、> cd でファイル名を補完する場合にディレクトリ以外は ヒットしなくなるので便利。 # 筆者はviが苦手なので、setenv EDITOR ee(vipwなど、主にviで始まる # コマンドを使うとエディタが立ち上がるが、それがeeになる)としている。 # バッファが使えないのでコピペはXからマウス操作で行う軟弱者。 ユーザー管理 追加や削除 http://hiiro-sou.hp.infoseek.co.jp/unix/tips/adduser.html http://x68000.q-e-d.net/~68user/unix/pickup?%2Fetc%2Fgroup ユーザー追加は> adduser でできるが、> /stand/sysinstall からでも可能 ユーザー一覧は> vipw、削除は> rmuser、パスワード変更は> chpass ユーザー名 グループ追加は> pw groupadd グループ名、削除は> pw groupdel グループ名 ユーザーの設定ファイルは/etc/passwd、グループは/etc/group /etc/groupのoperatorの行に、常用するユーザーの名前を(カンマで区切って) 書いておくと、rootにならなくてもシャットダウンができる(わずかに セキュリティが弱くなるが、サーバ用途でなければ気にならないだろう) /etc/passwd http://www.wakhok.ac.jp/~kanayama/summer/02/site/node191.html http://x68000.q-e-d.net/~68user/unix/pickup?pwd_mkdb > vipw は、/etc/passwdをエディタで開いて、終了後にデータベースを更新 してくれるコマンドで、 ユーザー名:パスワード:ユーザー番号:グループ番号:空欄:パスワード変更の推奨時期: パスワードの有効期限:GECOS:ホームディレクトリ:ログインシェル という書式になっているが、パスワードの欄は手動で書き換えてはいけない。 # スペースの都合で2行に分かち書きしたが、実際は1行 パスワード(のフィンガープリント?)の欄に*と書いてあるのはログインを 許可しないという意味、GECOSにはユーザーの名前(full name)などが入る # パスワードの本体は/etc/master.passwdにあり、不整合が起きた場合には # > pwd_mkdb /etc/master.passwd と> pwd_mkdb -p /etc/master.passwd で # 修正することができる(/etc/master.passwd自体が無事だった場合) sudo(必要なら) http://x68000.q-e-d.net/~68user/unix/pickup?sudo http://www.hayagui.com/bsdsudo.html # rootのパスワードを使うことなく(各ユーザーのログインパスワードを使って) # root権限でコマンドを実行させる(root以外の権限を与えることも可能) sudo(securityセクション)が入っていない場合があるため、別途 インストールしておく(たとえ入っていても、最新のものを使ったほうがよい)。 > visudo ユーザー名 ホスト名=コマンド という書式なので適当に編集。グループ名で指定する場合は頭に%をつける。 たとえばuser1 host1=command1 で user1がhost1からログインしていればroot権限でcommand1を実行できる また、%wheel ALL=command2 で wheelグループのユーザーがログイン元に関係なくroot権限でcommand2を実行できる # ユーザー名 ホスト名=(実行ユーザー名)コマンド # という書式(たとえばuser3 ALL=(user4)command3)も可能っぽい(詳細不明) # コマンド名のところをNOPASSWD: command4 などとしておくと、パスワード入力も # 不要になる。また、ユーザー名を省略するとroot権限での実行になる エラーがあった場合トラップしてくれるので、e(再編集)かx(設定取りやめ)を タイプしてエンターを押す。無事終了したらリブート。 > sudo -u 使いたいユーザー名もしくはユーザーID コマンド で、(visudoで指定した範囲内なら)任意のユーザー権限でコマンドを実行できる。 たとえば> sudo -u user2 command1 とすると、user2の権限でcommand1が実行される。 # visudoで指定したのと一字一句完全に同じコマンドしか実行できないので注意 # たとえば、> cd /tmp を> cd /tmp/としたり、> tar -zxf を>tar -zfx としても # 蹴られる。そこで、エイリアスを作っておいたほうがよい -uオプションを省略するとroot権限での実行になるが、ルート権限での実行以外は 使わないことがほとんどなので、普通は省略する。 # たとえば> sudo comannd などとする makeオプション(コンパイルオプション)の変更 # 筆者はあまりよくわかっていないので推測をまじえている。 # ports/x11-wm/blackbox(バージョン0.65.0)を例に話しを進める。 ./configure(シェルスクリプト)を使う # ./configureを用意していないソフトウェアもあり、その場合手動で設定する。 > cd /usr/ports/x11-wm/blackbox > make configure とすると、カレントディレクトリにworkというディレクトリができる。 # この時点で設定画面が出るパッケージもある。 このディレクトリにはインストール予定のソフトウェア名でサブディレクトリが できており、その中にconfigureという名前のシェルスクリプトがあるので、 > cd work/blackbox-0.65.0 > ./configure 環境変数 としてmakeオプションを設定してやる。すると、カレントディレクトリの config.statusというシェルスクリプトに設定が書き込まれて実行される。 # 必ずcdしてから実行する。環境変数の内容については後述。 # また、現在指定されているオプションに追加するのではなく、現在の # オプションをすべて破棄してから新たにオプションを設定することになる。 ./configureを使う(もう少し詳しく) config.statusには、これこれの環境変数に従って./configureが自動設定したから 自動設定直後の状態に戻すならこのファイルを実行してね、という コメントとともに、先ほど./configureに渡した引数が書いてある。 # デフォルトの(手動で./configureを実行していない)状態だと、CPUなどの情報のほか、 # --x-libraries=/usr/X11R6/lib --x-includes=/usr/X11R6/include --prefix=/usr/X11R6 # などと指定されている。 カレントディレクトリ以下のMakefileすべてに、config.statusの内容と /etc/make.confの内容を反映した変更が自動で加えられているので、 ./configureに与える環境変数をいろいろと変えてMakefileの内容の変化を 観察(diffコマンドを使うと楽)してみると、何がどう設定されているのかが 見えてくる(はず)。 # > ./configure --help とやると説明が表示される。 コマンドがあまりに長くなる場合は、適当なテキストファイル (ここではconfという名前にしておく)を作成し、config.status もしくはconfig.logに書かれているデフォルト設定コピーして、 ./configure --option1 --option2 --option3 --option4... などとしたうえで適宜修正し、 > cat conf | sh とすればよいだろう(1行目を#! bin/sh として、シェルスクリプトとして 実行してもよいが、その辺は好み) # X上の仮想コンソールなどを経由してコピペをしてもよいが、改行が # 紛れ込まないよう注意する。 ./configure以外の設定方法 /etc/make.confに .if ${.CURDIR} == "makeを行うディレクトリ" CONFIGURE_ARGS= --option1 --option2 --option3 --option4... .endif などと書いておく手もある模様(未確認)。 > make configure 環境変数 としてやることで、直接Makefileに環境変数を 書き込むこともできるようで、 > cd work/blackbox-0.65.0 > make configure CONFIGURE_ARGS="--enable-mymodule" > make configure CONFIGURE_ARGS+="--enable-mymodule" などとやる模様(未確認)。 # +がつくと追加、つかないと置換、-がつくと削除。 もちろん、内容がわかっているのなら、上記の方法を使わず各Makefileを エディタで直接編集(主にCONFIGURE_ARGSの部分)してしまっても問題ない。 # というか、本来はそうするものなのだろうが、ファイル数が多いとややつらい。 # CONFIGURE_ARGS以外の部分は、自信があるのでなければ触らない方がよいと思う。 親ディレクトリ(/usr/ports/x11-wm/blackbox/)にあるMakefileは、 ソースコードの所在、パッチファイルの適用先、利用するコンパイラ、 依存情報、コンパイル手順の大筋など設定しているので、ここではあまり関係ない。 その2でも触れたように、portupgradeをインストールしておけば、もっと手軽に オプションの追加や置換が可能なので、慣れてきたらそちらを使うようにした方が 楽だろう。 > portinstall -m '--enable-mymodule' x11-wm/blackbox などとすればコンパイルオプションを追加でき、/etc/make.confで設定したのと同様に /usr/local/etc/pkgtools.confのMAKE_ARGの項目でも設定が可能。 どのようなオプションを変更するのか 本家ページを見ればたいてい解説がある。本家ページが日本語化されていなくても、 有名なソフトウェアなら、ちょっとぐぐれば日本語の解説が見つかる。たとえば、 http://www-fr.mysql.com/doc/ja/configure_options.html http://php.s3.to/man/install.configure.html http://www.samba.gr.jp/doc/install_2.2/3_configure.html http://www.imasy.or.jp/~kazz/xemacs/install/conf などなど。 # もっとも、この手の情報は(本家が英語なら)英語のままの方が # わかりやすいことも多いが。 その他の設定 /etc/host.conf /etc/hosts /etc/resolv.conf # 名前解決(DNSとか)の設定 Xの設定(入っているなら) http://www.db.is.kyushu-u.ac.jp/computer/freebsduser/kdm.html http://www.freebsd.org/doc/ja_JP.eucJP/books/faq/x.html 予備知識 http://x68000.q-e-d.net/~68user/unix/pickup?%7E%2F%2EXdefaults http://x68000.q-e-d.net/~68user/unix/pickup?xrdb http://x68000.q-e-d.net/~68user/unix/pickup?%7E%2F%2EXresources http://x68000.q-e-d.net/~68user/unix/pickup?startx http://x68000.q-e-d.net/~68user/unix/pickup?%7E%2F%2Exinitrc http://x68000.q-e-d.net/~68user/unix/pickup?xdm http://x68000.q-e-d.net/~68user/unix/pickup?%7E%2F%2Exsession http://www.netlaputa.ne.jp/~utty/linuxmld/xsession1.html http://www.jp.freebsd.org/QandA/HTML/360.html を順に読んでおく。 設定ファイルがない場合や読み込まれない場合 # 下記すべてについて、~/に存在しなくてもXの起動自体は可能 ~/.xinitrcなら、新規作成(xterm & の1行だけでも問題はない)もしくは > cp /usr/X11R6/lib/X11/xinit/xinitrc ~/.xinitrc > chmod 0644 ~/.xinitrc としてから~/.xinitrcを編集 特に設定しなくても~/においておけばXが勝手に読んでくれる(はず) # 存在しないと、代わりに/usr/X11R6/lib/X11/xinit/xinitrcが読み込まれる ~/.Xresourcesなら、新規作成(白紙でも問題はない) ~/.xinitrcにxrdb -load ~/.Xresources などと書いておけば 読み込める(もちろん、ファイルの名前や位置は自由に指定できる)。 ~/.xsessionなら、~/.xinitrcと同内容(コピー)でよいらしい。 まず/usr/X11R6/lib/X11/xdm/Xsessionが読み込まれて起動の下準備を 行ったあと、~/.xsessionに引継ぎをする設定になっている。このとき、 ~/.Xresourcesもデフォルトで読み込んでくれるようだが、ユーザーが意識する 必要はない(はず)。 # 筆者はxdm自体使わないので詳細は不明 ~/.Xmodmapなら、新規作成(白紙でも問題はない) ~/.xinitrcにxrdb -load ~/.Xresources などと書いておけば 読み込める(もちろん、ファイルの名前や位置は自由に指定できる)。 .xinitrcのデフォルトである/usr/X11R6/lib/X11/xinit/xinitrcの設定では /usr/X11R6/lib/X11/xinit/と~/(当然だが、ユーザごとにフォルダが違う)で それぞれ.Xresourcesと.Xmodmapを探すが、これを利用する場合は、 /usr/X11R6/lib/X11/xinit/には全ユーザー共通の設定、~/には個人の設定をおく。 全体設定を先に読み、そこに個人設定を上書きするので、矛盾した設定があれば 個人の設定が優先される。以下便宜上~/.Xresourcesといった表記をするが、 全ユーザーで有効にしたい設定は/usr/X11R6/lib/X11/xinit/.Xresourcesに 書いたほうが手間が少ない(というか、個別設定はほとんど必要ない) # ちょっと乱暴だが、~/.xinitrcをおかずに/usr/X11R6/lib/X11/xinit/xinitrcに # 設定を書いてしまうというのも一案かもしれない ツールキット Xアプリケーションの多く(特に画面描画やファイルアクセスを頻繁に 行うもの)は、QT(もともと商品として売られていたもので、KDEのために ソースを公開してくれたらしい)やgtk(もともとGIMPのために開発された もので、gnomeが採用している)などのツールキットを利用している。 つまり、たとえば「これこれの画面を表示してくれ」という依頼が アプリケーション>ツールキットとXFree86>カーネル という具合に伝わる、ということになる(はず、多分)。 QTやgtkは、自前でコンパイルしようと思うとかなり時間がかかるので、 pkg_addで入れてしまうのも一案(いずれもx11-toolkitsセクション)。 QTについては、/ports/x11-toolkits/ja-qt/に日本語版があるが、 x11-toolkitsセクションにあるものを入れても普通に日本語がとおる。 # この辺がどうなっているのかちょっとわからないが、国際化が進んで # 現行バージョンでは日本語版が必要なくなっているのかもしれない(未確認)。 QTとgtk以外のツールキットでは、/ports/x11-toolkits/open-motif/や /ports/x11-toolkits/p5-tcl-tk/などが有名。 これらのツールキットは独自の設定ファイルを持っているが、たいていは 設定ツール(GUIを採用しており、Xからしか実行できないものが多い)が 付属しているので、できる限りそちらを利用する。 # たとえば、QTならばXの仮想コンソールから> qtconfig wrapperとimwheel /usr/ports/x11/wrapper/ # root以外のユーザーがstartxを実行できるようにする 特に設定は必要ないが、.xintrcや.Xresourcesをきちんと配置しないと設定が生きない /usr/ports/x11/imwheel/ # ホイールマウスを有効にする。 /etc/X11/XF86ConfigのInputDeviceセクション内mouseの項目に Option "Buttons" "5" Option "ZAxisMapping" "4 5" の2つを追加 # 2ボタン+ホイールボタンのマウスの場合 > cp /usr/X11R6/etc/imwheelrc ~/.imwheelrc ~/.imwheelrcを適当に編集。たとえば、 "^Konqueror" None, Down, Down, 16 None, Up, Up, 16 Shift_L, Down, Page_Down, 1 Shift_L, Up, Page_Up, 1 などと書いておく 上記は、Konquerorでのホイールの動作を設定しており、 たとえば1行目のNone, Down, Down, 16なら、 同時押しなしの場合、ホイール下回転で、キーボードの↓ボタン相当、移動量16 4行目のShift_L, Up, Page_Up, 1なら、 左シフトを押しながらの場合、ホイール上回転で、キーボードのPage_Downボタン相当 という意味。移動量は、16の場合でキーボードの↓ボタン6回分くらい ~/.xinitrcの最後のほう(どこでもいいけど)にwrapper & なり imwheel & なりと書いておく。 使うなら、Window Manager も入れて、~/.xinitrcの最後の行に exec 使いたいウィンドウマネージャと追記しておく。 その他細かい設定 > xmodmap で設定を練って、気に入った設定が見つかったら~/.Xmodmapに書き込んでおく > xset で設定を練って、気に入った設定が見つかったら~/.xintrcに書き込んでおく 日本語関係(必要なら) http://www.jp.freebsd.org/QandA/HTML/360.html # コンソールから使うならkon2(の好きなフォントサイズ)、Xの仮想コンソールで # 使うならktermが必須になる。KDEを日本語化して入れるなら、KDE標準のKonsoleが # 日本語を通すので、ktermは必要ない ソフトウェアのインストール http://iris.homeunix.net/yayoi/freebsd/japanese/jman.asp http://www.englite.kumamoto-u.ac.jp/911kougi/freebsd/nonframe/softsetting.html http://www.jp.freebsd.org/man-jp/index.html http://www.f-bell.net/FreeBSD/xfree86-ja.html /usr/ports/japanese/kterm/ /usr/ports/japanese/kon2(の好きなフォントサイズ)/ # コンソールアプリ /usr/ports/japanese/less/ /usr/ports/japanese/man/ /usr/ports/japanese/man-doc/ # 表示アプリ /usr/ports/japanese/Canna/ /usr/ports/japanese/cannadic/ /usr/ports/japanese/kinput2(の好きなバージョン)/ # 入力アプリ /usr/ports/japanese/nkf/ # 文字コード変換アプリ あたりを、make install clean なりportinstallなりで導入し ftp://サーバ名/pub/FreeBSD/ports/i386/packages/japanese/ja-man-doc-バージョン番号.tbz を取ってきてpkg_addで導入。 エディタはjvimでもmuleでも、とにかく日本語の通るものを1つ導入。 フォントのインストール # 具体的なフォントの情報についてはその5を参照。 本当は、mkfontdirなり(KDEやXに付属の)フォントインストーラーを使うなりして、フォントリストを作成する 必要があるのだが、どうやら、放っておいてもXがある程度勝手に設定してくれる模様。 http://hp.vector.co.jp/authors/VA022911/tec/freebsd/app/ttf.htm http://www.ki.rim.or.jp/~kuro/Linux/Linux09.html わかっているならfonts.dirを手で書いてももちろん構わない。 http://itpro.nikkeibp.co.jp/linux/column/inflection/3/2.shtml /etc/X11/XF86ConfigのModuleセクションにLoad "xtt"を設定し、 (あれば)Load "freetype"をコメントアウト。Filesセクションに FontPath"/usr/X11R6/lib/X11/fonts/TrueType"を設定。 # xf86configを使った場合、コメントアウトをはずすだけでよいはず。 # portsやpkg_addで入れたフォントは、たいていの場合、 # TrueTypeなら/usr/X11R6/lib/X11/fonts/TrueType、 # ビットマップなら/usr/X11R6/lib/X11/fonts/local/に入るようだ。 cannaの設定 http://www.ohnolab.org/~kimoto/canna.html http://canna.sourceforge.jp/links.html http://www.geocities.co.jp/SiliconValley-SanJose/4514/toku10.html http://kansai.anesth.or.jp/gijutu/unix/man-canna.php http://www.tanu.org/~sakane/doc/public/howto-canna.html http://iris.homeunix.net/yayoi/freebsd/japanese/cannaetc.asp # Cannaに続けてcannadicを入れておく。 > /usr/local/etc/rc.d/canna.sh stop # というか、設定は初回起動の前にやっておくとよい > cd /usr/local/share/canna/dic/canna > cp dics.dir dics.dir.default > cat dics.dir.gpl_canna >> dics.dir # dics.dir.gpl_cannaの内容をdics.dirに追加 > cp /usr/local/share/canna/default.canna ~/.canna # こっちが無難だろう もしくは > cp /usr/local/share/canna/sample/好きなテンプレート ~/.canna としてから~/.cannaのuse-dictionaryに "gcanna"と"gcannaf"を追加して "iroha"をコメントアウト(;;)、etc/rc.confにcanna_enable="YES"と追記。 # irohaはgcannaと重複するので必要ない ~/rkc.confという空のファイルを作り、/usr/local/etc/rc.d/canna.shの inetdを使う設定になっている部分のコメントをはずす。 # やり方によってはコメントを外さなくてもよいのかもしれないが、不明 > /usr/local/etc/rc.d/canna.sh start > mkdic -fq gcanna # gcannaを変換頻度学習のベース辞書(ようはデフォルト辞書ということだと # 思う、多分)にする。-fqオプションをつける場合、 # /usr/local/share/canna/dic/canna/dics.dirで指定した辞書以外は選べない > mkdic user # 単語のユーザー登録用辞書を作成 以後、mkdic(作成)、lsdic(一覧表示)、catdic(内容表示)、 addwords(単語追加)、delwords(単語削除)で管理 シェルの設定 http://iris.homeunix.net/yayoi/old/xjapanese/xjapanese.asp ~/.cshrcに環境設定を書き込む # コメントアウトしてあるのは、必須ではない設定 # PAGERを設定する場合は、もとのPAGER設定をコメントアウトしておく # cons25はデフォルトでログインするコンソールの名前 if ( $TERM == 'cons25' ) then unsetenv LC_CTYPE unsetenv LANG unsetenv LC_ALL # setenv PAGER less else setenv LC_CTYPE ja_JP.eucJP setenv LANG ja_JP.eucJP setenv LC_ALL ja_JP.eucJP #setenv JLESSCHARSET japanese #setenv JSERVER localhost #setenv CANNAHOST localhost #setenv PAGER jless #jman jman endif #setenv XMODIFIERS "@im=kinput2" さらに好みでエイリアスやらデフォルトエディタやらを変更。 # とくにjlsは同名のソフトウェアがあるので # alias jpls /usr/local/bin/jlsなどとする > source .cshrc Xの日本語設定 ~/.xinitrcに export LANG ja_JP.eucJP xrdb -load ~/.Xresources kinput2 -canna -xim & kterm -km euc -sb & と追記。 # 日本語環境に切り替え、 ~/.Xresourcesを読み、kinput2とktermが起動する kinput2の設定 http://www.vsl.gifu-u.ac.jp/freeman/misc/kinput2-v3release/doc/resources http://www.pse.che.tohoku.ac.jp/~hoshi/kinput2.html http://openlab.plathome.co.jp/linux/jrpm62desc.html http://l5web.laser5.co.jp/ml/l5users/19990923/83.html ~/.Xresourcesに # コメントアウトしてあるのは、必須ではない設定 KTerm*VT100*translations: #override \ Shiftspace: begin-conversion(_JAPANESE_CONVERSION) KTerm*inputMethod: kinput2 KTerm*openIm: true #KTerm*allowSendEvents: true #KTerm*kanjiMode: euc #KTerm*scrollBar: on #KTerm*saveline: 1000 と追記。 # kterm上でShift+Spaceで日本語入力を開始し、kinput2を使い、 # imを利用するということ(多分) # コメント部分は-C、-km euc、-sb、-sl 1000 のオプションとそれぞれ同じ。 さらに *inputMethod: kinput2 Kinput2*conversionEngine: canna Kinput2*cannahost: ホスト名 Kinput2*useOverrideShellForMode: true Kinput2*conversionStartKeys: \ Shiftspace \n\ Kanji と書いておけば、kterm以外からもkinput2が利用できる。 ~/.cshrcにsetenv XMODIFIERS @im=kinput2 と書いておく。 # ~/.Xmodmapにkeycode 49 = Kanji と書いておくと、 # Xからの入力時に半角キーで入力切替できる。 主に、仮想コンソールからの実行ではXMODIFIERS "@im=kinput2"、 シェルからの実行では*inputMethod: kinput2が参照される模様。 場合別の設定 FreeBSD5.xでkonを使う場合、 /etc/devfs.confの #link ttyv0 vga という行のコメントアウトを解除しなくてはならないらしい。 XFree86-4.xでkinput2を使う場合~/.xinitrcで kinput2 & とした直後に sleep 10; などと書いておく。待ち時間は3くらいでもちゃんと起動する(環境によっては 設定しなくても問題ない)が、kinput2がコケると他のアプリが巻き添えをくうので、 安定作動するまでは10くらいでよいだろう。 kinput以外の選択 http://scim.sourceforge.net/skim/doc/user/en/ http://slashdot.jp/article.pl?sid=04/09/05/051224 http://kodou.net/unixuser/200405/ http://linux2ch.bbzone.net/index.php?FAQ%2FJaJP http://asaki.jp/blog/archives/000065.html anthy+uim+scim(KDEを使っていれば、さらに+skim)という重ね方が快適らしい。 uimとscimの間にはscim-uimというソフトウェアを噛ませる。 Konから日本語を入力する場合にちょっと面倒になりそうなので、kinputも 残しておいたほうがいいのかもしれない。