2007/2/21

FreeBSD の CVS クライアント機能を使おう 2  FreeBSD

前回は cvs checkout まで書いたけど、その続き。

の前に ssh を使った時の環境変数の紹介。

setenv CVSROOT ":ext:watashi@cvsserver:/home/cvsroot"
setenv CVS_RSH ssh

な感じなようだけど、本当にこれでいいのか?

とりあえずまあ手元にあるソースを最新のものにしてみよう。

前回の例を使ってまず mycalendar のディレクトリに行く。

% ls
CVS/
Makefile
config.h
configure
install.sh
src/

な感じの所で、最新の状態にしてみよう。

% cvs update

色々メッセージが出てくるけど、これでサーバー側にあるソースと同期が取れたはず。(こっちのソースの方が新しかったりしたら、サーバー側の新しい部分とマージ?してくれるような気がする。ちゃんと確認してないからねー)
さて src ディレクトリに移り、何か編集してみよう。

% cd src && ls
mycalendar.c
mycalendar.h

ここにあるうち、mycalendar.c を編集する。

% vi mycalendar.c

で更新した後、これをサーバーにマージさせる。

% cvs commit -m "Added a new function"

-m "Added a new function" は今回のコミットで何をしたかのメッセージ。これを指定しないと、エディターが立ち上がってメッセージを入れろと強制してくるので、まあ指定しておいた方がいい。

まあこれで完了かな。
0

2007/2/15

FreeBSD の CVS クライアント機能を使おう  FreeBSD

さて今度はクライアント。

サーバー設定は前回を参考にしてちょんまげ。

ここでは
・CVS サーバー名: cvsserver
・自分のユーザー ID: watashi
・CVS サーバーでの CVS のホームディレクトリ: /home/cvsroot

まず環境設定。
setenv CVSROOT ":pserver:watashi@cvsserver:/home/cvsroot"
とかを ~/.cshrc に書き込んでおく。
bash なら
export CVSROOT=:pserver:watashi@cvsserver:/home/cvsroot
だらう。

さて、自分が作っているプログラムのディレクトリに行きます。
今作っているプログラムが mycalendar とか言うカレンダーソフトだとします。
このトップディレクトリに行きます。

% cd mycalendar

ここには以下のようなファイル、ディレクトリがあるとします。

Makefile
config.h
configure
install.sh
src/

次にここでこのプロジェクトを CVS サーバーに新規に登録します。(このディレクトリで)

% cvs import -m "My Calendar Project" mycalendar watashi start

ここでそれぞれの引数の意味は
import: cvs import で一つのコマンドのような働きをし、プロジェクトを登録?する。
"My Calendar Project": このプロジェクトの簡単な説明。
mycalendar: プロジェクト名。重要。
watashi: 俺のユーザー ID。
start: このプロジェクトが今から開始しますよとの事だと思う。

さて次にちゃんとこの mycalendar で cvs が使えるように、一旦この mycalendar ディレクトリを削除するか名前を変えるかしなければならない。(削除する場合は絶対にバックアップを忘れないこと)

% cd ..
% mv mycalendar mycalendar.org

で、cvs で使える mycalendar にするために、このディレクトリで checkout を行う。

% cvs checkout mycalendar

すると mycalendar ディレクトリが作られる。

% cd mycalendar && ls

してみると、

CVS/
Makefile
config.h
configure
install.sh
src/

のように、CVS ディレクトリが新たに作られているのが分かる。

つづく。
0

2007/2/15

FreeBSD で CVS サーバーを立てる  FreeBSD

今まで使ったことがなかったのですが、必要に迫られ CVS を使うことになりました。

まず FreeBSD で CVS サーバーを構築する方法。

・/etc/services の確認
cvspserver 2401/tcp #CVS network server
cvspserver 2401/udp #CVS network server
このエントリーはあるかな?

・次に /etc/inetd.conf の cvspserver のエントリーの編集
cvspserver stream tcp nowait root /usr/bin/cvs cvs --allow-root=/home/cvsroot pserver
コメントアウトを外して、home ディレクトリを /home/cvsroot に設定。

・inetd を使うので、/etc/rc.conf の確認
inetd_enable="YES"

・inetd の再起動
# kill -HUP `cat /var/run/inetd.pid`
inetd が動いていなかったら、/etc/rc.d/inetd start あたりか OS の reboot。

・cvsroot ディレクトリアクセス用のグループの作成
/etc/group を編集して、例えば次のようなグループを作成します。
user:*:10001:watashi,anohito
watashi と anohito はこの cvs サービスを使えるユーザー名です。確か FreeBSD の場合は watashi,anohito のカンマの後にスペースを入れてはならなかったと思います。注意。(昔使っていた AIX では OK だったような)

・/home/cvsroot の作成、属性の変更
# cd /home
# mkdir cvsroot
# chgrp user cvsroot
# chmod 774 cvsroot
# cd cvsroot
# mkdir CVSROOT
# chmod 744 CVSROOT

・/home/cvsroot を cvs の root ディレクトリとして登録
# cvs -d /home/cvsroot init

・認証は /home/cvsroot/CVSROOT/passwd を使う方法が多く紹介されていますが、ここでは /etc/passwd を使うので、省略。

