OpenBSD 2.3(sparc)の使いかた 〜悪魔使いになる方法〜

Copyright(C)1998 by Yamamoto Takanori.<tatyana@miko.org>
All Rights Reserved.
最終履歴 1998/08/20, (随時更新)


>>> 個人的な非商用目的または学術利用に限り、閲覧を許可します <<<

最新情報
1998/5/21〜
  • OpenBSD 2.3 が 5月19日にリリースされた模様です。
  • SKK 10.39 (on Emacs) および SKK 9.6 (on Mule) のインストールメモを追加しました。
  • Perl 5.004_65 のインストールメモを追加しました。
  • LessTif を 0.84 にアップデート。
  • GTK+ を 1.0.3 にアップデート。
  • gimp を 0.99.31 にアップデート。
  • less を 332-iso342 にアップデート。
  • インストール手順の内容を OpenBSD 2.3 のものにアップデート。
  • OpenBSD 2.3 Security Advisories
  • SSLeay を 0.9.0b にアップデート。
  • Apache を 1.3.0 にアップデート。
  • Analog を 3.0 にアップデート。
  • qmail を 1.03 にアップデート。
  • HTTPdown 3.13のインストールメモを追加。
  • samba を 1.9.18p8 にアップデート&ミスを修正。
1998/5/19

・矢羽々(やはば)さんのページ「Life with BSD」からリンクされました。個人的な備忘録のつもりで書いてますので、見栄えが悪いのは大目に見てくださいね。

Anonymous FTP Server のお知らせ

・ここで紹介しているフリーソフトウェアの殆どは、 ftp://azusa.miko.org/ にも登録しています。
・OpenBSD 本体は、 ftp://athena.nmt.ne.jp/ にてミラーリングさせてもらっています。
・これら Anonymous FTP Server の上流ネットワークは、OCN Standard(1.5Mbps) です。

 

=== Contents ==================

1. インストール編

2. 基本操作編

3. ソフトウェアのインストール

〜シェル・ファイラ・テキストビュア〜

 

〜漢字フィルタ〜

 

〜アーカイバ・ファイルコンプレッサ〜

 

〜テキストエディタ〜

 

〜基本開発環境〜

 

〜基本ネットワーク関連ソフト〜

 

〜FTP 関連〜

 

〜HTTP 関連〜

 

〜Proxy 関連〜

 

〜SMTP/POP 関連〜

 

〜X11 関連〜

 

〜MIDI 関連〜

 

〜暗号・セキュリティ〜

 

〜GhostScript〜

 

〜TeX〜

 

〜WindowsNetwork 関連〜

 

〜Web Browser 関連〜

 

〜ゲーム〜

=====================================

 

 


インストールについて

 OpenBSD をインストールするには、大きく分けて以下のような方法があります。

 CD-ROM は購入する必要がありますし、ネットブートは設定が面倒なので、ここではフロッピーからインストールすることにします。本体にフロッピードライブが付いていないマシンの場合は、CD-ROM を別途入手するか、ネットブートの設定を頑張ってね。(^-^;

 


ブートフロッピーの作成

 インストール用のフロッピーを作成するには、まずフロッピーのイメージファイルを FTP で入手して、UNIX 上から

# dd if=floppy23.fs of=/dev/rfd0c bs=36b

と実行すると、イメージファイルをフロッピーに書き込むことができます。(フロッピーはフォーマットされている必要があるかもしれません。フロッピーのフォーマットについては、ディスクのフォーマットの項を参照してください)

終わったら、

# eject fd0

で、フロッピーを取り出すことができます。

 

 インストール用のフロッピーには2系統あります。

 前者はより新しく、あまりテストされていないとのことですが、本稿では前者によるインストール手順に基づいて解説します。(後者で試して失敗しました…。謎です…。(;_;))

 

 ブートフロッピーが作成できたら、

# shutdown -h now

にてコマンドモードに移り、

boot floppy

でフロッピーからブートを行ないます。(new command mode の場合)

 


インストール

 [I]nstall を選んで、新規インストールを行ないます。

 インストール先は、内臓 420MB ハードディスク(sd1)とします。

 ラベルエディタが起動しますので、適当に設定してやります。

簡単なコマンド一覧
>p … 状況表示

>d a … a を初期化
>d b … b を初期化

>a a … fs 登録
>a b … swap 登録

>q … セーブして終了

 

 私の環境では、下記のように設定を行ないました。

  size offset fstype [fsize bsize cpg]  
a 746640 0 4.2BSD 1024 8192 16 #(Cyl. 0-1036)
b 82080 746640 swap       #(Cyl. 1037-1150)
c 828740 0 unused 0 0   #(Cyl. 0-1150)

 

 ファイルシステムの登録後、適当に質問に答えていくと、ファイルシステムが作成されます。

 

 ネットワークの設定に移ります。とりあえず以下の設定になりました。

システムホストネーム yuugao
DNSドメインネーム nmt.ne.jp
ネットワークインターフェース le0
IPアドレス 210.160.56.221
シンボリックネーム yuugao
ネットマスク 255.255.255.224
リンクレイヤディレクティブ -link0 link1
デフォルトルート 210.160.56.193
プライマリNS 210.160.55.1

※リンクレイヤディレクティブは、ネットワークインターフェースがAUIの場合「-link0 link1」、UTPの場合「link0 -link1」にて動作すると思われます。

 

ここでイニシャルパスワード(ルートのパスワード)を聞かれますので、適当に答えます。

インストールは、FTP 経由で行ないます。ftp.jp.openbsd.org の場合、サーバディレクトリは「pub/OpenBSD/2.2/sparc」では動きませんので注意してください。

インストールフロム (f)tp
FTPプロクシ none
アクティブFTP n
サーバアドレス ftp.jp.openbsd.org
サーバディレクトリ pub/OpenBSD/2.3/sparc
ログイン anonymous

 

インストールするファイルは、とりあえず全部選んでおきましょう。

  展開後サイズ zipped  
base23 39.7M 12.7M 必須
etc23 510k 97k 必須
comp23 27.4M 8.2M コンパイラツール
game23 6.9M 2.8M ゲーム
man23 9.2M 2.4M マニュアル
misc23 5.9M 1.7M 雑多なもの
text23 3.7M 994k テキスト処理システム
xbase23     ベースX(プログラム・ヘッダ・設定ファイル)
xfont23     Xフォント
xserv23     Xサーバ

 

各ファイルのダウンロード・展開が終われば、タイムゾーンの設定に移ります。GMT(グリニッジ標準時)ではなくJapan(日本標準時)を選択しておきましょう。

以上で終わりです。

CONGRATULATIONS! You have successfully installed OpenBSD!

To boot the installed system, enter halt at the command prompt. Once the system has halted, reset the machine and boot from the disk.

と表示されるので、

# halt

としてシステムを停止させます。

ok eject

でフロッピーを取り出した後、

ok boot

として再起動させてみましょう。

 

OpenBSD が、うまく起動したらおめでとう。:)

 


アップグレード

 OpenBSD 2.2 からのアップグレードを行ないます。OpenBSD 2.3 の配布セットは、アップグレード処理中にFTPにてダウンロードすることにします。

 セットアッププログラムをフロッピーより起動後、[U]pgrade を選択して、アップグレードプログラムを実行します。

 インストール先は、内臓 420MB ハードディスク(sd0)とします。

 このあと、「ネットワーク」「ファイルシステム」等の設定に関する質問が続きますが、基本的にリターンキーを押すだけ(=デフォルト値)で済みます。

 「Are the upgrade sets on one of your normally mounted (local) filesystems?」と聞かれたら、「n」と答え、「Install from (f)tp」を選択します。

インストールフロム (f)tp
FTPプロクシ none
アクティブFTP n
サーバアドレス athena.nmt.ne.jp
サーバディレクトリ OpenBSD/2.3/sparc
ログイン anonymous

インストールするファイルは、とりあえず全部(all)選んでおきましょう。

 

各ファイルのダウンロード・展開が終われば、タイムゾーンの設定に移ります。Japan を選択しておきましょう。

以上で終わりです。

CONGRATULATIONS! You have successfully upgraded OpenBSD!
To boot the installed system, enter halt at the command prompt. Once the system has halted, reset the machine and boot from the disk.

と表示されるので、

# halt

としてシステムを停止させます。

ok eject

でフロッピーを取り出した後、

ok boot

として再起動させてみましょう。

 

OpenBSD が、うまく起動したらおめでとう。:)

 

※/host の /usr/host へのリンクなどが初期化されているので注意しましょう。

 


任意のドライブから起動する方法

ok printenv にて、システムの環境変数が参照できます。このなかの、「boot-file」「boot-device」を変更することで、ブート元を変えることができます。

sd0 , target0, partition0 にあるカーネル bsd を起動させる場合には、

setenv boot-file bsd
setenv boot-device /sbus/esp@0,800000/sd@0,0

と設定します。

(「setenv boot-device disk0」などと設定しても良いかも。)

 


ディスクのフォーマット

 フロッピーディスクの場合は、以下のコマンドで行ないます。

# fdformat fd0

 

 ハードディスクの場合は、対話的にディスクラベルを作成してから、newfs を行ないます。

# disklabel -E sd0
# newfs sd1a

 


afterboot

初回のブート終了後、コンソールから root でログインします。

「man afterboot」にて表示される説明に従い、システムの設定をチェックしていきましょう。

 


新規ユーザの登録

adduser というコマンドを用いて登録する方法もあるのですが、ここでは、よりプリミティブに攻めてみましょう。:)

mv /home /usr/home
ln -s /usr/home /home

/etc/group に「nmtusers:*:1000:」を付け加え、「wheel:*:0:root,yama」を加える。
# vipw にて、「yama:*:1000:1000::0:0:Yamamoto:/home/yama:/bin/csh」を付け加える。
# passwd yama にて、パスワードを登録する。

# mkdir /home/yama
# chown yama.nmtusers /home/yama にて、ホームディレクトリを作成・設定。

※「:」→「SHIFT + ;」
※「*」→「SHIFT + 8」

 


resolv.conf の編集

セカンダリNS等を設定しておきましょう。

/etc/resolv.conf
domain nmt.ne.jp
nameserver 210.160.55.1
nameserver 210.160.55.2
search nmt.ne.jp
lookup file bind

 


inetd.confの編集

環境に合わせ、適宜、不要なデーモンは使わないようにしましょう。

/etc/inetd.conf
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US
#shell stream tcp nowait root /usr/libexec/rshd rshd -L
#login stream tcp nowait root /usr/libexec/rlogind rlogind

#finger stream tcp nowait nobody.nobody /usr/libexec/fingerd fingerd -ls
#ident stream tcp wait nobody.kmem /usr/libexec/identd identd -w -t60 -l -o -e -N -unobody -gkmem

#comsat dgram udp wait root /usr/libexec/comsat comsat
#ntalk dgram udp wait root /usr/libexec/ntalkd ntalkd

#daytime stream tcp nowait root internal
#time stream tcp nowait root internal

#rstatd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rstatd rpc.rstatd
#rusersd/1-3 dgram rpc/udp wait root /usr/libexec/rpc.rusersd rpc.rusersd

# kill -HUP (pid_of_inetd)

 


カーネルの再構築

どんなデバイスが存在するか、まず「dmesg」で調べてみるのも良いかも知れません。

$ dmesg
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.

OpenBSD 2.2 (GENERIC) #112: Thu Oct 30 12:20:14 MST 1997
deraadt@sun4c:/usr/src/sys/arch/sparc/compile/GENERIC
real mem = 66760704
avail mem = 60207104
using 200 buffers containing 3334144 bytes of memory
bootpath: /iommu@0,10000000/sbus@0,10001000/espdma@5,8400000/esp@5,8800000/sd@3,0
mainbus0 (root): SUNW,SPARCstation-5

