SVN и FreeBSD. Обновление дерева портов (/usr/ports) и сырцов (/usr/src)

Как заходит дело до обновления исходников и портов во вновь установленной системе, начиная с FreeBSD 9.0, вечно забываю какие команды писать для SVN. (полное название утилы — subversion.) Кстати придумал и поддерживает сие продуктивное решение никто иной, как Apache Project. Вот решил сделать запись чтоб не рыться долго в хэндбуке.  https://www.freebsd.org/doc/ru/books/handbook/

Вся процедура,  собственно, четко описана в нём, https://www.freebsd.org/doc/handbook/svn.html , но мы все напишем еще раз, мож лучше запомнится =). Повторение, говорят, мать заикания.Итак, после установки FreeBSD 10, лучше не распаковывать ports.txz и src.txz, если есть широкая полоса инета, а сразу перетянуть самые новые порты и исходный код с SVN сервера. Если нету мега-полосы, то печально, т.к. придется долго смотреть на картину добавления.  Хотя хэндбук крайне рекомендует убить все содержимое папок для синхронизации с SVN  и сделать checkout  на чистых папках, т.к. возможны суровые конфликты синхронизуемого.

Все было бы хорошо, но в ранних версиях FreeBSD нужно было сначала поставить subversion одним из следующих способов, а уж потом им пользоваться:

Из портов:

cd /usr/ports/devel/subversion
make install clean

Из пакетов:

# pkg install devel/subversion

Но тут возникает проблема. В первом случае не распаковав портов мы ничего не поставим, а во втором для установки пакетов будет из инета вытянута гора пакетов и зависимостей в том числе. Проведение двойной работы слегка напрягало конечно, но в freebsd 10 есть своя родная утилита упрощенного характера, чтобы не делать ненужных телодвижений. Называется она svnlite и является частью мира, т.е. поставляется вместе с системой прямо из каропки.

Чего в ней упрощено по сравнению с subversion выяснять особо интереса не было, т.к. необходимые задачи по обновлению портов и сырцов она решает также как и полная утила.

Основным назначением SVN является синхронизация удаленного ресурса и локального в системе. Вся процедура делается в два шага:

# svn checkout svn-mirror/repository/branch lwcdir

Checkout или co делает первичную синхронизацию и создает базу данных локального размещения папки с синхронизуемым.

# svn update lwcdir

Update сравнивает базу данных в корне директории обновления,  удаляет и дописывает файло, считая удаленный сервер эталоном, где:
svn-mirror  это URL зеркал обновлений , они есть тута: Subversion mirror sites.
repository это репозитории системы, разделенные на  base, ports, или doc.
branch  это ветка обновлений. ports и doc чаще всего обновляют в ветке head. Репозиторий base для стэйбла восьмой версии, соответственно 9-ой и 10-ой: stable/8,  stable/9, stable/10.
lwcdir  это путь к папке, куда будет синхронизироваться содержимое: /usr/ports для ports, /usr/src для base, и /usr/doc для doc.

Русское зеркало в Москве  svn0.ru.FreeBSD.org, поддерживает протоколы svn, http, https, rsync.

Ну а теперь приведем команды для синхронизации портов и кода ОС протоколом svn с основного сайта FreeBSD:

# svnlite checkout svn://svn.FreeBSD.org/ports/head /usr/ports
# svnlite checkout svn://svn.FreeBSD.org/base/stable/10 /usr/src

Дальнейшая синхронизация этих директорий выполняется просто:

# svn update /usr/ports
# svn update /usr/src

Ну и для тех, кто хочет в живую поглядеть и пошастать по веткам репозиториев милости просим сюда http://svnweb.freebsd.org/

Вот теперь и сам не забуду, мож и поможет кому..

SVN и FreeBSD. Обновление дерева портов (/usr/ports) и сырцов (/usr/src): 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

CAPTCHA изображение

*