суббота, 8 августа 2009 г.

Работа с CVS на FreeBSD

# uname -prs
FreeBSD 7.0-RELEASE i386
Ищем нужный пакет.
#cd /usr/ports
#make search name=cvs
Выдается достаточно долгий список. Я взял тольку его часть, содержащую пути к различным портам, которая на мой взгляд наиболее интересна. У каждого конечно свои потребности.

Path: /usr/ports/devel/cvs2html
Info: Perl script to turn ``cvs log'' output into HTML
Path: /usr/ports/devel/cvs2svn
Info: CVS to Subversion Repository Converter
Path: /usr/ports/devel/cvsadmin
Info: A simple program to administrate users of a CVS repository
Path: /usr/ports/devel/cvsdadm
Info: Tool for CVSd pserver user administration
Path: /usr/ports/devel/cvsstat
Info: Transforms the output of 'cvs status' to a sorted ASCII table
Path: /usr/ports/devel/cvsutils
Info: CVS utilities which facilitate working with local working directories
Path: /usr/ports/devel/cvsweb3
Info: WWW CGI script to browse CVS repository trees version 3
Path: /usr/ports/net/cvsync
Info: A portable CVS repository synchronization utility
Path: /usr/ports/www/mod_cvs
Info: A module that makes Apache CVS aware

Строчки Info: достаточно красноречивы. Мы же расммотрим установку порта /usr/ports/devel/cvsd.
Смотрим файл /usr/local/share/doc/cvsd/README (с инструкциями поустановке), который входит в проинсталлированный пакет и убеждаемся, что он не имеет никакого отношения к FreeBSD, но общий ход действий, описываемый там, более чем прозрачен.
1)Создаем директорию, в которой будут находиться наши репозитарии:
# mkdir /var/db/cvsd
Вообще то по умолчанию выбирается директория /var/lib/cvsd, но /var/db/cvsd мне больше по вкусу.
2)Создаем группу и его одноименного владельца, с домашним каталогом, который только что создали:
# pw group add cvsd
# pw user add cvsd -s /usr/bin/false -d /var/db/cvsd -g cvsd -c 'cvs pserver daemon'

3)Естественно присваиваем этому каталогу соответствующего владельца:
# chown cvsd:cvsd /var/db/cvsd
4)Этот шаг необходим для большей безопасности. Он создает песочницу для cvsd-демона:
# cvsd-buildroot /var/db/cvsd
creating directory structure under /var/db/cvsd... done.
installing binaries... cvs.
looking for non-linked system libraries... done.
installing libraries... done.
adding users to /var/db/cvsd/etc/passwd... root nobody cvsd.
making /var/db/cvsd/etc/pwd.db...done.
fixing ownership... done.
chrooted system created in /var/db/cvsd
if your cvs binary changes (new version) you should rerun cvsd-buildroot

5)Далее делаем стандартный для установки любого демона шаг. Добавляем строчку cvsd_enable="YES" в файл /etc/rc.conf.
6)Создаем и редактируем конфигурационный файл для нашего демона:
#cp /usr/local/etc/cvsd/cvsd.conf.sample /usr/local/etc/cvsd/cvsd.conf
#chmod u+w /usr/local/etc/cvsd/cvsd.conf

Минимально там нужно проконтролировать две опции, при остальных должно работать по умолчанию.
Это опция, которую мы определили командой cvsd-buildroot:
RootJail /var/db/cvsd
И опция, определяющая конкретный репозиторий в песочнице (репозиториев может быть больше одного):
Repos /myrepos
Repos /myrepos2 и т.д.
Путь указывается относительно песочницы. Т.е. в данном случае /myrepos2 означает /var/db/cvsd/myrepos2.
Если мы не делали команду cvsd-buildroot, то опцию RootJail прописываем как none и в опциях Repos указываем полный путь к репозитарию в файловой системе сервера.
7)Каждый репозитарий перед началом работы необходимо инициализировать:
#cvs -d /var/db/cvsd/myrepos init
8)Добавляем пользователей, которые могут работать с конкретным репозитарием:
# cvsd-passwd /var/db/cvsd/myrepos +anonymous
/usr/local/sbin/cvsd-passwd: adding user 'anonymous' to '/var/db/cvsd/myrepos/CVSROOT/passwd'
Причем имя пользователя не обязано совпадать с именем какого-либо локального пользователя.
После этого стартуем сервис и можем приступать непосредственно к работе с ним.

Оригинал находиться здесь.

Комментариев нет: