Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Обновляем порты с SVN.
|
В связи с выходом новой версии svnup, обновление будет выглядеть вот так
|
Где
-h - хост, откуда берем исходники.
-b - ветка, которую тянем.
-l - куда кладем.
-r - еще можно указать ревизию тут. Если не указано, берется самая последняя.
-p - протокол, используемый для подключения к серверу SVN.
ports - секция из файла /usr/local/etc/svnup.conf. Можно создать несколько секций (для портов, релиза, стейбла), указать в каждой все необходимые параметры заранее и запускать обновление просто указав необходимую секцию. Например, так
|
В моем же примере я переопределил все нужные мне параметры в командной строке несмотря на то, что часть из них уже имеется в конфиге. В секция defaults задаются глобальные параметры svnup, которые учитываются при работе с любой другой секцией. Указать ее явно (# svnup defaults) нельзя.
Секции используются либо не используются в зависимости от версии svnup.
Аналогично и для исходников. Не забудьте сделать копию конфигурационного файла ядра.
|
Отдельный разговор про ветки.
Заходим на http://svnweb.freebsd.org/. Тут можно посмотреть содержимое svn-сервера svn.freebsd.org в веб-формате. Ветка с исходниками - base. В ней нас интересуют 4 ветки:
head - тут текущая основная разрабатываемая версия.
release - После выпуска релиза он попадает сюда.
releng - текущая ветка с версией. Сюда добавляются только фиксы/секюрити/исправления багов после релиза. Рекомендуется для обновлений.
stable - Текущая ветка для разработки. Релизы выпускаются из нее, в нее же добавляются новые фичи, багфиксы и т.п на стадии тестирования. К слову, security advisories сначала появляются тут и тестируются тут же, после чего уже попадают в releng. Но код все еще может быть нестабильным. Это еще одна ветка при разработке, а не ресурс для конечных пользователей (C)handbook
Как итог. Если мы хотим обновиться до, например, 8.3 со всеми текущими фиксами, используем /base/releng/8.3/. Если хотим обновиться до последней версии восьмерки, используем /base/stable/8/ и получим 8.4
Создание собственного зеркала
Если хочется иметь локальную копию svn-сервера и/или возможность коммитить и удобно откатываться, ставим subversion. Пакет содержит как серверную часть, так и клиентскую.
|
Сервер. Установка SVN сервера с использованием уже имеющейся базы. Для настройки сервера используется утилита svnsync.
1. Качаем SVN базу с
|
Например, если мы хотим держать локальную копию портов, качаем svnmirror-ports-r301235.tar.xz. Аналогично для исходников и документации.
2. Распаковываем ее в папку, где будет лежать база. Назовем ее, наример, /var/svn/
|
3. Обновляем базу до текущей версии (ревизии). Сервер, откуда обновляться, уже установлен.
|
Можно посмотреть, что получилось
|
4. Теперь раздаем базу. Раздавать можно через модуль apache - mod_dav_svn (об этом подробнее расписано в http://www.lissyara.su/articles/freebsd/www/svn+apache+trac/), можно через встроенный svnserve.
Второе - более простой вариант. Добавляем необходимое в /etc/rc.conf. Флаг -R переключает сервер в режим "только для чтения", т.е. клиент сможет получать файлы, но не сможет их менять на сервере несмотря на настройки в конфигурационный файлах (ports/conf/svnserve.conf, например. Там же можно сделать и авторизацию).
|
Запускаем сервер
|
Клиент. Для работы в качестве клиента используется утилита svn
В данном примере используется локальный сервер SVN. Если установка локального сервера не проводилась, следует заменить его адрес на адрес публичного сервера.
Скачиваем коллекцию портов. Есть два варианта получить порты. Первый - порты и историю коммитов (изменений). Второй - просто коллекцию портов. Первый вариант "тяжелее" примерно на 500Мб, но зато позволяет "откатываться" до предыдущих версий (ревизий) и смотреть историю изменений.
Первый вариант. Обновляем все, включая историю ревизий
|
Второй вариант. Получаем только порты. Без дополнительной информации. --force если папка ports не пуста.
|
Если использовался первый вариант, можно посмотреть историю ревизий и, при случае, откатиться
1. Смотрим изменения через svn. Последние 5 ревизий.
|
2. Например, нам надо поставить порт php 5.4.10. Ему соответствует ревизия 309326. Синхронизируем.
|
3. Проверяем
Смотрим информацию о каталоге.
|
Убеждаемся, что версия порта соответствует.
|
В догонку смотрим отличия между r309326 и текущей ревизией (HEAD)
|
размещено: 2013-04-29,
последнее обновление: 2013-08-20,
автор: Al
Alex Keda, 2013-05-27 в 11:08:28
всегда приятно найти неизвестную статью на своём же сайте...
да ещё и первой ссылкой в яндексе =))
quest, 2013-08-20 в 11:27:39
В строке для обновления портов
# svnup ports -h svn.freebsd.org -b /ports/head -l /usr/src/ -p svn
по видимому ошибка, место назначения для портов /usr/ports/, а то скопипастил и зафигачил себе порты в src
Al, 2013-08-20 в 12:02:35
Поправил)
Игорь, 2013-11-01 в 13:47:15
svn co svn://svn.FreeBSD.org/ports/head /usr/ports
svn co svn://svn.freebsd.org/base/releng/9.2 /usr/src
все...
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [4 шт.]