cpu0 at mainbus0: MB86904 @ 110 MHz, on-chip FPU
cpu0: 16K instruction (32 b/l), 8K data (16 b/l) cache enabled
obio0 at mainbus0
clock0 at obio0 addr 0x71200000: mk48t08 (eeprom)
timer0 at obio0 addr 0x71d00000 delay constant 52
zs0 at obio0 addr 0x71100000 pri 12, softpri 6
zs1 at obio0 addr 0x71000000 pri 12, softpri 6
[slavioconfig at obio0] addr 0x71800000 not configured
auxreg0 at obio0 addr 0x71900000
power0 at obio0 addr 0x71910000
fdc0 at obio0 addr 0x71400000 pri 11, softpri 4: chip 82077
iommu0 at mainbus0 addr 0x10000000: version 0x4/0x0, page-size 4096, range 64MB
sbus0 at iommu0: clock = 22 MHz
dma0 at sbus0 slot 5 offset 0x8400000: rev 2
esp0 at dma0 slot 0x5 offset 0x8800000 pri 4: ESP200, 40MHz, SCSI ID 7
scsibus0 at esp0: 8 targets
sd0 at scsibus0 targ 0 lun 0: <SEAGATE, ST32550W SUN2.1G, 0416> SCSI2 0/direct fixed
sd0: 2048MB, 3511 cyl, 11 head, 108 sec, 512 bytes/sec, 4194995 sec total
sd1 at scsibus0 targ 1 lun 0: <SEAGATE, ST32550N SUN2.1G, 0416> SCSI2 0/direct fixed
sd1: 2048MB, 3511 cyl, 11 head, 108 sec, 512 bytes/sec, 4194995 sec total
sd2 at scsibus0 targ 2 lun 0: <SEAGATE, ST32550N SUN2.1G, 0416> SCSI2 0/direct fixed
sd2: 2048MB, 3511 cyl, 11 head, 108 sec, 512 bytes/sec, 4194995 sec total
sd3 at scsibus0 targ 3 lun 0: <SEAGATE, ST32430W SUN2.1G, 0666> SCSI2 0/direct fixed
sd3: 2049MB, 3992 cyl, 9 head, 116 sec, 512 bytes/sec, 4197405 sec total
cd0 at scsibus0 targ 6 lun 0: <TOSHIBA, XM-5401TASUN4XCD, 1036> SCSI2 5/cdrom removable
SUNW,bpp at sbus0 slot 5 offset 0xc800000 not configured
ledma0 at sbus0 slot 5 offset 0x8400010: rev 2
le0 at ledma0 slot 0x5 offset 0x8c00000 pri 6: address 08:00:20:7d:b6:d3
le0: 8 receive buffers, 2 transmit buffers
SUNW,CS4231 at sbus0 slot 4 offset 0xc000000 not configured
power-management at sbus0 slot 4 offset 0xa000000 not configured
SUNW,hme at sbus0 slot 2 offset 0x8c00000 not configured
SUNW,fas at sbus0 slot 2 offset 0x8800000 not configured
cgsix0 at sbus0 slot 3 offset 0x0: SUNW,501-2325, 1152 x 900, rev 11 (console)
cgsix0: attached to /dev/fb
root on sd3a
rootdev=0x730 rrootdev=0x1130 rawdev=0x1132

 

# cd /usr/src
# zcat srcsys.tar.gz | tar xvf -
# cd sys/arch/sparc/conf
# cp GENERIC YUUGAO

/usr/src/sys/arch/sparc/conf/YUUGAO
適宜修正を加える。

# config YUUGAO
# cd ../compile/YUUGAO
# make depend
# make
# cp /bsd /bsd.old
# cp bsd /bsd

 

何かしら失敗して、システムが立ち上がらなくなってしまったら、古いカーネルでシステムを起動したのち、修正をおこないます。

ok boot disk bsd.old

 


make world

# rm -R /usr/src
# mkdir /usr/src
# chown root.wsrc /usr/src
# chmod 776 /usr/src
# cd /usr/src
# zcat ~/src.tar.gz | tar zvf -
# zcat ~/srcsys.tar.gz | tar zvf -
# make build
#

(失敗…うーみゅ。)

 


ccdの設定

 ccdとは、concatenated disk devices、いわゆる「ソフトウェアRAID」を実現する為の機構ですが、現行下では、それほどインテリジェンスではありません(RAID 0/1 のみ。オートリカバリ等の機能は無い)ので、トラブル発生時には相応の技術力が必要となるでしょう。また、ソフトウェアRAIDの限界として、ドライブのホットスワップ等には今後とも対応できないと思われます。ccdの利用については、これらの制限をよく理解した上で行なう必要があるかと思います。

 利用するには、カーネルコンフィグにて、以下の設定が加えられている必要があります。この例では、4台のドライブまでccdとして利用可能ということです。

例)pseudo-device ccd 4 # concatenated disk devices

 ccdデバイスは、/dev/{,r}ccd* という名称になります。

 ccdを設定するには、動的設定ユーティリティ「ccdconfig」を使います。

例)ccdconfig ccd0 32 0 /dev/sd2e /dev/sd3e /dev/sd4e /dev/sd5e

 この例では、「ccd0」は「/dev/sd2e /dev/sd3e /dev/sd4e /dev/sd5e」という4つの要素から構成されるディスクとなり、インターリーブは32ブロックに設定されます
 インターリーブは、リードに最適化するなら16、ライトに最適化するなら512等、より大きな数を指定します。

 当然ですが、各要素は事前に用意されている必要があります。要素をそれぞれ disklabel にて作成しておきましょう。
 また、各要素は、ディスクの先頭のパーティションであってはなりません。("don't use a partition that starts at a beginning of the slice".)
 詳しくは、 ftp://stampede.cs.berkeley.edu/pub/ccd/ccd-960131.README を参照してください。

 

# ccdconfig ccd0 16 0 /dev/sd4d /dev/sd2d /dev/sd1d /dev/sd0d

# disklabel ccd0
# newfs /dev/rccd0c
# mount /dev/ccd0c /mnt

# umount /mnt
# ccdconfig -u ccd0

 

ccdを、ブート時にファイルシステムに組み込むようにします。

/etc/ccd.conf
ccd0 16 0 /dev/sd4d /dev/sd2d /dev/sd1d /dev/sd0d

 

/etc/fstab
/dev/ccd0c /ccd0 ffs rw 1 1

# mkdir /ccd0
# reboot

 

※2Gx3で6GBのCCDを構築後、2Gx4に増設して再構築しても、CCDを6GBと誤認識される場合がありました。注意しましょう。
※標準では、sd0〜sd4 までのデバイスが用意されています。sd5 を利用する場合、/dev にてデバイスを作成(./MAKEDEV sd5)する必要があります。

 


OSインストール後にサーバ名/IPを変更する方法

 

/etc/hostname.le0
inet asuka 255.255.255.0 210.160.55.255 link0 -link1

「inet」「インターフェースに対応するサーバ名」「ネットマスク」「ブロードキャストアドレス」「インクレイヤディレクティブ」

 

/etc/hosts
127.0.0.1 localhost
210.160.55.27 asuka asuka.nmt.ne.jp

「IPアドレス」「サーバ名」「サーバ名(ドメイン付き)」

 

/etc/myname
asuka

 

ネットワークに合わせて、「/etc/resolv.conf」「/etc/mygate」等も必要ならば適宜変更します。

その他サーバプログラムの設定ファイルも必要に応じ書きかえます。
(Ex.「/etc/ftpaccess」)

 


スクリーンセーバーの停止

/etc/rc
# if [ -x /usr/sbin/screenblank ]; then
# echo -n ' screenblank'; /usr/sbin/screenblank
# fi

screenblank を使いたくない場合は、起動させないようにしましょう。

 


dump の使い方

# dump -0ua -f /dev/rst0 /

0 … レベル0「フルダンプ」
u … ダンプを取った日付を記録する
a … テープ長の指定「オートサイズ」
f … ダンプ先ファイルの指定「/dev/rst0」
ダンプ源 … マウントされているファイルシステムならパス名を、マウントされていなければデバイス名を使用。

 

ダンプの例(DDS1テープにバックアップした場合)
root@nike# dump -0ua -f /dev/rst0 /
DUMP: Date of this level 0 dump: Wed Jan 28 18:42:24 1998
DUMP: Date of last level 0 dump: the epoch
DUMP: Dumping /dev/rsd3a (/) to /dev/rst0
DUMP: mapping (Pass I) [regular files]
DUMP: mapping (Pass II) [directories]
DUMP: estimated 325316 tape blocks.
DUMP: Volume 1 started at: Wed Jan 28 18:42:51 1998
DUMP: dumping (Pass III) [directories]
DUMP: dumping (Pass IV) [regular files]
DUMP: 32.24% done, finished in 0:10
DUMP: 68.57% done, finished in 0:04
DUMP: 325954 tape blocks on 1 volume
DUMP: Volume 1 completed at: Wed Jan 28 18:57:12 1998
DUMP: Volume 1 took 0:14:21
DUMP: Volume 1 transfer rate: 378 KB/s
DUMP: Date of this level 0 dump: Wed Jan 28 18:42:24 1998
DUMP: Date this dump completed: Wed Jan 28 18:57:12 1998
DUMP: Average transfer rate: 378 KB/s
DUMP: level 0 dump on Wed Jan 28 18:42:24 1998
DUMP: Closing /dev/rst0
DUMP: DUMP IS DONE

 


restore の使い方

# newfs /dev/rsd0e
# mount /dev/sd0e /mnt
# cd /mnt
# restore -rv -f /dev/rst0

r…リストア
v…状況表示あり
f…リストア源ファイルの指定「/dev/rst0」

 

リストアの例
root@nike# mount /dev/ccd0c /mnt
root@nike# cd /mnt
root@nike# restore -rv -f /dev/rst0
Verify tape and initialize maps
Tape block size is 10
Dump date: Wed Jan 28 18:42:24 1998
Dumped from: the epoch
Level 0 dump of / on nike:/dev/sd3a
Label: none
Begin level 0 restore
Initialize symbol table.
Extract directories from tape
Calculate extraction list.
Make node …
Make node …
Make node …

Create hard link …
Create hard link …
Create hard link …
Set directory mode, owner, and times.
Check the symbol table.
Check pointing the restore

 

そのほか、対話的に操作が可能な「i」オプション等があります。

# restore if foo.dmp

 


NFS の設定

【サーバ側の設定】

・NFSをサポートしたカーネルを構築します。

・「rc.conf」にて、NFS Server としてブートするように設定します。(mountd, nfsd(, rpc.lockd))

/etc/rc.conf
# nfs_server=NO
nfs_server=YES

・エクスポートするファイルシステムの設定をおこなう。

/etc/exports
ファイルシステム「/ccd0」、アクセス権限ユーザ=「nfsuser」、ホスト「nfschild」 に対し公開する場合。
/ccd0 -maproot=nfsuser nfschild

ファイルシステム「/ccd0」、アクセス権限ユーザ=「nfsuser」、ホスト「210.160.55.x」 に対し公開する場合。
/ccd0 -maproot=nfsuser -network 210.160.55 -mask 255.255.255.0

※存在しないホスト名を書くと、万人に対し公開を許してしまう。
※外部 DNS を信頼する場合、注意。DNS ZONE DATA をを改ざんされると危険。
※IP アドレスで設定するほうが安全。IP スプーフィング(偽装)に注意。(Ref. "NIS&NFS" Section8.3)
※最も簡単・確実な手段は、ファイルを暗号化することだと思われる。

 

 

