| 
		
			
			 
		 | 
		
			
			 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 и директивах применяемых в supfile можно узнать из 
 
 
  
			
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=28544.
  
			
			
			
			
				
					| 
						 размещено: 2010-09-18, 
				последнее обновление: 2010-11-25, 
				автор: terminus 
					 | 
					
						
		
					 | 
				 
			 
			
			
			
					
 
	 
	
  
			
			
			 
		 | 
		
			
			 
		 | 
		
 
 
			
			
2014-07-27, lissyara 
gmirror  
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
 
2013-08-20, zentarim 
Scan+Print server FreeBSD 9 
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
 
			
			 
		 | 
	
	
		
		
	
		
			
			
				
					
						Статистика сайта
					 | 
				 
				
					
						Сейчас на сайте находится: 27 чел.
					 | 
				 
				
					
						За последние 30 мин было: 147 человек
					 | 
				 
				
					
						За сегодня было 4859 показов, 1717 уникальных IP
					 | 
				 
			 
		 | 
	 
 
	
		 | 
		 
		 | 
		
			   Этот информационный блок появился по той простой причине,
			что многие считают нормальным, брать чужую информацию не уведомляя автора
			(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
			Я не против распространения информации — только за. Только условие простое — извольте
			подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
			незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
			 
			  Если соизволите поставить автора в известность — то вообще почёт вам и уважение. 
			© lissyara 2006-10-24 08:47 MSK
			 
		 | 
		
			 
		 | 
		
		
		
		
		 | 
	
Комментарии пользователей [13 шт.]