
Купив Мак, я озадачился установкой на него софта, который стоял до этого у меня на PC. Перенести удалось почти всё. Для чего-то нашлись маковские версии, для чего-то удалось подобрать замену. Проблемы возникли с Subversion (SVN). На PC я пользовался Visual SVN Server, который не требует практически никакой настройки и работает сразу после установки. На Маке такого удовольствия не оказалось, так что пришлось немного повозиться.
Итак, вот что я сделал:
- Существует несколько сборок SVN для Mac OS X. Я для себя выбрал версию от MacPorts. На то было ряд причин. Версия там предлагается последняя. Помимо SVN через MacPorts доступно множество других полезных Open Source проектов. В том числе, к примеру, MySQL, который мне тоже нужен. Загрузить MacPorts можно вот отсюда.
Загрузив dmg файл, смонтируйте образ, если он не смонтировался автоматически. После чего запустите pkg файл, что внутри. MacPorts у��тановится на ваш компьютер.
- После установки желательно проверить обновления. Для этого в терминале следует ввести:
sudo port -v selfupdate
Если новая версия доступна, то произойдет обновление. Если вы загрузили последнюю версию, то этот шаг можно пропустить.
- Загружаем SVN. Для этого в терминале вводим:
sudo port install subversion
Это займет некоторое время. По окончании SVN будет установлен. Все необходимые переменные будут добавлены в PATH. Протестировать установку можно набрав
svn --version
Должно появиться что-то типа:
svn, version 1.5.6 (r36142) compiled Mar 14 2009, 20:50:37 Copyright (C) 2000-2008 CollabNet. Subversion is open source software, see http://subversion.tigris.org/ This product includes software developed by CollabNet (http://www.Collab.Net/). The following repository access (RA) modules are available: * ra_neon : Module for accessing a repository via WebDAV protocol using Neon. - handles 'http' scheme - handles 'https' scheme * ra_svn : Module for accessing a repository using the svn network protocol. - with Cyrus SASL authentication - handles 'svn' scheme * ra_local : Module for accessing a repository on local disk. - handles 'file' scheme * ra_serf : Module for accessing a repository via WebDAV protocol using serf. - handles 'http' scheme - handles 'https' scheme
- Теперь нужно перенести ваши репозитории с PC. Для этого я создал папку Repositories в корне системного диска и скопировал туда все репозитории с PC. Если репозиториев у вас до этого не было, то их можно создать командой svnadmin create. К примеру,
svnadmin create /Repositories/MyRepo. Подробно описывать процесс создания репозитория я не буду. Посмотреть можно вот тут.
- Запустить SVN сервер просто, для этого в терминале нужно ввести
svnserve -d -r <путь к репозиториям>
В нашем случае:
svnserve -d -r /Repositories
Эта команда запускаем демон SVN. После этого можно обращаться к репозиториям по сети. К примеру так:
svn://svnserver/MyRepo
- Теперь переходим к самому интересному. Я с этим возился дольше всего. Проблема в том, что SVN сервер не запускается автоматически при старте компьютера. Поправить это можно с помощью launchd, стандартного способа автозапуска на Маке. Для этого нужно создать файл
/Library/LaunchAgents/org.tigris.subversion.svnserve.plist (имя можно выбрать по своему усмотрению):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Disabled</key> <false/> <key>Label</key> <string>org.tigris.subversion.svnserve</string> <key>ProgramArguments</key> <array> <string>/opt/local/bin/svnserve</string> <string>--inetd</string> <string>--root=/repositories</string> </array> <key>ServiceDescription</key> <string>Subversion Standalone Server</string> <key>Sockets</key> <dict> <key>Listeners</key> <array> <dict> <key>SockFamily</key> <string>IPv4</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> <dict> <key>SockFamily</key> <string>IPv6</string> <key>SockServiceName</key> <string>svn</string> <key>SockType</key> <string>stream</string> </dict> </array> </dict> <key>inetdCompatibility</key> <dict> <key>Wait</key> <false/> </dict> </dict> </plist>
Важно указать полный путь к svnserve. В моём случае это /opt/local/bin/svnserve. Без этого работать всё будет криво. Если вам не нужна конфигурация IPv6, то соответствующий dict блок можно удалить.
После чего в терминале вводятся следующие команды для активации конфигурации:
launchctl load org.tigris.subversion.svnserve.plist (если вы выбрали другое имя, то введите своё) start org.tigris.subversion.svnserve <ctrl-D> выход в терминал
Ну вот и всё. После этого у меня всё заработало. Этот способ автостарта не запускает демон, а использует inetd. Преимущество такого способа в том, что процесс запускается только при обращении к соответствующему порту. Система также удаляет процесс из памяти, когда считает нужным. Что есть хорошо.
Надеюсь, эта небольшая инструкция избавит вас от множества проблем. :)