【クライアント側の設定】

・「rc.conf」にて、NFS Client としてブートするように設定します。(nfsiod)

/etc/rc.conf
# nfs_client=NO
nfs_client=YES

 

手動マウントの場合、
# mount -t nfs -o nosuid -o -T nfsparent:/ccd0 /mnt
nosuid。TCPによる通信。マウント元は nfsparent の /ccd0。マウント先は /mnt。

参考)http://www.jp.freebsd.org/www.freebsd.org/ja_JP.EUC/handbook/nfs.html

 

 

※NFS(Network File System)は、NFS(Network Failure System)という異名もあるとおり、面倒なトラブル・セキュリティホールの引き金ともなります。最初から使わないようにするか、使う場合には細心の注意をもっておこないましょう。

 


リミッタの操作について

 リミッタとは、シェルにより定められる「システムリソースの利用できる上限」のことであり、ハードリミットとソフトリミットとがあります。ソフトリミットはハードリミットを越えて設定することは出来ず、ハードリミットを増加させることはスーパーユーザの特権となります。

ハードリミットの状態表示
# ulimit -H -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) unlimited
data(kbytes) 65536
stack(kbytes) 65536
lockedmem(kbytes) 28508
memory(kbytes) 28508
nofiles(descriptors) 892
processes unlimited

 

ソフトリミットの状態表示
# ulimit -S -a
time(cpu-seconds) unlimited
file(blocks) unlimited
coredump(blocks) unlimited
data(kbytes) 16384
stack(kbytes) 512
lockedmem(kbytes) 9502
memory(kbytes) 28504
nofiles(descriptors) 64
processes 80

 

 OpenBSD の場合、リミッタの設定が少々厳しい傾向がありますので、大掛かりなプログラムを実行するような時には、リミッタを増大させる必要があるかも知れません。

リミッタの緩和
ulimit -d 65536
ulimit -s 65536
ulimit -l 28508
ulimit -m 28508
ulimit -n 892
ulimit -p unlimited
ulimit -a > /tmp/ulimit.log

 


Security Advisories

 OpenBSD 2.3 に関する勧告。これらの問題は全て OpenBSD-current にて解決済みです。

 パッチの当て方については、パッチの中にある記述等を参照してください。

(Ex.)
# cd /usr/src/sys/vm
# patch -p0 < ~/immutable.patch

# cd /
# tar xvfzp ~/Xawfix.tgz

# cd /usr/src/sys/netinet
# patch -p0 < ~/ipsec.patch

# cd /usr/src/sys/kern
# patch -p0 < ~/kill.patch

カーネルの再構築

 


bash のインストール

OpenBSD/sparc では、なぜか 2.02 が「bus error」のため動きません。(2.01.1 を代用可能)

% zcat bash-2.02.tar.gz | tar xvf -
% cd bash-2.02
% ./configure
% make
% make tests      ←必要ならば
% su
# make install

【インストールされるファイル】
/usr/local/bin/bash
/usr/local/bin/bashbug
/usr/local/man/man1/bash.1
/usr/local/man/man1/bashbug.1
/usr/local/info/bash.info

 root も bash を利用する場合、かつ /usr/local/bin がルートとは別個のパーティションに存在する場合、シェルのあるパーティションがマウント失敗したときのことを考えて、ルートパーティションと同一の /bin 配下にシェルをコピーしておくのが無難かもしれません。(もちろん、しなくても良い)

# mv /usr/local/bin/bash /bin/bash
# ln -s /bin/bash /usr/local/bin/bash

 ホームディレクトリに、bash のリソースファイル「.bashrc」を作ります。

.bashrc
# $Id: dot.profile,v 1.10.2.1 1997/03/06 22:27:37 joerg Exp $
#

alias h="history 25"
alias j="jobs -l"
alias la="ls -a"
alias lf="ls -FA"
alias ll="ls -lA"



export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:."
export MANPATH="/usr/local/lib/perl5/man:/usr/local/man/ja_JP.EUC:/usr/local/man:/usr/man:/usr/share/man:/usr/X11R6/man"

export LANG=ja_JP.EUC
export JLESSCHARSET=japanese-euc

export EDITOR=mule
export PAGER=less
export BLOCKSIZE=K

#export LD_PRELOAD=/usr/lib/libxpg4.so.2.0
#export XNLSPATH=/usr/local/netscape/nls

export PS1="\u@\h\\$ "

# A righteous umask
umask 22

stty crt erase ^h


#if ($?prompt) then
# # An interactive shell -- set some stuff up
# set filec
# set history = 100
# set savehist = 100
# set mail = (/var/mail/$USER)
#endif

「% ln -s .bashrc .bash_profile」にて、シンボリックリンクを張っておきます。

「# echo /bin/bash >> /etc/shells」にて、/etc/shells に bash を追加します。

「% chpass -s /bin/bash」にてログインシェルを変更します。

 bash のバージョンチェックは、「$ bash -version」にて行なえます。

 


FD のインストール

$ zcat FD-1.03g.tar.gz | tar xvf -
$ cd FD-1.03g
$ make config
$ make
$ cp _fdrc fdrc

fdrc
SORTTYPE = 1

DISPLAYMODE = 3

SORTTREE = 1

PAGER = less
EDITOR = mule
SHELL = $SHELL

$ su
# make install

【インストールされるファイル】
/etc/fdrc
/usr/local/bin/fd
/usr/local/bin/fd-unicd.tbl
/usr/local/man/man1/fd.1

 ファイルのオーナーとグループを、root/wheel に直しておきましょう。

$ chown root.wheel /etc/fdrc
$ chown root.wheel /usr/local/bin/fd
$ chown root.wheel /usr/local/bin/fd-unicd.tbl
$ chown root.wheel /usr/local/man/man1/fd.1

 


less のインストール

$ zcat less-332.tar.gz | tar xvf -
$ cd less-332
$ zcat ../less-332-iso241.patch.gz | patch
$ zcat ../less-332-iso241-242.patch.gz | patch
$ sh configure
$ make
$ su
# make install

【インストールされるファイル】
/usr/local/man/man1
/usr/local/bin/less
/usr/local/bin/lesskey
/usr/local/bin/lessecho
/usr/local/man/man1/less.1
/usr/local/man/man1/lesskey.1

 less のバージョンチェックは、「$ less -V」にて行なえます。

 


mule のインストール

for FreeBSD

$ zcat mule-2.3.tar.gz | tar xvf -
$ cd mule
$ ./configure --terminal-face i386-unknown-freebsd
$ make
$ su
# make install

 


emacs のインストール

 残念ながら、OpenBSD では mule のコンパイルが通らないので、emacs を代用します。

$ zcat emacs-20.2.tar.gz | tar xvf -
$ zcat leim-20.2.tar.gz | tar xvf -
$ cd emacs-20.2
$ ./configure --with-x-toolkit=athena    ← X を使わないなら --with-x-toolkit〜 は不要

 [sparc-unknown-openbsd2.3]として認識されます。

$ make
$ su
# make install

【インストールされるファイル】
/usr/local/share/emacs 配下
/usr/local/info 配下
/usr/local/libexec/emacs 配下
/usr/local/man/man1/ctags.1
/usr/local/man/man1/emacs.1
/usr/local/man/man1/etags.1
/usr/local/bin/b2m
/usr/local/bin/ctags
/usr/local/bin/emacs
/usr/local/bin/emacs-20.2
/usr/local/bin/emacsclient
/usr/local/bin/etags
/usr/local/bin/rcs-checkin

 

 emacs を mule というコマンド名でも起動できるように、シンボリックリンクを張っておきましょう。(もちろん、しなくても良い)

# ln -s /usr/local/bin/emacs /usr/local/bin/mule

 

 ~/.emacs を設定します。

~/.emacs
(set-language-environment "Japanese")
(set-default-font "-*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard")

 

 参考)http://www.kdel.info.eng.osaka-cu.ac.jp/~miya/Install/FreeBSD/emacs.html

 


SKK のインストール

α. SKK 9.6 on Mule 19.28

$ zcat skk9.6.tar.gz | tar xvf -
$ cd skk-9.6
$ ./condifure

Makefile
#datadir = ${prefix}/share
datadir = ${prefix}/lib

#EMACS = emacs
EMACS = mule

#ELISPDIR = $(datadir)/emacs/site-lisp
ELISPDIR = $(datadir)/mule/site-lisp

 

etc/Makefile
#datadir = ${prefix}/share
datadir = ${prefix}/lib

 

lisp/Makefile
#datadir = ${prefix}/share
datadir = ${prefix}/lib

#EMACS = emacs
EMACS = mule

#ELISPDIR = $(datadir)/emacs/site-lisp
ELISPDIR = $(datadir)/mule/site-lisp

 

skkserv/Makefile
#datadir = ${prefix}/share
datadir = ${prefix}/lib

 

