Меню сайта
Категории каталога
Обновление ОС и портов через SVN [2013]
В связи с тем, что проект FreeBSD окончательно перешел на SVN, небольшая заметка на тему что это такое и как этим пользоваться. Я не претендую на полное описание SVN. Это не более, чем краткий справочник использования SVN в контексте исходных кодов FreeBSD. Subversion (также известная как «SVN») — свободная централизованная система управления версиями, официально выпущенная в 2004 году компанией CollabNet Inc. wikipedia(c) Русским языком SVN - это некая база для хранения файлов с историей их изменений и комментариями. Основная целевая аудитория - разработчики, которые используют ее для хранения исходных текстов программ и истории изменения. SVN(subversion) можно условно разделить на клиентскую часть и серверную. Серверная - локально хранит исходники, историю и т.п. Клиент же только получает необходимые файлы с сервера. Для рядового обновления нескольких серверов, я думаю, нет смысла держать полную копию у себя (ставить серверную часть). Можно просто ограничиться скачиванием необходимых файлов утилитой svnup. При наличии многих серверов для обновления и/или желания работать с SVN имеет смысл установка собственного SVN-зеркала и использование полноценного клиента с возможностью коммита и т.п. (subversion). Рассмотрим оба варианта и начнем с простого.Простое обновление. Ставим легковесный SVN-клиент svnup#cd /usr/ports/net/svnup
#make all install clean
===> License BSD accepted by the user
=> svnup-0 .56 .tar.xz doesn't seem to exist in /var/distfiles/.
=> Attempting to fetch http://jcm.dsl.visi.com/freebsd/svnup/svnup-0 .56 .tar.xz
svnup-0 .56 .tar.xz 100% of 9536 B 17 kBps
===> Fetching all distfiles required by svnup-0 .56 for building
===> Extracting for svnup-0 .56
=> SHA256 Checksum OK for svnup-0 .56 .tar.xz.
===> Patching for svnup-0 .56
===> Configuring for svnup-0 .56
===> Building for svnup-0 .56
cd /var/tmp/ports/usr/ports/net/svnup/work/svnup-0 .56 &&
cc -o svnup -O2 -pipe -fno-strict-aliasing svnup.c -lmd
===> Installing for svnup-0 .56
===> Generating temporary packing list
===> Checking if net/svnup already installed
install -s -o root -g wheel -m 555 svnup-0 .56 /svnup /usr/local/bin/
install -o root -g wheel -m 444 svnup-0 .56 /svnup.1 /usr/local/man/man1/
===> Compressing manual pages for svnup-0 .56
===> Registering installation for svnup-0 .56
===> Cleaning for svnup-0 .56
Обновляем порты с SVN.# svnup -h svn.freebsd.org -b /ports/head -l /usr/ports
Где -h - хост, откуда берем исходники -b - ветка, которую тянем -l - куда кладем -r - еще можно указать ревизию тут. Если не указано, берется самая последняя. Аналогично и для исходников. Не забудьте сделать копию конфигурационного файла ядра.# svnup -h svn.freebsd.org -b /base/releng/9.1/ -l /usr/src
Отдельный разговор про ветки. Заходим на http://svnweb.freebsd.org/. Тут можно посмотреть содержимое svn-сервера svn.freebsd.org в веб-формате. Ветка с исходниками - base. В ней нас интересуют 4 ветки: head - тут текущая основная разрабатываемая версия. release - После выпуска релиза он попадает сюда. releng - текущая ветка с версией. Из нее создается релиз и все фиксы после релиза вносятся опять же в нее. stable - Текущая стабильная ветка. Как итог. Если мы хотим обновиться до, например, 8.3 со всеми текущими фиксами, используем /base/releng/8.3/. Если хотим обновиться до последней версии восьмерки, используем /base/stable/8/ и получим 8.4Создание собственного зеркала Если хочется иметь локальную копию svn-сервера и/или возможность коммитить и удобно откатываться, ставим subversion. Пакет содержит как серверную часть, так и клиентскую.#cd /usr/ports/devel/subversion
#make all install clean
Сервер. Установка SVN сервера с использованием уже имеющейся базы. Для настройки сервера используется утилита svnsync. 1. Качаем SVN базу с ftp ://ftp.freebsd.org/pub/FreeBSD/development/subversion/
Например, если мы хотим держать локальную копию портов, качаем svnmirror-ports-r301235.tar.xz. Аналогично для исходников и документации. 2. Распаковываем ее в папку, где будет лежать база. Назовем ее, наример, /var/svn/#mkdir /var/svn/
#cd /var/svn/
#tar -vxf svnmirror-ports-r301235.tar.xz
3. Обновляем базу до текущей версии (ревизии). Сервер, откуда обновляться, уже установлен.#svnsync sync file:////var/svn/ports
Можно посмотреть, что получилось#svnsync info file:////storage/local_pool/svn/ports
Source URL: svn://svn.freebsd.org/ports
Source Repository UUID: 35697150 -7ecd-e111-bb59-0022644237b5
Last Merged Revision: 315795
4. Теперь раздаем базу. Раздавать можно через модуль apache - mod_dav_svn (об этом подробнее расписано в http://www.lissyara.su/articles/freebsd/www/svn+apache+trac/), можно через встроенный svnserve. Второе - более простой вариант. Добавляем необходимое в /etc/rc.conf. Флаг -R переключает сервер в режим "только для чтения", т.е. клиент сможет получать файлы, но не сможет их менять на сервере несмотря на настройки в конфигурационный файлах (ports/conf/svnserve.conf, например. Там же можно сделать и авторизацию).svnserve_enable="YES"
svnserve_flags="-d -R --log-file=/var/log/svn.log --listen-port=3690 "
svnserve_data="/var/svn"
svnserve_user="svn"
svnserve_group="svn"
Запускаем сервер#/usr/local/etc/rc.d/svnserve start
Клиент. Для работы в качестве клиента используется утилита svn В данном примере используется локальный сервер SVN. Если установка локального сервера не проводилась, следует заменить его адрес на адрес публичного сервера. Скачиваем коллекцию портов. Есть два варианта получить порты. Первый - порты и историю коммитов (изменений). Второй - просто коллекцию портов. Первый вариант "тяжелее" примерно на 500Мб, но зато позволяет "откатываться" до предыдущих версий (ревизий) и смотреть историю изменений. Первый вариант. Обновляем все, включая историю ревизий#svn checkout svn://127.0.0.1/ports/head /usr/ports
Второй вариант. Получаем только порты. Без дополнительной информации. --force если папка ports не пуста.#svn export --force svn://127.0.0.1/ports/head /usr/ports/
Если использовался первый вариант, можно посмотреть историю ревизий и, при случае, откатиться 1. Смотрим изменения через svn. Последние 5 ревизий.#svn log --limit=5 /usr/ports/lang/php5/
------------------------------------------------------------------------
r314716 | ale | 2013 -03 -20 12 :15 :37 +0400 (ср, 20 мар 2013 ) | 5 lines
Update to 5 .4 .13 release.
PR: ports/177082
Submitted by: Rustem Alimov <rustem.alimov@gmail.com>
------------------------------------------------------------------------
r313958 | ale | 2013 -03 -12 14 :33 :04 +0400 (вт, 12 мар 2013 ) | 5 lines
Suhosin will never reappear, remove commented out code.
Fix plist when CLI is not selected [1 ].
Submitted by: Gergely CZUCZY <gergely.czuczy@harmless.hu> [1 ]
------------------------------------------------------------------------
r312912 | ale | 2013 -02 -25 14 :30 :40 +0400 (пн, 25 фев 2013 ) | 2 lines
Update to 5 .4 .12 release.
------------------------------------------------------------------------
r310812 | ale | 2013 -01 -22 12 :20 :05 +0400 (вт, 22 янв 2013 ) | 2 lines
Update to 5 .4 .11 release.
------------------------------------------------------------------------
r309326 | ale | 2012 -12 -21 01 :15 :05 +0400 (пт, 21 дек 2012 ) | 2 lines
Update to 5 .4 .10 release.
2. Например, нам надо поставить порт php 5.4.10. Ему соответствует ревизия 309326. Синхронизируем.#svn up -r 309326 /usr/ports/lang/php5/
3. Проверяем Смотрим информацию о каталоге.#svn info /usr/ports/lang/php5
Path: /usr/ports/lang/php5
Working Copy Root Path: /usr/ports
URL: svn://127 .0 .0 .1 /ports/head/lang/php5
Repository Root: svn://127 .0 .0 .1 /ports
Repository UUID: 35697150 -7ecd-e111-bb59-0022644237b5
Revision: 309326
Node Kind: directory
Schedule: normal
Last Changed Author: ale
Last Changed Rev: 309326
Last Changed Date : 2012 -12 -21 01 :15 :05 +0400 (пт, 21 дек 2012 )
Убеждаемся, что версия порта соответствует.#cat /usr/ports/lang/php5/distinfo
SHA256 (php-5 .4 .10 .tar.bz2) = c5bf...7e4
В догонку смотрим отличия между r309326 и текущей ревизией (HEAD)#svn diff -r 309326:HEAD /usr/ports/lang/php5/Makefile
#svn diff -r 309326:HEAD /usr/ports/lang/php5/Makefile | grep PORTVERSION
Источник: http://www.lissyara.su/?id=2235
Категория: cvs | Добавил: oleg (11.05.2013) | Автор: Al
Просмотров: 3053 | Рейтинг: 0.0 /0 |
- Оценить -
Отлично
Хорошо
Неплохо
Плохо
Ужасно
Добавлять комментарии могут только зарегистрированные пользователи.
[
Регистрация |
Вход ]
Форма входа
Друзья сайта