Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  начальная настройка
  Установка FreeBSD
  DUMMYNET
  Сборка ядра
  IPFW
  обновление
  portsnap
  CP1251 на FreeBSD
  loader.conf
  defaults/rc.conf
  jail
  Ntpdate/Ntpd
  diskless
  Обновление мира ("world")
  PBR & PF
  bsnmpd
  newsyslog
  if_bridge
  make.conf
  PBR & IPFW
  Работа с HDD
  sshd & AD
  Удаленное разбиение HDD
  Заметки об IPFW
  FreeBSD на VDS
  CVSUP и софт через Proxy
  i386=>amd64
  ALTQ в IPFW
  Виртуальный свитч
  VPN сервер по средствам mpd5.
  NTP
  sysupdate
  mpd5 L2TP
  freebsd + webcamera
  IPFW policy (PBR)
  RAID1 via LAN
  зеркальный RAID1 на ОС FreeBSD
  4.x => 7.x
  portdowngrade
  Быстрое обновление портов
  ipfw nat
  Использование csup
  UTF-8 console
  dump/restore
  hast carp zfs ucarp cluster
  ng_nat
  Wi-FI роутер + DHCP + DNS
  backup/restore & ZFS
  Обновление ОС и портов через SVN.
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> настройка —> Использование csup

Использование csup

Автор: terminus.


Версия статьи 0.2

Программка csup это тот же самый CVSup, но написанный на С, а не на modula. Начиная с версии FreeBSD 6.2 csup поставляется в базовом наборе системы, и теперь нет необходимости ставить CVSup пакетом или долго собирать его из портов. Для чего используется csup? Грубо говоря это клиент для подключения к CVS репозиторию и скачи от туда всякого-разного. На данный момент проект FreeBSD хранит в CVS зеркалах дерево исходных кодов системы, дерево портов и документацию. На сегодняшний день этот инструмент уже не является жизненно необходимым в большинстве случаев - дерево портов очень удобно синхронизировать через portsnap, а ставить заплатки на систему можно без пересборки из исходников используя для этого бинарные патчи freebsd-update. Если же хочеться заниматься пересборкой мира и ядра, то придется научиться обновлять исходные тексты из репозитория. Я так делаю, потому что ради интереса использую STABLE и CURRENT ветки FreeBSD.

Цель заметки - описать некоторые моменты касающиеся того как использовать csup для синхронизации исходных кодов системы.

Для работы csup требуется составить supfile с инструкциями где указываетя - что именно и откуда csup должен скачать, куда и как сохранить.


Пример supfile
#csup -L 2 /etc/supfile
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup.lv.freebsd.org
#*default host=cvsup.ru.FreeBSD.org

*default base=/var/db
*default prefix=/usr
#*default release=cvs tag=RELENG_8_1_0_RELEASE
*default release=cvs tag=RELENG_8
*default delete use-rel-suffix
*default compress

src-all
# ports-all tag=.
doc-all tag=.



Описание директив:



