3. FreeBSD 的特殊設定
前一頁 |  |

## 3. FreeBSD 的特殊設定

FreeBSD 專案自己使用一個有點不同的設定，那就是同時也使用 FreeBSD `CVSROOT` 中的 `freebsd` 子目錄。因 為大量的提交者必須在相同的群組中，因此專案寫了一個簡單的 wrapper 來確認提 交者可以正確的提交，並設定儲存庫的群組名稱。

如果你的儲存庫也需要這樣的功能，那麼下面就會介紹如何建立，不過首先要 先來看一段複雜的概述。

### 3.1. FreeBSD 設定中使用的檔案

- `access` - 此檔案用來控制儲存庫的存取。你 應該編輯並加入所有在專案中的成員。

- `freebsd/commitmail.pl` - 此檔案已經沒有在 使用了，留著只是為了某些有意義的原因。你不該更動此檔案。

- `freebsd/cvswrap.c` - 此 CVS wrapper 原始 碼是用來建立檢查所有存取的工作。更多的訊息在稍後會提出。你應該編 輯 `ACCESS` 和 `REALCVS` 的路徑 以符合你的設定。

- `freebsd/mailsend.c` - 此檔案是 FreeBSD 設 定 mailing lists 需要的，你不該更動此檔案。

### 3.2. 步驟

1. 只有加入你的使用者名稱到 `access` 中。

2. 編輯 `cvswrap.c` 的路徑以符合你的設定，定義 在大寫的 `ACCESS` 中。同時如果預設值不符合你的情況 的話也應該修改本地實際的 `cvs` 程式所在位置。原始 的 `cvswrap.c` 希望替代伺服端的 CVS 程式，例如可 能會是 `/usr/bin/ncvs`。

   我的 `cvswrap.c` 是這樣：

   #define ACCESS "/local/cvsroot/CVSROOT/access" #define REALCVS "/usr/bin/ncvs"

3. 接下來是建立 wrapper 來確認你在提交時是在正確的群組中。 在你的 `CVSROOT` 中的 `cvswrap.c` 要能夠使用。

   在你完成編輯並加入正確的路徑後我們要來編譯原始碼：

   `%` `cc -o cvs cvswrap.c`

   然後進行需要設定（此步驟需要 root 權限）：

   `#` `mv /usr/bin/cvs /usr/bin/ncvs` `#` `mv cvs /usr/bin/cvs` `#` `chown root:`ncvs` /usr/bin/cvs /usr/bin/ncvs` `#` `chmod o-rx /usr/bin/ncvs` `#` `chmod u-w,g+s /usr/bin/cvs`

   這會將 wrapper 安裝成預設的 `cvs` 程式，請確定 任何要使用儲存庫的人應該有正確的存取權限。

4. 現在你可以刪除所有在儲存庫群組中的使用者，所有的存取控制會經由 wrapper 完成，同時 wrapper 會設定存取的正確群組。

### 3.3. 測試設定

你的 wrapper 現在應該已經安裝好了，你當然也可以強制提交 `access` 來測試是否正常：

`%` `cvs commit -f -m '`Forced commit to test the new CVSROOT scripts`' access`

同樣地，如果有錯誤，檢查是否上述所有步驟都有正確的執行。

前一頁 |  |
2. 基本設定 | 起始頁 |

本文及其他文件，可由此下載： ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。

若有 FreeBSD 方面疑問，請先閱讀 FreeBSD 相關文件，如不能解決的話，再洽詢 <questions@FreeBSD.org>。
關於本文件的問題，請洽詢 <doc@FreeBSD.org>。