Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
В дальнейшем всё будет описано для csup.
Для настройки параметров обновления создаём файл /root/updatesys.cvs:
|
Строка
|
корректируется для указания наиболее удобного (скорости и пр.) сервера обновлений - на странице описания параметров cvsup/csup выбираем CVS сервер, с которого будем брать порты и и вместо cvsup6.ru прописываем его.
Так же можно указать до какой версии необходимо обновить исходные тексты системы. Для этого из списка тэгов CVSup выбираем нужный вариант и прописываем его. Например, обновление до релиза 8.1 со всеми исправлениями на момент обновления:
|
Более детально параметры обновления через CVSup описаны в файле ports-supfile:
|
Хешируем имена программ, описанных в переменной окружения PATH:
|
Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения PATH.
Если используется один из таких командных процессоров, то перед использованием только что добавленных программ вам может понадобиться вызвать команду rehash после установки порта. Эта команда будет работать с такими оболочками, как, например, tcsh.
При работе с такими командными процессорами, как sh или bash, необходимо пользоваться командой hash -r. Дополнительную информацию можно найти в документации к вашему командному процессору.
Всё готово, запускает обновление:
|
Можно добавить ключик -z (компрессия) для экономии траффика.
ВАРИАНТ №2: из SVN репозитория
Ещё в 2008 году разработчики решил заменить систему управления версиями: вместо CSV решено проект перевести на SVN (subversion). Рекомендуется пользоваться именной этой системой контроля версий для обновления, т.к.
levsha: "из-за того, что основным репозиторием для исходников системы сейчас является svn, а в cvs идет экспорт, иногда вылазят глюки из-за кривого экспорта. Из-за отсутствия в cvs атомарного коммита нескольких файлов есть шанс счекаутить себе исходники с частичным коммитом"
В FreeBSD до 10 версии утилита svn не была введена в базовую систему, поэтому необходимо первоначально её установить:
|
В портах раньше было два пакета subversion: непосредственно subversion и subversion-freebsd. И только второй подходил для цели обновления системы через SVN, т.к. для этих целей в него были добавлены специфические патчи.
Сейчас subversion-freebsd из портов исчез: вероятно патчи перенесли в основной пакет subversion.
С обновлением subversion до версии 1.8 поддержка neon для доступа к SVN по протоколам HTTP/HTTPS прекращена. В случае использования этих протоколов необходимо при сборке subversion в опциях указать поддерку SERF (WebDAV/Delta-V (HTTP/HTTPS) repo access module).
С выходом 10 версии упрощённая версия svn в системе уже присутствует: в форме утилиты svnlite. Поэтому в дальнейшем всё описывается утилитой svnlite.
Первый раз скачивается база исходных текстов - файлов проекта (два варианта):
|
В дальнейшем достаточно будет выполнять:
|
Вместо checkout и update можно использовать сокращённые варианты написания этих подкоманд: co и up, соответственно.
Посмотреть, как версия исходных кодов установлена:
|
Вот и выяснили, что 11 версия наконец-то зарелизилась!. :)
ОБНОВЛЕНИЕ ПОРТОВ
ВАРИАНТ №1: из CVS репозитория
Через описанный выше файл /root/updatefile.cvs можно обновлять исходные тексты системы и портов одновлременно, достаточно в вышеприведённый вариант файла /root/updatefile.cvs добавить строчки:
|
Т.к. присвоение соответствующих переменных идёт последовательно, то тэг для обновления системы сменится для обновления портов на ".".
Если файлы для обновления системы и портов разные, то делает копия /root/updatefile.cvs (например, в /root/updateports.cvs) и в новом файле две последние строчки меняются на эту пару.
Стоит заострить внимание, что тэги для исходных текстов портов и системы - различные. И меня сильно отругали на freebsd@conference.jabber.ru за не чтение хэндбука. А в хэндбуке прописано, что для портов - одно дерево портов. Т.е. '.'. Но сами значения можно посмотреть на странице портов в выпадающем списке 'Show only files with tag:'.
Всё готово, запускает обновление:
|
Так же можно добавить ключик -z (компрессия) для экономии траффика.
После обновления необходимо проиндексировать скачаные порты:
|
Индексирование портов - процедура, забывание выполнения которой чревато проблемами с установкой/обновлением программ из портов.
ВАРИАНТ №2: утилитой portsnap
Обновление командой portsnap - рекомендуемый метод обновления исходных текстов портов.
Для первого запуска:
|
Процедура первый раз выполняется достаточно долго: утилита копирует архив всей системы портов. А в дальнейшем буду скачиваться только обновления.
Для всех последующих запусков:
|
Индексация портов произойдёт по окончанию обновления автоматически.
Если есть машина с FreeBSD, где порты, обновлённые через portsnap уже есть, то можно загрузить базу портов оттуда, чтобы не скачивать ещё раз с Интернета:
|
Вданном случае <user_name> - имя пользователя на машине, откуда будем скачивать порты, а <computer> - имя или IP-адрес этой машины.
ВАРИАНТ №3: используя SVN
Идентично обновлению исходных текстов системы:
|
Т.е. всё взаимодействие - стандартными командами SVN.
ОБНОВЛЕНИЕ ДОКУМЕНТАЦИИ
Идентично обновлению исходных текстов системы:
|
Т.е., опять же, всё взаимодействие - стандартными командами SVN.
ИСПОЛЬЗОВАНИЕ УТИЛИТЫ fastest_cvsup
Задача утилиты fastest_cvsup - поиск оптимального по скорости доступа сервера с CVS репозиторием.
|
Это скрипт на Perl, который по разным признакакм выбираем наиболее быстрый (на момент тестирования) сервер с CVS репозиторием: по времени отклика на ping, скорости создания соединения.
Применение:
|
Описание ключей на русском:
|
Таким образом можно узнать самый быстрый сервер на момент тестирования. Делать это каждый раз при обнолвлении не очень удобно. Но это можно автоматизировать скриптом (спасибо lissyara):
|
Ключи для скрипта (ports и src) соответственно, позволяют обновить дерево портов и исходники системы.
ОБНОВЛЕНИЕ ЧЕРЕЗ PROXY
В случае portsnap
При необходимости работы через proxy-сервер необходимо прописать параметры подключения к этому серверу (не забыв 192.168.1.4:8080/8021 заменить на IP-адрес и порт вашего proxy-сервера):
1. для bash в файл ~/.bashrc дописать
|
2. для cshrc в файл ~/.cshrc дописать
|
Команда portsnap "понимает" работу через proxy-сервер. Установка программ из портов так же будет происходить через указанный proxy-сервер.
В случае CVS
Для обновления исходных текстов системы через CVS можно воспользоваться программой prtunnel(сработает через HTTP_PROXY):
|
После этого - запустить демона:
|
Остаётся в файлах /root/updatesys.cvs и /root/updateports.cvs исправить опрашиваемый узел на:
|
Всё: теперь обычным образом пользуемся csup-ом:
|
Можно несколько автоматизировать данный процесс, используя возможности команды make. Для этого в конфигурационный файл /etc/make.conf необходимо добавить:
|
Если ещё возможность обновлять документы, но я сам никогда не делал этого и никто из знакомых этим не пользуется на практике (тоже в /etc/make.conf) - закоментированы у меня:
|
Теперь достаточно войти в соотвествующий каталог и запустить обновление:
|
Для обновления портов надо переместиться, естественно, в каталог /usr/ports/.
В случае SVN
Создадим в каталоге пользователя подкаталок .subversion и в кём файл конфигурации servers (я делаю это для root-а):
|
Это каталог конфигурации Subversion для данного пользователя. Потом, после первого запуска там появятся и другие файлы настроек, в том числе и config.
Содержимое servers в плане работы через proxy:
|
Другие параметры для servers и config.
ВОЗМОЖНЫЕ ПРОБЛЕМЫ
В случае, если при использовании svnlite update в выводимой информации есть похожие сообщения:
Updating '.': Skipped 'contrib' -- Node remains in conflict Skipped 'UPDATING' -- Node remains in conflic Skipped 'sys' -- Node remains in conflict At revision 239171. Summary of conflicts: Skipped paths: 3 |
то можно сделать:
|
эта субкоманда (revert) служит для разрешения конфликтных ситуаций в svn.
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
1. Команды svn: коротко по русски;
2. Управление версиями в Subversion (для Subversion 1.3).
размещено: 2011-01-11,
последнее обновление: 2016-09-29,
автор: Fomalhaut
Dog, 2011-01-16 в 13:31:53
Для svn в базовой системе есть утилитка svnsync(1) - инструмент с очень урезанным функционалом, которого, впрочем, для обновления дерева исходных кодов вполне хватает.
dog@dog:~> uname -sr
FreeBSD 8.2-RC2
dog@dog:~> svnsync help
general usage: svnsync SUBCOMMAND DEST_URL [ARGS & OPTIONS ...]
Type 'svnsync help <subcommand>' for help on a specific subcommand.
Type 'svnsync --version' to see the program version and RA modules.
Available subcommands:
initialize (init)
synchronize (sync)
copy-revprops
info
help (?, h)
Le1, 2011-01-16 в 15:29:42
Нормально написал, просто все это давно не новое, а так молодец, так держать ...
Fomalhaut, 2011-01-16 в 16:12:51
Le1: Согласен. Но только кому не новое, а вот для только начинающих - очень актуально: вопросов очень много, а ориентироваться в том, где и как искать и спрашивать - не все сразу могут/умеют.
Fomalhaut, 2011-01-16 в 20:39:59
Dog: Может я не там и не так искал, но svnsync не нашёлся в манах по 8.1. Зато отлично нашёлся в портах 8.1, как часть всё тех же subversion.
Если всё таки не так и не там ищу, направте, плз.
Dog, 2011-01-16 в 23:08:19
[/b]2Fomalhaut[b]: упсь, сорри!
Да, эта команда отсутствует в базовой системе, чушь я написал.
Дело в том, что когда еще только шли разговоры о переходе с CVS на SVN и первое время после начала перехода, несколько раз в официальной рассылке поднимали вопрос о внесении в базовую систему минимального инструмента для работы с SVN (собственно svnsync), потом все заглохло, а я почему-то считал, что все-таки внесли. На домашней тачке у меня subversion-freebsd установлен, соответственно данная команда есть, а я не проверил ее расположение.
Прошу прощения.
Fomalhaut, 2011-01-17 в 1:09:17
Dog: Будем ждать, когда включат. :)
vintovkin, 2011-01-17 в 15:51:58
можно добавить в .cshrc
setenv HTTP_PROXY "http://10.0.0.50:3128"
setenv FTP_PROXY "http://10.0.0.50:3128"
setenv HTTP_PROXY_AUTH "basic::username:password"
setenv FTP_PROXY_AUTH "basic::username:password"
Fomalhaut, 2011-01-17 в 16:48:14
Dog: Сегодня наткнулся на некий порт:
esvn - SVN клиент.
Не щупал ещё.
vintovkin: Ну HTTP-то в статье описано. ;)
Можно, конечно, и FTP добавить.
mvalery, 2011-02-08 в 13:30:32
Использую типовой supfile. Полностью подходит.
# csup -L 2 -h cvsup5.ru.freebsd.org /usr/share/examples/cvsup/ports-supfile
Пробовал так же автоматизировать поиск быстрейшего сервера, но оказалось, что некоторые сервера cvsup очень бысто отвечают утилите fastest_cvsup, однако ничего не хотят отдавать. Обновление обламывается.
# csup -L 2 -h `fastest_cvsup -Qcru` /usr/share/examples/cvsup/ports-supfile
rmn, 2011-02-25 в 23:17:33
>$ cat /root/updateports.sh
>#!/bin/sh
>
>#========================================
># Обновление исходных текстов
># cvsup6 - CVS-репозиторий по умолчанию
>#========================================
># Аргументы командной строки:
># ports - обновить дерево портов
># src - обновить системные исходники
>#========================================
>if test -f /usr/local/bin/fastest_cvsup
>then
> srv = "`fastest_cvsup -q -c ru`"
>else
> srv = "cvsup6.ru.freebsd.org"
>fi
ну и что за пробелы вокруг оператора '=' в скрипте? :)
Alex Keda, 2011-02-25 в 23:30:44
Это, поди, кривое наследие баша, или чего-то около того =)
в оригинале, оно у меня без пробелов было.
# upd: cvsup7 very slov from SPB
# 2010-06-10 in 13:01 - add fastest_cvsup
if test -f /usr/local/bin/fastest_cvsup
then
srv="`fastest_cvsup -q -c ru`"
else
srv="cvsup7.ru.freebsd.org"
fi
fm2clipper, 2011-07-18 в 12:36:36
Спс за статью все получилось с первого раза
Devapath, 2012-01-24 в 17:56:25
При обновлении через утилиту SVN обратите внимание!
уже нет- /usr/ports/devel/subversion-freebsd
но есть- /usr/ports/devel/subversion
salimk, 2012-05-29 в 10:08:50
Скачал исходники при помощи svn, собрал мир и ядро,
начал делать mergemaster почти во всех файлах в заголовках вместо
# $FreeBSD: src/etc/master.passwd,v 1.42.2.1 2011/09/23 00:51:37 kensmith Exp $
было только
# $FreeBSD $
думаю ладно, установил ядро и мир, по перли косяки типа:
Undefined symbol "_ThreadRuneLocale"
там еще что было не помню,
буду пользоваться привычным csup -ом
pandemodium, 2012-08-13 в 12:13:46
Настраивал portsnap для работы через прокси. В csh все заработало а в bash'e нет.
Ошибочка в статье: вместо
export HTTP_PROXY='192.168.1.4:8080' нужно писать export HTTP_PROXY='http://192.168.1.4:8080' иначе не работает
и еще:
"для chsrc в файл ~/.chsrc дописать" правильно все-таки ~/.cshrc опечатка-с
Fomalhaut, 2012-08-13 в 14:25:56
За очепятку - спасибо: исправил.
А вот по первому что сказать - не знаю: у меня всё работает: http://paste.org/52878
Devapath, 2013-02-15 в 15:45:05
ВНИМАНИЕ !!!
С 28 февраля 2013 года порты FreeBSD перестанут быть доступны через CVS и CVSup, т.е. их нельзя будет зеркалировать или синхронизировать для поддержания в актуальном виде через такие инструменты как CVSup. Причиной прекращения поддержки CVS является переход к использованию Subversion для разработки и поддержания дерева портов, в то время как используемые средства экспорта SVN в CVS имеют ряд ограничений, приводящих к затруднениям при организации работы зеркал.
Пользователям предлагается спланировать переход на portsnap или svn для обновления дерева портов. Например, для обновления можно использовать команды:
svn co https://svn0.us-west.FreeBSD.org/ports/head /usr/ports
cd /usr/ports && svn update
http://lists.freebsd.org/pipermail/freebsd-announce/2012-September/001435.html
iZEN, 2013-10-03 в 19:29:28
В базовой системе FreeBSD 10.0 есть клиент SVN, позволяющий провести синхронизацию каталогов /usr/src (и, скорее всего, /usr/ports) без установки Subversion из порта.
Достаточно включить:
WITH_SVN=true
в файл конфигурации /etc/src.conf и пересобрать систему.
Команды для работы с синхронными копиями каталогов те же.
guest, 2014-01-27 в 18:53:00
FreeBSD 10.0 RELEASE
- Subversion has been imported into the base system and is installed as svnlite. svnlite should only be used for checking out the FreeBSD source trees and committing, and does not replace the full Subversion port. [r251886]
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [19 шт.]