・さてこのままでほとんど OK だけど、最後に クライアントの自分のホームディレクトリに .cvspass がないと怒られてログインできない。
% cd && touch .cvspass
で、自分のホームディレクトリに空の .cvspass を作っておこう。


さあ、クライアントマシンからサーバーにアクセスしてみよう。

・まず環境設定
% setenv CVSROOT ":pserver:watashi@cvsserver:/home/cvsroot"
先ほどの CVS サーバーのホスト名を cvsserver として、自分のユーザー ID を watashi とした場合の環境設定。bash なら
% export CVSROOT=:pserver:watashi@cvsserver:/home/cvsroot
かな。

・接続
% cvs login
CVS password:
自分の cvsserver 上でのパスワード(ssh とかと同じ)を入力して完了!!

ちなみに http://www.hayagui.com/cvsserver.html とかを参考にしました。
0

2007/2/7

FreeBSD で Windows VPN へ接続  FreeBSD

メモ。FreeBSD で Windows の VPN (PPTP) に接続する。

ここでは、

VPN サーバー名又は IP アドレス: 111.111.111.111
ユーザー名: my_id
パスワード: my_password
相手側 (VPN) のサブネット: 172.16.0.0/12

とします。(何か日本語が変かな)

まず pptpclient のインストール。

# cd /usr/ports/net/pptpclient
# make install

次に /etc/ppp/ppp.conf に以下のエントリーを追加。

# My VPN
myvpn:
set authname my_id
set authkey my_password
set timeout 0
set ifaddr 0 0
add 172.31.0.0/12 HISADDR
alias enable yes
disable ipv6cp

↑本当は myvpn: より下は左端に空白が一つあることに注意。

あとは /etc/rc.conf に

gateway_enable="YES"

を追加かな。(これを書き加えたら再起動が必要)

で、インターネットを経由して VPN サーバー 111.111.111.111 に接続します。

# pptp 111.111.111.111 myvpn

注意点は、myvpn は /etc/ppp/ppp.conf で書いた myvpn のエントリーの事であり、どうもここからユーザー名やらパスワードを拾うらしい。
で、接続したら route add 172.31.0.0/12 相手のプライベートアドレス? (ifconfig tun0 で出で来る相手側のアドレス) のようなことをやるらしい。

さてこれでつながったはず。確認してみよう。

# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1498
inet 172.31.10.58 --> 172.31.10.50 netmask 0xffffffff
Opened by PID 979

トンネルデバイスである tun0 には 172.31.10.58 が自分の新たな IP アドレスとして割り当てられ、gateway であるサーバー (111.111.111.111 のマシン) には 172.31.10.50 が割り当てられている。
もう一つルーティングの確認。

# netstat -rn
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGS 0 15696 fxp0
127.0.0.1 127.0.0.1 UH 0 0 lo0
172.16/12 172.31.10.50 UGS 0 66 tun0
172.31.10.50 172.31.10.58 UH 1 0 tun0
192.168.0 link#2 UC 0 0 fxp0
192.168.0.1 00:10:db:97:66:e2 UHLW 2 0 fxp0 1047

読み辛いとは思いますが、172.16/12 は 172.31.10.50 を gateway としてルーティングされているのが分かると思います。
ちなみに 192,168.0/24 は普段会社で使っている LAN のアドレスです。

追記:
pptp で VPN サーバー接続時にすると、ちょうど DHCP のように /etc/resolv.conf が書き換えられてしまうようです。
なので元々の /etc/resolv.conf を /etc/resolv.conf.org にコピーしておき、pptp が切断された時に cp /etc/resolv.conf.org /etc/resolv.conf してくれるように /etc/ppp/ppp.linkdown (なければ作る)に↓のようなエントリーを書き加えておきます。

myvpn:
! sh -c "cp /etc/resolv.conf.org /etc/resolv.conf"

こんな感じですかね。! の前にスペースがあることに注意。
0

2007/2/3

FreeBSD 6.2-R と GTK で格闘中…  FreeBSD

FreeBSD 6.2-RELEASE がちょっと前にリリースされたんやけど、なんと GTK 関係が /usr/local に移ると言う…。
確かに最新の X11 が X11R6 から X11R7 になったんで(まだ FreeBSD では未対応)、/usr/X11R6 は問題ありやけど…。それやったら最初から /usr/X11 にしときゃええのに。(X12 が出たらおしまいか)

X11R3 から X のプログラミングをしてきた私としては、正直 X11R7 が出るとは思っていなかった。XFree86 -> Xorg になってからやたらバージョンが上がるのが速くなったからなあ。なんでかは知らんけど。

さて GTK。これはもう ports のアップグレードをする前に GTK 関係のアプリを全て削除しておいた方がいいと思う。pkg_delete で。
仕事で GTK のプログラミングをやってるけど、何か????なところが多かった。(仕事のマシンは古い GTK 関係消してない)
特に scim と scim-anthy。そもそも scim-anthy は /usr/X11R6 にインストールしようとするし(scim は /usr/local)、make deinstall するとなぜか /usr/local 下を削除しようとするし…。

まあ大変やった。これから FreeBSD も Xorg 7 が来るんやね。

大変そうやなあ…。
0



teacup.ブログ “AutoPage”
AutoPage最新お知らせ