*default host=cvsup.lv.freebsd.org
Так указывается cvsup сервер с которого мы будем скачивать данные. Список с зеркалами можно посмотреть тут ( http://www.freebsd.org/doc/handbook/cvsup.html#CVSUP-MIRRORS ). Соответственно имеет смысл указывать тот кто ближе географически.


*default base=/var/db
Где csup будет хранить временные и служебные файлы генерируемые в ходе работы. Там будут сохраняться checkouts файлы для каждой из указанных коллекций (src-all, ports-all, doc-all, etc).


*default prefix=/usr
Корень под которым у нас будут сохраняться полученные с сервера данные. В нашем случае это будет /usr/src и /usr/doc. Если указать что-то другое, например /tmp/test то скаченные исходники пойдут туда.


*default release=cvs tag=RELENG_8
Используемый по-умолчанию tag. То есть, если бы его небыло, нам надо было бы вручную указывать что мы хотим скачать. В настройках коллекции src-all ничего не указано - значит она будет использовать тег по-умолчанию какой мы задали, а для doc-all мы тег изменили на tag=. так как коллекция документов не имеет такого же тега как коллекция исходников.

src-all
Перечисляем коллекции которые хотим скачать.



Про теги:



Детальнее про используемые существующие в данный момент теги можно прочитать здесь ( http://www.freebsd.org/doc/en/books/handbook/cvs-tags.html ) - хендбук всегда в актуальном состоянии. Что такое тег? В ходе разработки FreeBSD дерево исходных кодов переодически дробится на релизы и на ветки STABLE и CURRENT. Тег указывает какую версию мы хотим скачать.


Вот примеры тегов для дерева src-all:
RELENG_8 - Ветка FreeBSD 8-STABLE
RELENG_8_1 - Ветка FreeBSD 8.1 в которую идут патчи безопасности
RELENG_8_1_0_RELEASE - "Замороженный" снепшот состояния кода FreeBSD 8.1 в момент его релиза


Для дерева doc-all и ports-all веток типа STABLE не существует, а есть только ветка "." (CURRENT) и замороженные ветки релизов типа RELEASE_8_1_0_RELEASE. Да, тут есть одни грабельки - имена веток замороженных релизов для дерева src-all и для деревьев doc-all, и ports-all - отличаются! У src-all имя начинается с RELENG, а у doc-all, и ports-all имена начинаются с RELEASE!

Например:
src-all RELENG_8_1_0_RELEASE
ports-all RELEASE_8_1_0_RELEASE

*default release=cvs tag=RELENG_8_1_0_RELEASE
*default delete use-rel-suffix
*default compress

src-all
ports-all tag=RELEASE_8_1_0_RELEASE
doc-all tag=RELEASE_8_1_0_RELEASE

Это надо было учитывать раньше, когда cvsup использовался как для обновления сырцов, так и для обновления дерева портов. Бывало забудешь, и вместо сырцов (или портов) получаешь пустое место =) Сейчас это не актуально так как portsnap использовать для обновления портов вместо svcup/csup - намного удобнее.


Пример обновления:


Предположим, что мы поставили себе свежеиспеченую FreeBSD 8.1-RELEASE, и захотели обновить ее до ветки FreeBSD 8-STABLE (или до того же релиза, но с патчами RELENG_8_1). В ходе установки системы мы в sysinstall выбрали, что хотим кроме прочего так же установить и дерево исходных текстов.

Нам необходимо произвести синхронизацию тех исходных текстов которые у нас есть на диске, с репозиторем - скачать новые части.


Последовательность действий такова:
- составляем supfile и сохраняем его где нам больше нравиться. Я обычно сохраняю его в /etc/supfile
- проводим первую синхронизация с замороженной веткой нашего релиза RELENG_8_1_0_RELEASE
- переименовываем checkouts файлы с RELENG_8_1_0_RELEASE на RELENG_8
- проводим вторую синхронизацию с веткой RELENG_8 - обновляем исходники до STABLE
- далее как обычно пересобираем и устанавливаем мир и ядро
- каждый следующий раз, обновляясь до STABLE, делаем это один раз как обычно без переименований файлов

У бывалых БСДшников может возникнуть вопрос - что это еще за чехарда с переименовываением файлов и синхронизацией два раза? Это такой трюк позволяющий во-первых сохранить пропускную способность линии, а во-вторых более чисто провести синхронизацию исходников, чтобы не осталось никаких лишних файлов в дереве. Подробнее эта фишка описана в FAQ на CVSup ( http://www.cvsup.org/faq.html#adopt ). Суть идеи в следующем - при работе csup она использует checkouts файлы для того чтобы сравнивать информацию о версиях файлов на локальном диске и на сервере, и проводить синхронизацию только изменившихся. Сразу после установки системы, в директории /var/db/sup никаких checkouts файлов для синхронизируемых нами коллекций еще нет. Трюк в том, чтобы сначала их создать. Так как у нас релиз 8.1 и исходники установлены от него же, то проведя первую "синхронизацию" с "замороженным" тегом этого же самого релиза RELENG_8_1_0_RELEASE мы сможем построить актуальные checkouts файлы. Первая синхронизация по сути нечего не синхронизирует, а только энумерует файлы на диске и в репозитории, да строит базу данных - checkouts файл. После первой синхронизации мы получим в директории /var/db/sup две новых поддиректории doc-all src-all. Первая нас не интересует, а во второй будет файл с именем checkouts.cvs:RELENG_8_1_0_RELEASE. Этот файл надо переименовать в checkouts.cvs:RELENG_8. После этого в /etc/supfile заменить ранее использованный тег RELENG_8_1_0_RELEASE на тег для ветки на которую мы хотим обновиться - RELENG_8. Все, теперь у нас есть актуальные checkouts файлы которые отражают положение вещей на нашем локальном диске. Как только мы начнем вторую синхронизацию с сервером, то csup будет точно знать какие версии файлов надо передать, а что надо удалить. Синхронизация будет выполнена более чисто, займет меньше времени и потребует меньше трафика. Как я уже сказал - все последующие синхронизации выполняются как обычно только один раз без переименований файлов - checkouts теперь всегда будут в актуальном состоянии.


Есть еще один способ того как получить актуальные checkouts файлы под правильными именами. Перед первой синхронизацией можно поместить в supfile директиву list в которой указать под каким именем должен быть сохранен checkouts файл:
src-all tag=RELENG_8_1_0_RELEASE list=RELENG_8

В таком случае после первой синхронизации мы автоматически получим checkouts.cvs:RELENG_8 в /var/db/sup/src-all, и не надо будет переименовывать файлы. А перед проведением второй синхронизации надо убрать директиву list. Вобщем получается то же самое, только немного другим способом...

Спасибо камраду bammbr за замечание и наводку на этот способ.
 

Запуск csup проводится так (был указан в комментарии в supfile):
csup -L 2 /etc/supfile


Больше информации о работе csup и директивах применяемых в supfile можно узнать из
man csup



Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=28544.

размещено: 2010-09-18,
последнее обновление: 2010-11-25,
автор: terminus

оценить статью:

vadim64, 2010-09-20 в 13:52:25

Эта статья чтоб было куда ссылку новичкам давать?

terminus, 2010-09-20 в 19:04:55

Это мне средство от склероза. Забываю переодически про имена тегов и прочие замарочки. Если же еще кому-нить поможет в освоении, буду только рад.

Dog, 2010-10-26 в 18:28:07

А ничего что CURRENT ныне - 9-ка? Выдыхай, бобер, 8-ка уже давно не CURRENT, а текущий релиз, а RELENG_8 вытягивает 8.1-STABLE, через 3-4 месяца 8.2-STABLE будет.

meth, 2010-11-04 в 22:16:30

csup -zL3 /etc/sup/ports.sup

terminus, 2010-11-05 в 13:53:18

Щитоэта?

tehnikpc, 2014-02-14 в 12:59:58

"дерево портов очень удобно синхронизировать через portsnap"
Только в 10-й версии FreeBSD он уже не работает, csup спасёт мир :).

k-nike, 2014-02-14 в 13:35:27

tehnikpc, вы пургу несете. portsnap прекрасно работает в 10-ке!

k-nike, 2014-02-14 в 13:38:47

К тому ж, проект FreeBSD мигрировал на Subversion, поэтому csup если и работает, то это не на долго. Используйте клиента Subversion, например, svnup.

tehnikpc, 2014-02-14 в 13:47:03

Не работает "/usr/sbin/portsnap: cannot open ....gz: No such file o directory metadata is corrupt."

k-nike, 2014-02-17 в 10:30:46

Вероятнее всего вы коряво обновились с помощью csup, который уже не поддерживается. Я уже давно использую бинарные обновления freebsd-update и portsnap. Проблем пока не возникало.

tehnikpc, 2014-02-22 в 10:04:50

Не обновлялся я с csup, просто на новой системе запускал portsnap.

k-nike, 2014-03-04 в 14:55:06

Это поможет:
rm -rf /var/db/portsnap
mkdir /var/db/portsnap
portsnap fetch extract

tehnikpc, 2014-03-04 в 15:21:32

Нет!


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 43 чел.
За последние 30 мин было: 176 человек
За сегодня было
2758 показов,
686 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0449 секунд
Из них PHP: 20%; SQL: 80%; Число SQL-запросов: 86 шт.
Исходный размер: 111790; Сжатая: 20138