lisp/skk-tut.el
;; (defvar skk-tut-file "/usr/local/share/skk/SKK.tut"
(defvar skk-tut-file "/usr/local/lib/skk/SKK.tut"

$ make
$ su
# make install

【インストールされるファイル】
/usr/local/lib/mule/site-lisp 配下
/usr/local/libexec/skkserv
/usr/local/bin/skkdic-expr
/usr/local/bin/skkdic-sort
/usr/local/bin/skkdic-count
/usr/local/info/ 配下
/usr/local/lib/skk/SKK.tut
/usr/local/lib/skk/SKK.tut.E
/usr/local/lib/skk/SKK-JISYO.L

 

β. SKK 10.39 on Emacs 20.2

$ zcat skk10.39.tar.gz | tar xvf -
$ cd skk-10
$ ./configure
$ make
$ su
# make install

【インストールされるファイル】
/usr/local/share/emacs/site-lisp 配下
/usr/local/libexec/skkserv
/usr/local/bin/skkdic-expr
/usr/local/bin/skkdic-sort
/usr/local/bin/skkdic-count
/usr/local/info/ 配下
/usr/local/share/skk/SKK.tut
/usr/local/share/skk/SKK.tut.E
/usr/local/share/skk/SKK-JISYO.L

 

αβ共通

~/.emacs
以下の内容を追加。

(global-set-key "\C-x\C-j" 'skk-mode)
(global-set-key "\C-xj" 'skk-auto-fill-mode)
(global-set-key "\C-xt" 'skk-tutorial)
(autoload 'skk-mode "skk" nil t)
(autoload 'skk-tutorial "skk-tut" nil t)
(autoload 'skk-check-jisyo "skk-tools" nil t)
(autoload 'skk-merge "skk-tools" nil t)
(autoload 'skk-diff "skk-tools" nil t)

(autoload 'skk-isearch-mode-setup "skk-isearch" nil t)
(autoload 'skk-isearch-mode-cleanup "skk-isearch" nil t)
(add-hook 'isearch-mode-hook
(function (lambda ()
(and (boundp 'skk-mode) skk-mode
(skk-isearch-mode-setup)))))
(add-hook 'isearch-mode-end-hook
(function (lambda ()
(and (boundp 'skk-mode) skk-mode
(skk-isearch-mode-cleanup)
(skk-set-cursor-color-properly)))))

 

~/.skk
以下の内容を追加。サーバホストは skkserv を動かしているサーバ名。

(setq skk-server-host "skkserv.nmt.ne.jp")
(setq skk-serv "/usr/local/libexec/skkserv")
(setq skk-aux-large-jisyo "/usr/local/share/skk/SKK-JISYO.L") ←適宜変更
(setq skk-server-portnum 1178)

 

 emacs を X 上で起動し、「C-x t」と入力すると、チュートリアルが始まります。

 


Perl のインストール

$ zcat perl5.005_01.tar.gz | tar xvf -
$ cd perl5.005_01
$ ./Configure -d

 本来は「Makefile」中の「libs = -lm -lc」を「libs = -lxpg4 -lm -lc」と書き換えるところですが、OpenBSD には libxpg4 が無いので、そのまま置いておきます。

$ make

 libxpg4 をリンクしない場合、ロケールの解決に失敗します。これは環境変数 LC_ALL に C を設定することで、とりあえず回避できます。

$ export LC_ALL=C

$ make test     ←「All tests successful.」と表示されることを確認
$ su
# make install

 バージョンは「$ perl -v 」で確認できます。

 


xntpd のインストール

Network Time Protocol Daemon を使って、ネットワーク経由で時刻合わせを行なうようにします。

$ zcat xntp3-5.93-export.tar.gz | tar xvf -
$ cd xntp3-5.93-export
$ ./configure

「config.h」中の「#define HAVE_TIMER_SETTIME 1」をコメントアウトする。

$ make
$ su
# make install

【インストールされるファイル】
/usr/local/bin/ntpdate
/usr/local/bin/ntpq
/usr/local/bin/ntptrace
/usr/local/bin/xntpd
/usr/local/bin/xntpdc
/usr/local/bin/tickadj
/usr/local/bin/ntptime

「/etc/ntp.conf」を設定します。

/etc/ntp.conf
server yamatohime.nmt.ne.jp
server azusa.miko.org

「rc.local」から起動されるよう設定します。

/etc/rc.local
if [ -f /usr/local/bin/xntpd ]; then
echo -n ' ntpd'; /usr/local/bin/xntpd
fi

「xntpd」の起動後は、「ntpq -p」コマンドで、デーモンの動作確認が行なえます。

 


gmake のインストール

$ zcat make-3.76.1.tar.gz | tar xvf -
$ cd make-3.76.1

$ ./configure
$ make
$ su
# make install

/usr/local/bin/make
/usr/local/info/make.info*

# mv /usr/local/bin/make /usr/local/bin/gmake

 


wu_ftpd のインストール

$ zcat wu-ftpd-2.6.0.tar.gz | tar xvf -
$ cd wu-ftpd-2.6.0
$ ./configure --prefix=/usr/local

config.h
/* #define MAIL_ADMIN 1 */
#undef MAIL_ADMIN

 

support/ftw.c
先頭行近くに

#if defined(__OpenBSD__) || defined(__FreeBSD__)
#define NO_MALLOC_PROTO
#endif

 

src/extensions.c
先頭行近くに

#if defined(__OpenBSD__) || defined(__FreeBSD__)
#define REGEXEC
#endif

 

src/Makefile
ftpd: ${OBJS}
gcc -g -O2 -I.. -I../support -o $@ ${OBJS} ../support/ftw.o

$ gmake
$ su
# gmake install

【インストールされるファイル】
/usr/local/sbin/wu.ftpd
/usr/local/bin/ftpshut
/usr/local/bin/ftpcount
/usr/local/bin/ftpwho
/usr/local/man/man8/ftpd.8
/usr/local/man/man1/ftpcount.1
/usr/local/man/man1/ftpwho.1
/usr/local/man/man8/ftpshut.8
/usr/local/man/man5/ftpaccess.5
/usr/local/man/man5/ftphosts.5
/usr/local/man/man5/ftpconversions.5
/usr/local/man/man5/xferlog.5

 

【インストールされるファイル(2.5.2-academ-beta15)】
/usr/libexec/ftpd -> /usr/libexec/ftpd-old にリネームされる
/usr/libexec/ftpd
/usr/sbin/ftpshut
/usr/sbin/ftpcount
/usr/sbin/ftpwho
/usr/share/man/cat8/ftpd.0
/usr/share/man/cat1/ftpcount.0
/usr/share/man/cat1/ftpwho.0
/usr/share/man/cat8/ftpshut.0
/usr/share/man/cat5/ftpaccess.0
/usr/share/man/cat5/ftphosts.0
/usr/share/man/cat5/ftpconversions.0
/usr/share/man/cat5/xferlog.0

 

doc/example/中の ftpaccess, ftpconversions, ftpgroups, ftphosts を /etc/ にコピーする。, ftpusers は、既存のものをそのまま使用する。

# cp doc/examples/ftpaccess /etc/
# cp doc/examples/ftpconversions /etc/
# cp doc/examples/ftpgroups /etc/
# cp doc/examples/ftphosts /etc/

/etc/ftpaccess
class all real,guest,anonymous *
guestgroup nmtusers

#limit all 10 Any /etc/msgs/msg.dead
limit all 100 Any /home/ftp/etc/msgs/msg.toomany

readme README* login
readme README* cwd=*

#message /welcome.msg login
#message .message cwd=*
message /etc/msgs/msg.login login

compress yes all
tar yes all

log commands real,guest,anonymous
log transfers real,guest,anonymous inbound,outbound

#shutdown /etc/shutmsg

#email user@hostname
email ftpadmin@yuugao.nmt.ne.jp

 

/etc/ftpconversions
:.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
: : :.tar.Z:/bin/tar -c -Z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
: : :.tar.gz:/bin/tar -c -z -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP

 

/etc/ftpgroup
#test:ENCRYPTED PASSWORD HERE:archive

 

/etc/ftphosts
# Example host access file
#
# Everything after a '#' is treated as comment,
# empty lines are ignored

# allow bartm somehost.domain
# deny fred otherhost.domain 131.211.32.*

 

ftpadmin のメールアドレスを作成します。
MTA が sendmail の場合は、「/etc/aliases」に「ftpadmin:root」と追加し、「newaliases」を実行します。
MTA が qmail の場合は、「# echo \&root > /var/qmail/alias/.qmail-ftpadmin」を実行します。

 

Anonymous FTP 用のディレクトリツリーを作成します。

# mkdir -p /home/ftp/etc/msgs
# mkdir /home/ftp/bin
# mkdir /home/ftp/pub
# cp /bin/ls /home/ftp/bin/ls

bin ディレクトリに tar 等を入れておくと、「get (dir).tar」というコマンドを使うことができるようになるので、サーバの運用ポリシーに従い、適宜加えます。
(compress, tar, gzip, etc...)

# cp /usr/bin/gzip /home/ftp/bin/gzip
# cp /usr/bin/compress /home/ftp/bin/compress
# cp /bin/tar /home/ftp/bin/tar     (FreeBSD の場合は、「# cp /usr/bin/tar /home/ftp/bin/tar」)

/home/ftp/etc/msgs/msg.login
Welcome to Yuugao archive.

An unsupported FTP service of New Media Tokushima Co.ltd, Tokushima, Japan.
Use entirely at your own risk - no warranty is expressed or inpressed.

If you have any problems using this service, please send E-mail to
"%E"

All transfers are logged with your host name and email address.
If you do not like this policy, disconnect now.

Local time is %T (GMT+0900).
Current number of users [%N / %M].

 

/home/ftp/etc/msgs/msg.toomany
Sorry, there are too many FTP users using the system at this
time. Please try again later. There is currently a limit of %M
FTP users.

 

タイムゾーン周りの設定を行ないます。これをしないと、AnonymousFTP等、chroot()を伴うアクセス時に、ファイルのタイムスタンプがJSTでなく、GMTで表示されてしまいます。

# mkdir -p /home/ftp/usr/share/zoneinfo
# cp /usr/share/zoneinfo/Japan /home/ftp/usr/share/zoneinfo/Japan
# ln -s /usr/share/zoneinfo/Japan /home/ftp/etc/localtime

(FreeBSD の場合は、「# cp /etc/localtime /home/ftp/etc/localtime」のみ)

 

 

Anonymous FTP を許可する場合には、

「/etc/group」に「ftp」「ftpadmin」を加えます。

/etc/group
ftp:*:21:
ftpadmin:*:22:

「vipw」にて「ftp」を加えます。

# vipw
ftp:*:21:21::0:0:AnonymousFTP:/home/ftp:/sbin/nologin
ftpadmin:*:22:22::0:0:FTPAdmin:/home/ftp/pub:/bin/sh

(FreeBSD の場合は、ftp の shell を /nonexistent に設定します)

ftpadmin 宛ての メールをrootに転送します。
MTA が sendmail の場合は、「/etc/aliases」に「ftpadmin:root」と追加し、「newaliases」を実行します。
MTA が qmail の場合は、「# echo \&root > /home/ftp/pub/.qmail 」を実行します。

# chown -R ftpadmin.ftpadmin /home/ftp
# passwd ftpadmin

nmtusers に属するユーザのFTPログイン時、/home に chroot させたい場合、vipw にてホームディレクトリを「/home/./yama」というふうに設定しなおし、/home/bin/ls, /home/etc/msgs/msg.login を用意します。

# mkdir /home/bin
# cp /bin/ls /home/bin/ls
# cp /usr/bin/gzip /home/bin/gzip
# cp /usr/bin/compress /home/bin/compress
# cp /bin/tar /home/bin/tar     (FreeBSD の場合は、「# cp /usr/bin/tar /home/bin/tar」)
# mkdir -p /home/etc/msgs
# mule /home/etc/msgs/msg.login

/home/etc/msgs/msg.login
Welcome to Yuugao archive.

If you have any problems using this service, please send E-mail to
"%E"

Local time is %T (GMT+0900).
Current number of users [%N / %M].

# mkdir -p /home/usr/share/zoneinfo
# cp /usr/share/zoneinfo/Japan /home/usr/share/zoneinfo/Japan
# ln -s /usr/share/zoneinfo/Japan /home/etc/localtime

(FreeBSD の場合は、「# cp /etc/localtime /home/etc/localtime」のみ)

 

 inetd を利用する場合

/etc/inetd.conf
#ftp stream tcp nowait root /usr/libexec/ftpd ftpd -US
ftp stream tcp nowait root /usr/local/sbin/wu.ftpd wu.ftpd -a

# ps auxw | grep inetd
# kill -HUP (pid)

 

 ucspi-tcp を利用する場合

/etc/rc.local
/usr/local/bin/tcpserver 0 21 /usr/local/sbin/wu.ftpd -a &

 


ftpmirror のインストール

$ su
# zcat ftpmirror-1.2k.tar.gz | tar xvf - -C /usr/local/lib
# cd /usr/local/lib/ftpmirror

「mkdirinfo」「ftpmirror」の一行目を「#!/usr/bin/perl」に変更する。

# cp config/default-sample config/default

config/default を編集する。

config/default
# ftp-pass = ftp-admin@your.domain.name
ftp-pass = ftpadmin@yuugao.nmt.ne.jp

#unlink = rename
unlink = yes

# for OpenBSD
package = OpenBSD
ftp-server = ftp.openbsd.org
remote-directory = /pub/OpenBSD
local-directory = ~/pub/OpenBSD

# for Gutenberg
package = Gutenberg
ftp-server = uiarchive.cso.uiuc.edu
remote-directory = /pub/etext/gutenberg
local-directory = ~/pub/Gutenberg

# for FreeBSD
package = FreeBSD
ftp-server = ftp.jp.freebsd.org
remote-directory = /pub/FreeBSD
local-directory = ~/pub/FreeBSD

# for FreeBSD-nonUS
package = FreeBSD-nonUS
ftp-server = ftp.jp.freebsd.org
remote-directory = /pub/FreeBSD-nonUS
local-directory = ~/pub/FreeBSD-nonUS

# for XFree86
package = XFree86
ftp-server = ftp.xfree86.org
remote-directory = /pub/XFree86
local-directory = ~/pub/XFree86

# for Linux
package = Linux
ftp-server = ftp.jp.freebsd.org
remote-directory = /pub/Linux
local-directory = ~/pub/Linux

# for GNU
package = GNU
ftp-server = ftp.gnu.org
remote-directory = /pub/gnu
local-directory = ~/pub/GNU

# su ftpadmin
$ crontab -e

crontab -e
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.ThiPMo1834 installed on Sat Dec 13 17:52:54 1997)
# (Cron version -- $Id: crontab.c,v 1.11 1997/04/12 17:50:17 millert Exp $)
#
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday command
#
0 18 * * * /usr/local/lib/ftpmirror/ftpmirror OpenBSD

 


apache のインストール

$ zcat apache_1.3.0.tar.gz | tar xvf -
$ cd apache_1.3.0

$ ./configure --layout

パスの確認
Configuring for Apache, Version 1.3.0

Installation paths:
prefix: /usr/local/apache
exec_prefix: /usr/local/apache
bindir: /usr/local/apache/bin
sbindir: /usr/local/apache/sbin
libexecdir: /usr/local/apache/libexec
mandir: /usr/local/apache/man
sysconfdir: /usr/local/apache/etc
datadir: /usr/local/apache/share
includedir: /usr/local/apache/include
localstatedir: /usr/local/apache/var
runtimedir: /usr/local/apache/var/run
logfiledir: /usr/local/apache/var/log
proxycachedir: /usr/local/apache/var/proxy

Compilation paths:
HTTPD_ROOT: /usr/local/apache
SUEXEC_BIN: /usr/local/apache/sbin/suexec
SHARED_CORE_DIR: /usr/local/apache/libexec
DEFAULT_PIDLOG: var/run/httpd.pid
DEFAULT_SCOREBOARD: var/run/httpd.scoreboard
DEFAULT_LOCKFILE: var/run/httpd.lock
DEFAULT_XFERLOG: var/log/access_log
DEFAULT_ERRORLOG: var/log/error_log
TYPES_CONFIG_FILE: etc/mime.types
SERVER_CONFIG_FILE: etc/httpd.conf
ACCESS_CONFIG_FILE: etc/access.conf
RESOURCE_CONFIG_FILE: etc/srm.conf

 

$ ./configure --enable-suexec --suexec-caller=apache --suexec-userdir=public_html
$ make
$ su
# make install

 

【カスタマイズ】

 

/usr/local/apache/etc/httpd.conf
#HostnameLookups off
HostnameLookups on

#User nobody
#Group #-1
User apache
Group apache

#ServerAdmin you@your.address
ServerAdmin wwwadmin@nmt.ne.jp

#ServerName new.host.name
ServerName yuugao.nmt.ne.jp

 

/usr/local/apache/etc/access.conf
<Directory />
#Options None
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride None
</Directory>

<Directory /usr/local/etc/httpd/htdocs>

# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".

# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you (or at least, not yet).

Options Indexes FollowSymLinks Includes ExecCGI

 

/usr/local/apache/etc/srm.conf
DirectoryIndex index.shtml index.html index.htm

#ScriptAlias /cgi-bin/ /usr/local/apache/share/cgi-bin/
ScriptAlias /cgi-bin/ /usr/local/apache/share/cgi-bin/

#AddHandler cgi-script .cgi
AddHandler cgi-script .cgi

#AddType text/html .shtml
AddType text/html .shtml
#AddHandler server-parsed .shtml
AddHandler server-parsed .shtml

 

/usr/local/apache/etc/mime.types
# This file controls what MIME types are sent to the client for the
# given file extensions. Sending the correct MIME type to the client
# is important so they know how to handle the content of the file.
# Extra types can either be added here or by using an AddType directive
# in your config files.

# MIME type Extension
application/activemessage
application/andrew-inset
application/applefile
application/atomicmail
application/dca-rft
application/dec-dx
application/mac-binhex40 hqx
application/mac-compactpro cpt
application/macwriteii
application/msword doc
application/news-message-id
application/news-transmission
application/octet-stream bin dms lha lzh exe class ccr tad
application/oda oda
application/pdf pdf
application/postscript ai eps ps
application/powerpoint ppt
application/remote-printing
application/rtf rtf
application/slate
application/wita
application/wordperfect5.1
application/x-authorware-bin aab
application/x-authorware-map aam
application/x-authorware-seg aas

application/x-bcpio bcpio
application/x-cdlink vcd
application/x-compress
application/x-cpio cpio
application/x-csh csh
application/x-director dcr dir dxr fgd
application/x-dvi dvi
application/x-gtar gtar
application/x-gzip
application/x-hdf hdf
application/x-javascript js
application/x-koan skp skd skt skm
application/x-latex latex
application/x-mif mif
application/x-netcdf nc cdf
application/x-sh sh
application/x-shar shar
application/x-shockwave-Flash swf
application/x-stuffit sit
application/x-sv4cpio sv4cpio
application/x-sv4crc sv4crc
application/x-tar tar
application/x-tcl tcl
application/x-tex tex
application/x-texinfo texinfo texi
application/x-troff t tr roff
application/x-troff-man man
application/x-troff-me me
application/x-troff-ms ms
application/x-ustar ustar
application/x-wais-source src
application/zip zip
audio/basic au snd
audio/midi mid midi kar
audio/mpeg mpga mp2 mp3
audio/x-aiff aif aiff aifc
audio/x-pn-realaudio ram ra
audio/x-pn-realaudio-plugin rpm
#audio/x-realaudio ra
audio/x-twinvq vqf vql
audio/x-twinvq-plugin vqe

audio/x-wav wav
chemical/x-pdb pdb xyz
image/gif gif
image/ief ief
image/jpeg jpeg jpg jpe
image/png png
image/tiff tiff tif
image/x-cmu-raster ras
image/x-freehand fh4 fh5 fhc fh
image/x-portable-anymap pnm
image/x-portable-bitmap pbm
image/x-portable-graymap pgm
image/x-portable-pixmap ppm
image/x-rgb rgb
image/x-xbitmap xbm
image/x-xpixmap xpm
image/x-xwindowdump xwd
message/external-body
message/news
message/partial
message/rfc822
multipart/alternative
multipart/appledouble
multipart/digest
multipart/mixed
multipart/parallel
text/css css
text/html html htm
text/plain txt
text/richtext rtx
text/tab-separated-values tsv
text/x-setext etx
text/x-sgml sgml sgm
video/mpeg mpeg mpg mpe
video/quicktime qt mov
video/x-msvideo avi
video/x-sgi-movie movie
x-conference/x-cooltalk ice
x-world/x-vrml wrl vrml

ccr - MS Comic Chat
tad - TRON tad

 

【ユーザの設定】

「/etc/group」に「apache」「wwwadmin」を加えます。

/etc/group
apache:*:80:
wwwadmin:*:81:

 

# vipw
apache:*:80:80::0:0:Apache HTTPd:/usr/local/etc/httpd:/sbin/nologin
wwwadmin:*:81:81::0:0:HTDocs Maintenance:/usr/local/apache/share/htdocs:/bin/sh

# chown -R wwwadmin.wwwadmin /usr/local/apache/share/htdocs

 

【動作試験】

# /usr/local/apache/sbin/apachectl start …HTTPd起動

「http://localhost/」を参照できることを確認。

動作試験
yama@yuugao$ telnet localhost http
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Date: Mon, 06 Jul 1998 00:35:55 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Wed, 20 May 1998 14:59:42 GMT
ETag: "3c093-656-3562efde"
Accept-Ranges: bytes
Content-Length: 1622
Connection: close
Content-Type: text/html

Connection closed by foreign host.

# /usr/local/apache/sbin/apachectl stop …HTTPd停止

 

【ローカルサーバで wwwadmin 宛てのメールを受け取る場合】

wwwadmin の Alias を作成します。
MTA が sendmail の場合は、「/etc/aliases」に「wwwadmin:root」と追加し、「newaliases」を実行します。
MTA が qmail の場合は、「/usr/local/apache/share/htdocs/.qmail」に「&root」と書きます。

 

【自動起動の設定】

/etc/rc.local
/usr/local/apache/sbin/apachectl start

 

【注意】

ユーザのホームページを設置する場合、ユーザのホームディレクトリがシンボリックリンクを介して指定されるようなときには、アクセスが拒否される。

(Ex.)

/home -> /usr/home のとき、
「yama:*:1000:1000:Yamamoto:/home/./yama:/bin/bash」と登録されているような場合。

「yama:*:1000:1000:Yamamoto:/usr/home/./yama:/bin/bash」ならば問題ない。

 


analog のインストール

# cd /usr/local/apache
# zcat /home/yama/analog3.0.tar.gz | tar xvf -
# ln -s analog3.0 analog

/etc/group
analog:*:85:

 

# vipw
analog:*:85:85::0:0:AnaLog:/:/bin/csh

# chown -R analog.analog analog3.0
# mkdir -p /usr/local/apache/share/htdocs/analog/images
# chown -R analog.analog /usr/local/apache/share/htdocs/analog
# su analog
% cd analog

analhead.h
/* #define HTTPDIR "/usr/local/etc/httpd/" */
#define HTTPDIR "/usr/local/apache/"

/* #define LOGFILE HTTPDIR"logs/access_log" */
#define LOGFILE HTTPDIR"var/logs/access_log"


/* #define REQUEST (TRUE) *//* Request report */
#define REQUEST (FALSE) /* Request report */ ←かなり大きくなるので出力抑止

 

% make

analog.cfg
#LOGFILE logfile.log
#HOSTNAME "[my organisation]"
LOGFILE /usr/local/apache/var/log/access_log*
OUTFILE /usr/local/apache/share/htdocs/analog/index.html
HOSTNAME "[Yuugao]"

% cp -R images /usr/local/apache/share/htdocs/analog

( Ref. http://www.statslab.cam.ac.uk/~sret1/analog/docs/Readme.html )

/etc/crontab
41 18 * * * analog /usr/local/apache/analog/analog

 


squidのインストール

$ zcat squid-1.1.21-src.tar.gz | tar xvf -
$ cd squid-1.1.21
$ ./configure
$ make all
$ su
# make install

/usr/local/squid 配下

/usr/local/squid/etc/squid.conf を編集

/usr/local/squid/etc/squid.conf
#http_port 3128
http_port 8080

#ftp_user squid@
ftp_user squid@yuugao.nmt.ne.jp

#cache_mgr webmaster
cache_mgr webmaster

#cache_effective_user nobody nogroup
cache_effective_user squid squid

 

「/etc/group」に「squid」を加えます。

/etc/group
squid:*:82:

「vipw」にて「squid」を加えます。

# vipw
squid:*:82:82::0:0:Squid Proxy:/usr/local/squid:/bin/sh

# mkdir /usr/local/squid/cache
# chown -R squid /usr/local/squid/cache
# chgrp -R squid /usr/local/squid/cache
# chown -R squid /usr/local/squid/logs
# chgrp -R squid /usr/local/squid/logs

 

「rc.local」から起動されるよう設定します。

/etc/rc.local
if [ -f /usr/local/squid/bin/RunCache ]; then
echo -n ' squid'; /usr/local/squid/bin/RunCache &
fi

 

# /usr/local/squid/bin/squid -z により、キャッシュの階層を作成します。

 

※大規模キャッシュを構築する場合、シェルのリミッタに引っかかって、プロセスが強制終了されることがあります。この場合、RunCache スクリプトの中で ulimit を使用し、リミッタの上限を引き上げてやる必要があります。

RunCache
#Appended by Tatyana.
ulimit -t unlimited
ulimit -f unlimited
ulimit -d unlimited
ulimit -s unlimited
ulimit -c unlimited
ulimit -m unlimited
ulimit -l unlimited
ulimit -u unlimited
ulimit -n unlimited

ハードリミットの上限表示: ulimit -H -a
ソフトリミットの上限表示: ulimit -S -a

 

【ログのローテート】

logs/squid.pid がロストする場合がある(謎)ので、pid取得ルーチンを作成し使用する。

/usr/local/squid/getsquidpid.pl
#!/usr/local/bin/perl

@log = `ps auxw`;
$m = @log;
while($m--){
@buff = split(/\s+/, $log[$m]);
if($buff[10] eq 'squid'){
print "$buff[1]";
last;
}
}

cronにて「/bin/kill -USR1 `/usr/local/squid/getsquidpid.pl`」を実行。

(注意:実行中、squidは少々不安定になるようだ)

 


cache-statsのインストール

squid.conf の設定が以下のようになっていないといけないので、適宜修正を加える。

squid.conf
emulate_httpd_log off …デフォルト
logfile_rotate 1

 

変更後、squid をリブートする。

squid の簡単なリブート方法
kill -9 (pid of RunCache)
kill (pid of squid)
RunCache &

 

$ zcat cache-stats-1.4.tar.gz | tar xvf -
$ cd cache-stats-1.4

squidstats.sh を編集する。

squidstats.sh
#HOST=cache1.sbs.de
HOST=yuugao.nmt.ne.jp
TOPN=50
#LOGDIR=/var/adm/squid
LOGDIR=/usr/local/squid/logs
#BINDIR=/www/bin
BINDIR=/usr/home/yama/cache-stats-1.4
#WWWDIR=/www/cache.sbs.de/pub/stats/squid
WWWDIR=/usr/local/etc/httpd/htdocs/squid
#PIDFILE=/var/run/squid.pid
PIDFILE=/usr/local/squid/logs/squid.pid
#GZIP=/usr/local/bin/gzip
GZIP=/usr/bin/gzip
#FIND=/sbin/find
FIND=/usr/bin/find
#RM=/sbin/rm
RM=/bin/rm

$BINDIR/access-summary.pl -m $HOST -p 8080 -n $TOPN -H < $SUMFILE > $WWWFILE

「access-extract-urls.pl」「access-extract.pl」「access-summary.pl」の先頭行を、
「#!/usr/local/bin/perl」から「#!/usr/bin/perl」に変更する。

スクリプトに実行属性を付与する。

$ chmod 755 access-extract-urls.pl
$ chmod 755 access-extract.pl
$ chmod 755 access-summary.pl
$ chmod 755 squidstats.sh

HTML 関連の設定をおこなう。

# mkdir /usr/local/etc/httpd/htdocs/squid
# chown -R squid /usr/local/etc/httpd/htdocs/squid
# chgrp -R squid /usr/local/etc/httpd/htdocs/squid
# cp -R img /usr/local/etc/httpd/htdocs/img

 

cron により、一日に一回実行されるように設定する。

# su squid
$ crontab -e

$ crontab -e
#
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour mday month wday command
#
0 0 * * * /home/yama/cache-stats-1.4/squidstats.sh

 

統計と同時に、ログはローテートされる。

 


qmail のインストール

※qmail with APOP :-)

$ su
# mkdir /var/qmail

 

group の追加をおこないます。

/etc/group
qmail:*:2107:
nofiles:*:2108:

 

user の追加をおこないます。

# vipw
alias:*:7790:2108::0:0:qmail:/var/qmail/alias:/sbin/nologin
qmaild:*:7791:2108::0:0:qmail:/var/qmail:/sbin/nologin
qmaill:*:7792:2108::0:0:qmail:/var/qmail:/sbin/nologin
qmailp:*:7793:2108::0:0:qmail:/var/qmail:/sbin/nologin
qmailq:*:7794:2107::0:0:qmail:/var/qmail:/sbin/nologin
qmailr:*:7795:2107::0:0:qmail:/var/qmail:/sbin/nologin
qmails:*:7796:2107::0:0:qmail:/var/qmail:/sbin/nologin

 

$ zcat qmail-1.03.tar.gz | tar xvf -
$ zcat qmapop-0.3.tar.gz | tar xvf -
$ cd qmail-1.03

各種パッチを当てます
$ patch -p1 < ../qmail-1.02-popup.c.diff           .... qmapop 0.3 附属のものを qmail 1.02以降に対応させたもの
$ patch -p1 < ../qmail-date-localtime.patch
$ patch -p1 < ../qmail-1.02-smtpd-newline.diff
$ patch -p1 < ../qmail-1.02-zaurus.diff

qmail が動いている場合は、
# kill (pid_of_qmail-send)

# make setup
# make check

 

設定ファイルの雛形を作成します。

# ./config

 

雛形を元に、設定を煮詰めます。(Ref. INSTALL.ctl)

/var/qmail/control/me
yuugao.nmt.ne.jp

サーバの FQDN を書きます。

 

/var/qmail/control/defaultdomain
nmt.ne.jp

ドットのないホスト名に追加されるドメイン名です。(Def: me)

 

/var/qmail/control/plusdomain
ne.jp

+記号で終わるホスト名に追加されるドメイン名です。(Def: me)

 

/var/qmail/control/locals
localhost.nmt.ne.jp
yuugao.nmt.ne.jp

ローカル配信するサーバ名の一覧です。(Def: me)

 

/var/qmail/control/rcpthosts
localhost.nmt.ne.jp
yuugao.nmt.ne.jp

受信ドメイン一覧に載っていないドメイン宛てのメールは、拒否するようになります。(Def: none)
ヴァーチャルメールサーバ利用する場合は、その各々のドメイン名を追加します。

削除すると、全て受諾するようになりますが、反面、第三者からの「予期せぬメール中継」に利用される恐れがあります。
予期せぬメール中継を拒否したい場合は、ucspi-tcpを組み合わせて実現します。

 

/var/qmail/control/defaulthost (option)
nmt.ne.jp のように設定。

ホスト部のないアドレスに追加するホスト名です。ホスト名でなくドメイン名を付けても構いません。(Def: me)

 

/var/qmail/control/virtualdomains (option)
town.kainan.tokushima.jp:kainant
forest-net.co.jp:alta
amaren.co.jp:amaren のように設定。

バーチャルドメイン宛てのメールを転送します。(Def: none)

上記の例の場合、user@amaren.co.jp は、 amaren-user@amaren.co.jp に配信されます。

バーチャルドメインを locals に含めてはなりません。ドメインが locals に含まれていれば、 virtualdomains の処理は起きなくなります。

 

/var/qmail/control/queuelifetime (option)
86400 のように設定。単位は秒。86400秒=1日。

メールキューの最大滞在時間を設定します。(Def: 7日)

 

/var/qmail/control/databytes (option)
2097152 のように設定。単位はBytes。

SMTPのデータサイズ上限を設定します。

 

/var/qmail/control/badmailfrom (option)
internetuse のように設定。

この発信者名を持つメールは、配信せず、ポイしちゃいます。;-)

spammarへの軽微な対処方法。(Def: none)

 

※設定ファイル変更後は、諸設定をチェックしてください。
# /var/qmail/bin/qmail-showctl | less

 

【エイリアスの設定】

「postmaster」「mailer-daemon」「root」宛てのメールを転送するよう設定します。

# echo '&root' > /var/qmail/alias/.qmail-postmaster
# echo '&root' > /var/qmail/alias/.qmail-mailer-daemon
# echo '&yama@yuugao.nmt.ne.jp' > /var/qmail/alias/.qmail-root

 

「ftpadmin」「wwwadmin」宛てのメールを転送するよう設定します。

# echo '&root' > /var/qmail/alias/.qmail-ftpadmin
# echo '&root' > /var/qmail/alias/.qmail-wwwadmin

「uucp」宛てのメールを受け取らないよう設定します。とりあえず、uucpの権限でホームディレクトリに書き込みが出来ないように設定しておきます。

# chmod 0 ~uucp

 

※defaultのエイリアス(.qmail-default)を設定すると、宛先不明で戻されるべきメールもaliasが受け取ってしまうようになるので注意。

 

【動作の確認】

# env - PATH="/var/qmail/bin:$PATH" qmail-start ./Mailbox splogger qmail &

maillog に「Dec 16 14:57:24 yuugao qmail: 882251844.657103 status: local 0/10 remote 0/20」という一行が出れば、qmail は正常に起動したということです。

ps auxw | grep qmail のディスプレイ
qmails 3733 0.0 0.6 92 172 p0 I+ 2:57PM 0:00.43 qmail-send
qmaill 17667 0.0 0.4 52 116 p0 I+ 2:57PM 0:00.11 splogger qmail
root 27467 0.0 0.4 48 128 p0 I+ 2:57PM 0:00.10 qmail-lspawn ./
Mailbox
qmailr 7577 0.0 0.4 40 124 p0 I+ 2:57PM 0:00.10 qmail-rspawn
qmailq 9415 0.0 0.4 40 124 p0 I+ 2:57PM 0:00.10 qmail-clean

 

qmail を使って、メールを配信してみます。

$ echo to: yama | /var/qmail/bin/qmail-inject

メールは、/home/yama/Mailbox に配信される筈です。

 

【起動時のqmail常駐】

boot 時に qmail を常駐させるように設定します。

/etc/rc.local
echo -n ' qmail'
env - PATH="/var/qmail/bin:$PATH" qmail-start ./Mailbox splogger qmail &

 

【Maildir の作成】

各ユーザのホームディレクトリごとに、メールディレクトリを作成します。

$ cd
$ /var/qmail/bin/maildirmake ./Maildir
$ echo './Maildir/' > .qmail

 

【sendmail の停止&置換】

OpenBSD では、デフォルトで sendmail が常駐しないようになっています。

常駐している場合には、

1) boot 時に sendmail を常駐させないように設定。
2) # kill -STOP (pid_of_sendmail)

 

sendmail プログラムを sendmail_wrapper に置き換えます。

# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

 

sendmail のキューにメールが溜まっていたら、「sendmail.bak -p」にてフラッシュを行ないます。

 

sendmail, binmail を使用不可にします。

# chmod 0 /usr/sbin/sendmail.bak
# chmod 0 /usr/bin/Mail
# chmod 0 /usr/bin/mail

 

【SMTP の常駐】

qmail-smtp を常駐させてください。

〜inetdを利用する場合〜

/inetd.conf に smtp での処理を追加します。comsat での処理があれば、削除します。変更後、「kill -HUP (pid_of_inetd)」にてinetdをリブートします。

/etc/inetd.conf
smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd
#comsat

 

〜tcpserverを利用する場合〜

 → ucspi-tcp の項を参照してください。

 


qmail 導入による諸設定の変更について

/etc/daily
# mailq > $TMP
/var/qmail/bin/qmail-qread > $TMP
# if ! grep -q "^Mail queue is empty$" $TMP; then
echo ""
echo "mail:"
cat $TMP
# fi

# sh /etc/security 2>&1 | mail -s "$host daily insecurity output" root
echo "Subject: $host daily insecurity output\n`sh /etc/security`" 2>&1 | sendmail root

 

# crontab -e
# do daily/weekly/monthly maintenance
# 30 1 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`/bin/hostname` daily output" root
# 30 3 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | mail -s "`/bin/hostname` weekly output" root
# 30 5 1 * * /bin/sh /etc/monthly 2>&1 | tee /var/log/monthly.out | mail -s "`/bin/hostname` monthly output" root

30 1 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | sendmail root
30 3 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | sendmail root
30 5 1 * * /bin/sh /etc/monthly 2>&1 | tee /var/log/monthly.out | sendmail root

 


qmail-pop3d のインストール

※qmail with APOP :-)

$ cd qmapop-0.3
$ ln -s ../qmail-1.03/compile compile
$ ln -s ../qmail-1.03/load load

Makefile (FreeBSD の場合)
checkpassword: checkpassword.o apopauth.o md5c.o load
    ./load checkpassword apopauth.o md5c.o -lcrypt

$ make

# vipw
apopdb:*:7797:2107::0:0:APOPDB:/var/qmail:/sbin/nologin

$ su
# make install
# /var/qmail/bin/apop -i

 

【常駐設定】

〜inetdを利用する場合〜

/etc/inetd.conf
pop3 stream tcp nowait root /var/qmail/bin/qmail-popup qmail-popup yuugao.nmt.ne.jp /var/qmail/bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir

# kill -HUP (pid_of_inetd)

 

〜tcpserverを利用する場合〜

 → ucspi-tcp の項を参照してください。

 

【apop設定の方法】

$ /var/qmail/bin/apop
Changing passphrase for mailbox "yama"
Please enter the new passphrase:********
Please reenter this passphrase:********

apop(1) apop(1)

NAME
apop - APOP パスフレーズデータベースを操作する

SYNOPSIS
apop [ -i ] [ -u name ] [ -m mailbox ] [ -d mailbox ] [ -p mailbox ]

DESCRIPTION
引数を指定せずに実行した場合、 apop は新しい APOP パスフレーズの入力をユーザに求めます。スーパーユーザだけが apop オプションを利用することができます。apop のデータベースは、ユーザ apopdb の所有する、モード 700 の、pwd, box, tmp というサブディレクトリを持つディレクトリツリーになっています。其々のメールボックスのデータベースエントリは、pwd または box 内のファイルとして存在しますが、その両方に存在することはありません。pwd 内にファイルがある場合は、maildir(5) の所在に関する情報は、/etc/passwd から取得されます。対して、box 内にファイルがある場合は、mailbox はユーザ pop の(メール)ホームディレクトリのサブディレクトリであると仮定されます。どちらのデータベースエントリーファイルにも、メールボックスを保護するパスフレーズしか含まれていません。ユーザ名 apopdb とpopは、APOPデータベースのパス名と共に、コンパイル時にインクルードファイル「conf-apop.h」中にて設定することができます。データベースのデフォルトのパス名は、/var/qmail/apopdb/ です。

OPTIONS
-i
  APOPデータベースが存在しない場合、新たに作成します。
-u name
  ログイン名が name であるユーザについて、新しいデータベースエントリを追加します。
-m mailbox
  /etc/passwd に関係しないメールボックスについて、新しいデータベースエントリを追加します。
-d mailbox
  メールボックスのデータベースエントリを削除します。
-p mailbox
  メールボックスについての新しいパスフレーズをユーザに求めます。

SEE ALSO
qmail(7), maildir(5), qmail-popup(8), qmail-pop3d(8).

 


nkf のインストール

$ mkdir nkf1.62
$ cd nkf1.62
$ gcc ../nkf.c -o nkf
$ su
# cp nkf /usr/local/bin/nkf

 


lha のインストール

$ zcat lha-114d.tgz | tar xvf -
$ cd lha-114d

「Makefile」中のマクロ「MACHINE」から「-DFTIME」を外し、「MANSECT」を「8」に変更

$ make
# su
$ make install

/usr/local/bin/lha
/usr/local/man/man8/lha.8

 


unzip のインストール

$ zcat unzip532.tar.gz | tar xvf -
$ cd unzip-5.32
$ ln -s unix/Makefile Makefile
$ make generic
$ su
# make install

 


bzip2 のインストール

$ zcat bzip2-0.1pl2.tar.gz | tar xvf -
$ cd bzip2-0.1pl2
$ make
$ su
# cp bzip2 /usr/local/bin
# ln -s /usr/local/bin/bzip2 /usr/local/bin/bunzip2
# cp bzip2.1 /usr/local/man/man1

 


XFree86 のインストール

$ su
# cd /usr
# mkdir X11R6
# cd X11R6
# sh /home/yama/X11/preinst.sh
# chmod 755 /home/yama/X11/extract
# /home/yama/X11/extract /home/yama/X11/X331*.tgz
# sh /home/yama/X11/postinst.sh

Do you wish to have this link installed (y/n)?n

# ln -s /usr/X11R6/bin/Xsun /usr/X11R6/bin/X または
# ln -s /usr/X11R6/bin/Xsun24 /usr/X11R6/bin/X

 

 

/dev/console にシステムログを出力されると X-Window の表示が乱れてしまいますので、必要ならこれを抑止します。

/etc/syslog.conf
#*.err;kern.debug;auth.notice;authpriv.none;mail.crit /dev/console
*.err;kern.debug;auth.notice;authpriv.none;mail.crit /var/log/messages

# kill -HUP (pid_of_syslogd)

あるいは、xconsole(1) を使っても良いでしょう。

 

 

ワークステーションをX端末として利用するには、以下のようにしてXサーバを起動します。

/etc/rc.local
if [ -f /usr/X11R6/bin/X ]; then
/usr/X11R6/bin/X -query wakamurasaki
fi

この場合、dairy, weekly, monthly の各処理は抑止しても良いかも知れません。(必要無いと判断するなら)

# crontab -e

crontab -e
# 30 1 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`/bin/hostname` daily output" root
# 30 3 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | mail -s "`/bin/hostname` weekly output" root
# 30 5 1 * * /bin/sh /etc/monthly 2>&1 | tee /var/log/monthly.out | mail -s "`/bin/hostname` monthly output" root

30 1 * * * /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | mail -s "`/bin/hostname` daily output" root
30 3 * * 6 /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | mail -s "`/bin/hostname` weekly output" root
30 5 1 * * /bin/sh /etc/monthly 2>&1 | tee /var/log/monthly.out | mail -s "`/bin/hostname` monthly output" root

 


xdm のインストール

/etc/rc.local
最後の行に
/usr/X11R6/bin/xdm

 

~/.xsession (実行ファイル)
#!/bin/sh
/usr/X11R6/bin/xclock &
/usr/X11R6/bin/xterm &
/usr/X11R6/bin/xterm &
/usr/X11R6/bin/xset s off &
/usr/X11R6/bin/twm

$ chmod 755 ~/.xsession

 

ログイン画面のカスタマイズは、以下のファイルを編集することで可能です。

/usr/X11R6/lib/X11/xdm/Xsetup_0
#!/bin/sh
# $XConsortium: Xsetup_0,v 1.3 93/09/28 14:30:31 gildea Exp $
xclock &
xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail

 


Xaw3d のインストール

$ zcat Xaw3d-1.5.tar.gz | tar xvf -
$ cd xc/lib/Xaw3d
$ mkdir -p X11/Xaw3d
$ cp -f *h X11/Xaw3d

Imakefile
# EXTRA_INCLUDES = -I.
EXTRA_INCLUDES = -I.

$ xmkmf -a
$ make
$ su
# mv /usr/X11R6/lib/libXaw.a /usr/X11R6/lib/libXaw.a.orig
# mv /usr/X11R6/lib/libXaw.so.6.1 /usr/X11R6/lib/libXaw.so.6.1.orig
# make install

# ln -s /usr/X11R6/lib/libXaw3d.a /usr/X11R6/lib/libXaw.a
# ln -s /usr/X11R6/lib/libXaw3d.so.6.1 /usr/X11R6/lib/libXaw.so.6.1

 


Xaw95 のインストール

$ zcat Xaw95-1.1-src.tar.gz | tar xvf -
$ cd Xaw95-1.1
$ mkdir -p X11/Xaw3d
$ cp -f *h X11/Xaw3d

Imakefile
# EXTRA_INCLUDES = -I.
EXTRA_INCLUDES = -I.

$ xmkmf -a
$ make
$ su
# mv /usr/X11R6/lib/libXaw.a /usr/X11R6/lib/libXaw.a.orig
# mv /usr/X11R6/lib/libXaw.so.6.1 /usr/X11R6/lib/libXaw.so.6.1.orig
# make install

/usr/X11R6/lib/libXaw.a
/usr/X11R6/lib/libXaw.so.6.1
/usr/X11R6/include/Xaw3d/ 配下

# mv /usr/X11R6/include/Xaw3d/ /usr/X11R6/include/X11/Xaw3d/

# ln -s /usr/X11R6/lib/libXaw.a /usr/X11R6/lib/libXaw3d.a
# ln -s /usr/X11R6/lib/libXaw.so.6.1 /usr/X11R6/lib/libXaw3d.so.6.1

 


KTerm のインストール

$ zcat kterm-6.2.0.tar.gz | tar xvf -
$ cd kterm-6.2.0
$ chmod 644 kterm.h
$ chmod 644 Imakefile
$ chmod 644 ptyx.h
$ chmod 644 KTerm.ad

kterm.h
#undef KTERM_XAW3D /* Xaw3d -DARROW_SCROLLBAR support */
#define KTERM_XAW3D /* Xaw3d -DARROW_SCROLLBAR support */

 

以下を設定すべきだが、libxpg4 が無いので不要。

Imakefile
#if InstallXtermSetUID
SetUIDProgramTarget(kterm,$(OBJS1),$(DEPLIBS1),XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB)
-lxpg4)
#else
NormalProgramTarget(kterm,$(OBJS1),$(DEPLIBS1),XkbClientLibs XawClientLibs,$(TERMCAPLIB) $(PTYLIB))
#endif

 

ja_JP なロケールが無いので、とりあえず C を使うようにする。

ptyx.h
#ifdef KTERM_XIM
/* # define EUCJPLOCALE "ja_JP.eucJP,ja_JP.ujis,ja_JP.EUC,japanese.euc,Japanese-EUC,ja,japan" */
#define EUCJPLOCALE "C"
#endif /* KTERM_XIM */

 

KTerm.ad
!*VT100*kanjiMode: jis
*VT100*kanjiMode: euc

 

$ xmkmf -a
$ make
$ su
# make install

/usr/X11R6/bin/kterm
/usr/X11R6/lib/X11/app-defaults/KTerm


xpm のインストール

$ zcat xpm-3.4j.tar.gz | tar xvf -
$ cd xpm-3.4j
$ xmkmf -a
$ make
$ su
# make install
# make install.man

 

/usr/X11R6/lib/libXpm.so.4.10
/usr/X11R6/lib/libXpm.a
/usr/X11R6/include/X11/xpm.h
/usr/X11R6/bin/sxpm

/usr/X11R6/man/cat1/sxpm.0


qt FreeEdition のインストール

※FreeBSD の場合

# cd /usr/local
# zcat ~yama/qt-1.40.tar.gz | tar xvf -
# ln -s qt-1.40 qt

~/.bash_profile に追加
QTDIR=/usr/local/qt
PATH=$QTDIR/bin:$PATH
if [ $MANPATH ]
then
MANPATH=$QTDIR/man:$MANPATH
else
MANPATH=$QTDIR/man
fi
if [ $LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$QTDIR/lib
fi
LIBRARY_PATH=$LD_LIBRARY_PATH
if [ $CPLUS_INCLUDE_PATH ]
then
CPLUS_INCLUDE_PATH=$QTDIR/include:$CPLUS_INCLUDE_PATH
else
CPLUS_INCLUDE_PATH=$QTDIR/include
fi

export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH
export CPLUS_INCLUDE_PATH

スクリプト変更後、反映させるために再ログイン。

configs/freebsd-g++-shared
# SYSCONF_LINK_LIB_SHARED = $(LINK) -Bshareable $(LFLAGS) -o $(TARGETD) `lorder /usr/lib/c++rt0.o $(OBJECTS) $(OBJMOC) | tsort` $(LIBS)
SYSCONF_LINK_LIB_SHARED = $(SYSCONF_LINK_SHLIB) -Bshareable \
$(LFLAGS) -o $(SYSCONF_LINK_TARGET_SHARED) \
`lorder /usr/lib/c++rt0.o $(OBJECTS) $(OBJMOC) | tsort` $(LIBS); \
mv $(SYSCONF_LINK_TARGET_SHARED) $(DESTDIR); \
cd $(DESTDIR); \
rm -f lib$(TARGET).so lib$(TARGET).so.$(VER_MAJ); \
ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so; \
ln -s $(SYSCONF_LINK_TARGET_SHARED) lib$(TARGET).so.$(VER_MAJ)

# Compiling application source
SYSCONF_CFLAGS = -pipe -O2 -fno-strength-reduce
# Compiling library source
SYSCONF_CFLAGS_LIB = -pipe -O2 -fno-strength-reduce -fPIC
# Compiling shared-object source
SYSCONF_CFLAGS_SHOBJ = -pipe -O2 -fno-strength-reduce -fPIC

# make freebsd-g++-shared
# make

# ln -s /usr/local/qt/bin/moc /usr/bin/moc ←KDEのインストールのため


KDE のインストール

※FreeBSD の場合。Ports参照。

※Qt が必要。Mesa と xpm があれば楽しいらしい。

kdesupport RECOMMENDED
This package contains support libraries that have not been written as part of the KDE project, but are needed
nevertheless. If you are already have the libraries (libgif, libjpeg, libmime, libuu, libgdbm) in this package in the
required versions, you do not need to install this package. When in doubt, install it. Note that for the Debian
packages, this package is required.

$ zcat kdesupport-1.0.tar.gz | tar xvf -
$ cd kdesupport-1.0

ltconfig
freebsd2* | freebsd3*)
version_type=sunos
# library_names_spec='${libname}${release}.so.$versuffix $libname.so'
library_names_spec='${libname}${release}.so.$versuffix'
finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
;;

$ ./configure
$ make; make check
$ su
# make install

(jpeglib6a, gdbm, giflib30, mimelib, uulib, QwSpriteField)

 

kdelibs REQUIRED
This package contains shared libraries that are needed by all KDE applications.

$ zcat kdelibs-1.0.tar.gz | tar xvf -
$ cd kdelibs-1.0

ltconfig
freebsd2* | freebsd3*)
version_type=sunos
# library_names_spec='${libname}${release}.so.$versuffix $libname.so'
library_names_spec='${libname}${release}.so.$versuffix'
finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
;;

$ ./configure
$ make; make check
$ su
# make install

 

kdebase REQUIRED
This package contains the base applications that form the core of the KDE Desktop Environment like the window
manager, the terminal emulator, the control center, the file manager and the panel.

$ zcat kdebase-1.0.tar.gz | tar xvf -
$ cd kdebase-1.0

ltconfig
freebsd2* | freebsd3*)
version_type=sunos
# library_names_spec='${libname}${release}.so.$versuffix $libname.so'
library_names_spec='${libname}${release}.so.$versuffix'
finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir'
shlibpath_var=LD_LIBRARY_PATH
;;

 

kfm/startkde
# kaudioserver &

 

kfm/kfmsu2.in
# echo "Allowing root user to use this display"
# xhost +local:root
echo "Allowing ALL (!) local users to use this display"
xhost +local:

# su - root -c "export DISPLAY=$DISPLAY; @kde_bindir@/kfm -sw >/dev/null"
# xhost -local:root
su root -c "echo DISPLAY=$DISPLAY @kde_bindir@/kfm -sw | /bin/sh > /dev/null"
xhost -local:

 

kdm/pics/Makefile.in
picsdir = $(kde_datadir)/kdm/pics
pics_DATA = kdelogo.xpm kdeflower.xpm
wallpaper_DATA = kdm_bg.jpg
usersdir = $(picsdir)/users
users_DATA = default.xpm default2.xpm root.xpm root2.xpm

 

uninstall-usersDATA:
    @$(NORMAL_UNINSTALL)
    list='$(users_DATA)'; for p in $$list; do \
    rm -f $(usersdir)/$$p; \
    done

install-wallpaperDATA: $(wallpaper_DATA)
    @$(NORMAL_INSTALL)
    $(mkinstalldirs) $(kde_wallpaperdir)
    @list='$(wallpaper_DATA)'; for p in $$list; do \
    if test -f $(srcdir)/$$p; then \
        echo " $(INSTALL_DATA) $(srcdir)/$$p $(kde_wallpaperdir)/$$p"; \
        $(INSTALL_DATA) $(srcdir)/$$p $(kde_wallpaperdir)/$$p; \
    else if test -f $$p; then \
        echo " $(INSTALL_DATA) $$p $(kde_wallpaperdir)/$$p"; \
        $(INSTALL_DATA) $$p $(kde_wallpaperdir)/$$p; \
    fi; fi; \
    done

uninstall-wallpaperDATA:
    $(NORMAL_UNINSTALL)
    list='$(wallpaper_DATA)'; for p in $$list; do \
    rm -f $(kde_wallpaperdir)/$$p; \
    done

install-data: install-picsDATA install-usersDATA install-wallpaperDATA
@$(NORMAL_INSTALL)

uninstall: uninstall-picsDATA uninstall-usersDATA uninstall-wallpaperDATA

installdirs:
$(mkinstalldirs) $(picsdir) $(usersdir) $(kde_wallpaperdir)

.PHONY: default uninstall-picsDATA install-picsDATA uninstall-usersDATA \
install-usersDATA uninstall-wallpaperDATA install-wallpaperDATA tags distdir info dvi installcheck install-exec \
install-data install uninstall all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean

 

kdm/resource.c
#ifndef __EMX__
#define Quote(s) #s
#define QUOTE(s) Quote(s)
#ifndef DEF_SERVER_LINE
/* #define DEF_SERVER_LINE ":0 local /usr/bin/X11/X :0" */
#define DEF_SERVER_LINE ":0 local " QUOTE(XBINDIR) "/X :0"
#endif
#ifndef XRDB_PROGRAM
/* #define XRDB_PROGRAM "/usr/bin/X11/xrdb" */
#define XRDB_PROGRAM QUOTE(XBINDIR) "/xrdb"
#endif
#ifndef DEF_SESSION
/* #define DEF_SESSION "/usr/bin/X11/xterm -ls" */
#define DEF_SESSION QUOTE(XBINDIR) "/xterm -ls"
#endif
#ifndef DEF_USER_PATH
/* #define DEF_USER_PATH ":/bin:/usr/bin:/usr/bin/X11:/usr/ucb" */
#define DEF_USER_PATH "/bin:/usr/bin:" QUOTE(XBINDIR) ":/usr/local/bin"
#endif
#ifndef DEF_SYSTEM_PATH
/* #define DEF_SYSTEM_PATH "/etc:/bin:/usr/bin:/usr/bin/X11:/usr/ucb" */
#define DEF_SYSTEM_PATH "/sbin:/usr/sbin:/bin:/usr/bin:" QUOTE(XBINDIR) ":/usr/local/bin"
#endif
#ifndef DEF_SYSTEM_SHELL
#define DEF_SYSTEM_SHELL "/bin/sh"
#endif
#ifndef DEF_FAILSAFE_CLIENT
/* #define DEF_FAILSAFE_CLIENT "/usr/bin/X11/xterm" */
#define DEF_FAILSAFE_CLIENT QUOTE(XBINDIR) "/xterm"
#endif
#ifndef DEF_XDM_CONFIG
/* #define DEF_XDM_CONFIG "/usr/lib/X11/xdm/xdm-config" */
#define DEF_XDM_CONFIG XDMDIR "/xdm-config")
#endif
#ifndef DEF_CHOOSER
/* #define DEF_CHOOSER "/usr/lib/X11/xdm/chooser" */
#define DEF_CHOOSER XDMDIR "/chooser"
#endif

#ifndef DEF_AUTH_DIR
/* #define DEF_AUTH_DIR "/usr/lib/X11/xdm" */
#define DEF_AUTH_DIR XDMDIR
#endif

#ifndef DEF_GREETER_LIB
/* #define DEF_GREETER_LIB "/X11/lib/X11/xdm/libXdmGreet.so" */
#define DEF_GREETER_LIB ""
#endif

 

kdehelp/man.cpp
else
{
// searchPath[numPaths++] = StrDup("/usr/man");
searchPath[numPaths++] = StrDup("/usr/share/man");
searchPath[numPaths++] = StrDup("/usr/X11R6/man");
searchPath[numPaths++] = StrDup("/usr/local/man");
}

$ export GL_LDFLAGS=/usr/local/lib
$ export GL_INCLUDE=/usr/local/include/GL

configure
test -z "$GL_LDFLAGS" && GL_LDFLAGS=/usr/local/lib
test -z "$GL_INCLUDE" && GL_INCLUDE=/usr/local/include/GL

$ ./configure
$ make; make check
$ su
# make install

path に /usr/local/kde/bin を追加。

startkde にて実行可能。

 


fvwm2 のインストール

$ zcat fvwm-2.0.46.tar.gz | tar xvf -
$ cd fvwm-2.0.46
$ zcat ../fvwm-users-jp-kits.97Oct04.tar.gz | tar xvf -
$ patch < kits/patch/PATCH.i18n-jp
$ xmkmf -a

各Makefile
FVWM_LIBS=-lxpg4

国際化のためにはxpg4ライブラリが必要になるが、存在しない(?)ので国際化を諦める。

$ make
$ su
# make install
# make install.man

/usr/X11R6/bin/fvwm2
/usr/X11R6/lib/X11/fvwm2/*
/usr/X11R6/bin/xpmroot
/usr/X11R6/lib/X11/fvwm2/FvwmBanner
/usr/X11R6/lib/X11/fvwm2/system.fvwm2rc
ほかマニュアル。

# mkdir /usr/X11R6/include/X11/pixmaps
# cp icons/* /usr/X11R6/include/X11/pixmaps/

 

$ cp /usr/X11R6/lib/X11/fvwm2/system.fvwm2rc ~/.fvwm2rc
$ chmod 644 ~/.fvwm2rc

 

~/.fvwm2rc
# be sure to customize these paths for your installation:
# ModulePath /usr/lib/X11/fvwm2
# PixmapPath /usr/include/X11/pixmaps
# IconPath /usr/include/X11/bitmaps
ModulePath /usr/X11R6/lib/X11/fvwm2
PixmapPath /usr/X11R6/include/X11/pixmaps
IconPath /usr/X11R6/include/X11/bitmaps

# make sure these fonts exist on your system:
# WindowFont -adobe-times-bold-r-*-*-18-*-*-*-*-*-*-*
# IconFont -adobe-helvetica-bold-r-*-*-10-*-*-*-*-*-*-*
WindowFont -adobe-helvetica-bold-r-*--17-*, -*-fixed-medium-r-*--16-*-c-*, -*-mincho-medium-r-*--16-*-c-*, -*-medium-r-*--16-*-c-*
IconFont -adobe-helvetica-medium-r-*--17-*, -*-fixed-medium-r-*--16-*-c-*, -*-mincho-medium-r-*--16-*-c-*, -*-medium-r-*--16-*-c-*

 

# HilightColor black palevioletred
# DeskTopSize 2x2
# MenuStyle maroon grey60 grey40 -adobe-times-bold-r-*-*-14-*-*-*-*-*-*-* fvwm
HilightColor white grey60
DeskTopSize 1x1
MenuStyle black grey60 grey40 -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* fvwm

# Styles for your common terminal emulator programs:<