IT pass HikiWiki - [ITPASS2014] gate-toroku-system の開発・メンテナンスのための準備 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]


= 日々の開発・メンテナンスのための準備

== 必要なパッケージのインストール

以下のコマンドで, 開発やメンテナンスに必要なパッケージをインストールする.

  # apt-get install cvs
  # apt-get install kcc
  # apt-get install nkf
  # apt-get install libjcode-pm-perl
  # apt-get install libcrypt-passwdmd5-perl
  # apt-get install libdatetime-perl
  # apt-get install libdatetime-format-strptime-perl

== 余分なファイルの削除, 文字コードの修正

* 新たに cvsroot を作成するために, gate-toroku-system 内の余計なディレクトリやファイルを削除する.
  * ls -aR でディレクトリ内の不要なドットファイルなども削除しておく.

      # su gate
      $ cd gate-toroku-system
      $ rm -frv `find -name CVS`

* 文字コードを 1 種類に統一したいため, kcc で文字コードのチェックを行う.
  * ここでは EUC に統一することを考えているので, 異なるものがある場合には nkf で変更すること.

     $ kcc -c `find -name '*'`
      :
     ./make-smtppasswd/Makefile:     ASCII
     ./make-smtppasswd/gate-make-smtppasswd.PL:      7-bit JIS [ESC$B,ESC(B]
     ./user-status/gate-user-status.PL:      EUC
     ./user-status/Makefile: ASCII

     $ nkf -e -Lu -d ./make-smtppasswd/gate-make-smtppasswd.PL

== CVS リポジトリの作成

  # su gate
  $ umask 002
  $ cd
  $ cvs -d /home/gate/cvsroot init

作成する.

== グループ書き込み許可の設定

上記で umask などの設定をおこなったものの, s ビットを立てるなど, パーミッションの設定が必要となる. また cvs init コマンドで作成した
ディレクトリやファイルの中にはグループ書き込み権限が無いものもあるので, 以下で設定する.

* リポジトリ cvsroot パーミッションの設定

  cvsroot 以下で作成されるファイル, ディレクトリのグループを gate にするため, cvsroot に s ビットを立て, 書き込み権限を与える. 念のためにグループも gate に設定する.

  $ chmod g+s cvsroot
  $ chmod g+w cvsroot
  $ chgrp gate cvsroot

* 管理用ディレクトリ CVSROOT 内のパーミッションの設定

  cvsroot が作成されれば, そのリポジトリに関する CVS の動作を制御する CVSROOT ディレクトリも作成されているはずである.

  CVSROOT, およびそれ以下の特定のファイルに関してグループの変更と書き込み権限変更をおこなう.

* CVSROOT ディレクトリ本体

  グループを gate とし, グループに書き込み権限を与えた.
  (これは少しアンセキュアな方針かもしれない. よりセキュアな方法として, 代表的な管理者 1 人にのみ書き込み権限を与えるという方針もあり得るだろう).
    $ cd cvsroot
    $ chgrp gate CVSROOT
    $ chmod g+s CVSROOT
    $ chmod g+w CVSROOT

* history, val-tags へグループ書き込み権限を与える

  CVSROOT 以下にある history, val-tags にグループ書き込み権限を与える.(グループは既に gate であると仮定している).
  なお, history とはこのリポジトリ以下のプロジェクトに対して行なわれた checkout, commit, rtag, update, release を記録しているファイルであり, cvs history コマンドで見ることが出来る. (動作の詳細は cvs history -x コマンドを参照のこと).
  ここではグループ gate で開発することを念頭に置くため, グループに書き込み権限を与える.

    $ cd CVSROOT
    $ chmod g+w history

  val-tags は検索を高速化するために, 有効なタグ名をキャッシュしているファイルである.
  GATE プロジェクトではタグも使用するので, これにもグループ書き込み権限を与える.

    $ chmod g+w val-tags


== gate-toroku-system プロジェクト開始

* gate-toroku-system ディレクトリ内に移動し, cvs import でプロジェクトを開始する.

    # su gate
    $ umask 002
    $ cd gate-toroku-system
    $ export CVSROOT=/home/gate/cvsroot

    $ cvs import -m "gate-toroku-system" gate-toroku-system gate Initial

=== プロジェクトのパーミッションの確認

プロジェクトのディレクトリのパーミッションを確認する.

  $ ls -l /home/gate/cvsroot
  drwxrwsr-x  3 gate gate 4096 2007-08-15 17:18 CVSROOT
  drwxrwsr-x 39 gate gate 4096 2007-08-15 17:44 gate-toroku-system

上記のようにグループが gate で権限が rws の場合は問題ない. もしそうでないのなら, 以下のコマンドでグループとパーミッションを変更すること.

  $ chgrp gate gate-toroku-system
  $ chmod g+s gate-toroku-system
  $ chmod g+w gate-toroku-system

なお, もしも gate-toroku-system が上記のようなパーミッションになっていなかった場合, それよりも下層ディレクトリのパーミッションもそれと同様な
可能性がある.
それらに関してもグループとパーミッションを設定すること. 調べるには以下のコマンドが便利であろう.

  $ cd /home/gate/cvsroot/gate-toroku-system
  $ ls -dl `find -type d`
  

プロジェクト以下にある「ファイル」に関しては (グループは gate である必要があるが) パーミッションは -r--r--r-- で問題ない.
cvs コマンドを介せば, 正しく commit, add, remove などが可能である.

== CVS リポジトリのカスタマイズ

((<URL:http://www.gfd-dennou.org/library/cc-env/cvs/>)) を参考に, 以下の作業を行う.
作業手順に関しては以下を参照のこと.

* cvs リポジトリのカスタマイズ
  * commit をメール通知する設定
  * バイナリファイルを安全に登録するために
  * euc のファイルのみ登録するには
  * commit メッセージを euc のみに

なお, メール通知の際の宛先は ITPASS サーバの gate-toroku-system 開発グループ とし, ファイルの文字コードは EUC とする.


* CVSROOT のチェックアウト

  chikuwa4 に適当なディレクトリを作成し CVSROOT のチェックアウトを行う

    # mkdir ~chikuwa4/cvs
    # cd ~chikuwa4/cvs
    # export CVSROOT=/home/gate/cvsroot
    # cvs checkout CVSROOT
    # cd CVSROOT

* cvs リポジトリのカスタマイズ
  * commit をメール通知する設定

    /CVSROOT/loginfo に以下の一行を追加する

      DEFAULT (echo ""; id; echo %{sVv}; date; cat) | mail -s gate-toroku-system-commit gate@itpass.scitec.kobe-u.ac.jp

  * バイナリファイルを安全に登録するために

    /CVSROOT/cvswrappers に以下の記述を加える

      # Treat Image and Archive and Data file as Binary Data
        *.gif -k 'b'
        *.GIF -k 'b'
        *.jpg -k 'b'
        *.JPG -k 'b'
        *.jpeg -k 'b'
        *.JPEG -k 'b'
        *.png -k 'b'
        *.PNG -k 'b'
        *.tif -k 'b'
        *.TIF -k 'b'
        *.tiff -k 'b'
        *.TIFF -k 'b'
        *.xpm -k 'b'
        *.XPM -k 'b'
        *.pbm -k 'b'
        *.PBM -k 'b'
        *.ico -k 'b'
        *.ICO -k 'b'
        *.eps -k 'b'
        *.EPS -k 'b'
        *.o -k 'b'
        *.O -k 'b'
        *.a -k 'b'
        *.A -k 'b'
        *.mod -k 'b'
        *.MOD -k 'b'
        *.nc -k 'b'
        *.NC -k 'b'
        *.obj -k 'b'
        *.OBJ -k 'b'
        *.ai -k 'b'
        *.AI -k 'b'
        *.psd -k 'b'
        *.PSD -k 'b'
        *.fla -k 'b'
        *.FLA -k 'b'
        *.swf -k 'b'
        *.SWF -k 'b'
        *.dvi -k 'b'
        *.DVI -k 'b'
        *.pdf -k 'b'
        *.PDF -k 'b'
        *.bz2 -k 'b'
        *.BZ2 -k 'b'
        *.gz -k 'b'
        *.GZ -k 'b'
        *.tar -k 'b'
        *.TAR -k 'b'
        *.tgz -k 'b'
        *.TGZ -k 'b'
        *.tar.gz -k 'b'
        *.TAR.GZ -k 'b'
        *.cab -k 'b'
        *.CAB -k 'b'
        *.lzh -k 'b'
        *.LZH -k 'b'
        *.zip -k 'b'
        *.ZIP -k 'b'
        *.sea -k 'b'
        *.SEA -k 'b'
        *.dat -k 'b'
        *.DAT -k 'b'
        *.ppt -k 'b'
        *.PPT -k 'b'
        *.doc -k 'b'
        *.DOC -k 'b'
        *.xls -k 'b'
        *.XLS -k 'b'

  * euc のファイルのみ登録するには

    dennou サーバから kanjichecker.pl を入手し, 特定の文字コードのファイルのみをコミット可能にする

      # wget http://www.gfd-dennou.org/library/cc-env/cvs/customize/euc-tools/kanjichecker.pl

      # cvs add kanjichecker.pl
      # cvs commit -m "Kanji code checker." kanjichecker.pl

    CVSROOT/checkoutlist に以下の一行を追加する

      kanjichecker.pl   unable to check out / update kanjichecker.pl in CVSROOT

    commit する

      # cvs commit -m "Add kanjichecker.pl" checkoutlist

    CVSROOT/commitinfo に以下のように追記する

      DEFAULT       perl $CVSROOT/CVSROOT/kanjichecker.pl euc %r/%p %s


  * commit メッセージを euc のみに
    dennou サーバからmsgchecker.pl を入手する

     # wget http://www.gfd-dennou.org/library/cc-env/cvs/customize/euc-tools/msgchecker.pl
     # cvs add msgchecker.pl
     # cvs commit -m "log message code checker." msgchecker.pl

    CVSROOT/checkoutlist に以下の一行を追加する

      msgchecker.pl   unable to check out / update msgchecker.pl in CVSROOT

    commit する

      # cvs commit -m "Add msgchecker.pl" checkoutlist

  verifymsg に以下のように追記する

      gate-toroku-system     perl $CVSROOT/CVSROOT/msgchecker.pl euc %l
      DEFAULT   perl $CVSROOT/CVSROOT/msgchecker.pl ASCII %l

なお, メール通知の際の宛先は ITPASS サーバの gate-toroku-system 開発グループ とし, ファイルの文字コードは EUC とする.


== 参考文献

* ((<[ITPASS2012]gate-toroku-systemのインストールと設定>))
* ((<CVS に関するメモ|URL:http://www.gfd-dennou.org/library/cc-env/cvs/>))


[((<ITPASSサーバ構築・運用ドキュメント>)) へ戻る]