Глава 26. Obtaining sources by CVS

Глава 26. Obtaining sources by CVS

Русский перевод: Михаил Сгибнев

CVS (Concurrent Versions System) может быть использована для получения исходных текстов NetBSD, оперативного внесения изменений и обновления системы портов. Есть две ветви CVS, которые могут использоваться в повседневной жизни: ветка current используется разработчиками и тестерами, ветка release, в которую добавляются патчи, связанные с безопасностью, обновляются версии программного обеспечения - эта ветка является стабильной и предназначена для использования обычными пользователями. Для примера, в настоящее время существует возможность полностью удалить таблицу arp с помощью команды arp.

26.1. Получение исходных текстов системы и пользовательского окружения

Для установки CVS (если она еще у Вас не установлена) выполните:

% pkg_add ftp://ftp.NetBSD.org/pub/NetBSD/packages/OS
 Ver/arch/All/cvs-1.11nb2.tgz

Где OS Ver и arch версия и платформа, используемая Вами.

% sysctl kern.osrelease hw.machine_arch

Получить исходные тексты, не имея чего-либо в /usr/src

% setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs login
password: anoncvs
% cvs checkout -rnetbsd-<BRANCH> -PA src

Где <BRANCH> является версией релиза для получения. Для примера, 1.6 запишется как 1-6, 2.2 запишется как 2-2. Обратите внимание, что версия релиза не учитывает текущий уровень патчей, то есть 1.6.2 по прежнему будет отображаться как 1-6. Для получения ветки 2.0 необходимо выполнить:

% cvs checkout -rnetbsd-2-0 -PA src

или воспользоваться ssh для передачи данных в зашифрованном виде:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs checkout -rnetbsd-<BRANCH> -PA src

В последней строке указываем версию «-rnetbsd-BRANCH» получаемого релиза.

Для обновления исходных текстов релиза:

% setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs login 
password: anoncvs
% cvs -d $CVSROOT update -rnetbsd-BRANCH -PAd src

Или через ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -rnetbsd-BRANCH -PAd src

Для обновления исходных текстов current, не указывайте BRANCH.

Когда Вы желаете обновить модифицированное Вами дерево исходных текстов, то есть когда Вы восстанавливаете некоторую часть, все дерево исходных текстов или исходные тексты ядра и не выполняли make cleandir, то Вы должны создать обьектные файлы в каталоге исходных текстов.

Каталоги обьектных файлов требуются для выполнения «cvs update» в неочищенном дереве. Неочищенное дерево - это дерево исходных текстов, в котором вы производили сборку каких-либо частей, или всего дерева без выполнения «make clean» в этих частях или «make cleandir» для всего дерева. В противном случае, cvs попытается создать каталоги с одинаковыми именами и поэтому сборка некоторых бинарных файлов потерпит неудачу. (Там, где у Вас находится каталог, называемый «groff», Вы теперь будете собирать бинарник «groff», но «cvs» должен создать все пустые каталоги перед их удалением.)

Так в /usr/src:

% mkdir /usr/obj
% make obj
% mkdir /usr/obj
% make obj

Теперь Вы готовы для обновления через cvs. Или выполните make cleandir в каталоге /usr/src перед использованием cvs. Наиболее простым и легким путем будет создание objectdirs при обновлении неочищенного дерева. CVS значительно более быстрее работает при использовании sup. Я не могу точно сказать, скольо именно времени займет получение полного дерева исходных текстов, так как сам я использую высокоскоросные каналы связи. При получении исходных текстов с помощью модема используйте компрессию:

% cvs -z5 checkout .........

или

% cvs -z5 -d $CVSROOT update ......

При указании степени компрессии Вы можете использовать значения от 1 до 9, где 9 - самая сильная степнь. Но учтите, что использование компрессии повышает нагрузку на cvs сервер.

Замечание

Вы долны перейти в: /usr/src/sys/arch/$arch/compile/$kernel_conf_name и выполнить make clean, чтобы удалить каталог перед выполнением cvs update. Это необходимо для обновления исходных текстов ядра.

26.2. Получение pkgsrc

Pkgsrc (package source) - это набор программного обеспечения и библиотек, портированных для NetBSD. Это самый простой способ установки или удаления программного обеспечения. Автоматически получаются исходные тексты, патчи, происходит конфигурирование, сборка бинарных файлов, их установка и установка страниц руководства man. В базе данных хранится список установленных файлов и зависимости для каждого пакета.

Получение pkgsrc с нуля:

% setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs login 
(пароль: "anoncvs")
% cvs checkout -PA pkgsrc 

Или через ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs checkout -PA pkgsrc

Это создаст каталог pkgsrc в /usr и сохранит исходные тексты системы портов в /usr/pkgsrc

Для обновления системы портов выполните:

% setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs login
(пароль: "anoncvs")
% cvs -d $CVSROOT update -PAd pkgsrc

Или через ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.NetBSD.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -PAd pkgsrc

Перед обновлением pkgsrc не забывайте выполнять make clean.

Обновлено: 16.03.2015