Анонимный CVS позволяет поддерживать локальный репозиторий с исходниками OpenBSD в актуальном состоянии, учитывая изменения в репозитории OpenBSD. С его помощью можно так же отслеживать исправления ошибок, допущенных в релизе.
Анонимный CVS работает напрямую с центральным репозиторием. Это значит, что вам предлагается полный набор CVS-команд для обновления и объединения ваших изменений с другими изменениями в коде, создания diff'ов, просмотра истории изменений и других запросов к центральному репозиторию. В случае, если изменения не могут быть полностью объединены, CVS предоставляет возможность "мягкого отката", отмечая изменения в локальной копии, сохраняя немодифицированную копию ваших изменений и продолжая обновление других запрошенных модулей.
Проект OpenBSD на текущий момент имеет четыре репозитория:
CVS это централизованная система управления версиями, используемая для работы с деревом исходных кодов OpenBSD. CVS использует центральный репозиторий для хранения исходников с их историей изменений, что позволяет разработчикам поддерживать свои локальные копии исходников с внесенными в них изменениями.
Существуют два уровня доступа к дереву исходных кодов:
Хотя вы можете скачать себе весь репозиторий с исходниками, используя AnonCVS, можно сберечь и время и пропускную способность сети, предварительно загрузив себе тарболы с исходниками. Этот способ особенно подходит при использовании -stable, так как разница между release и -stable как правило незначительна.
Файлы с исходными кодами для загрузки с зеркал
разделены на две части, чтобы сократить время загрузки для тех, кто хочет
работать только с одной из них.
Исходники ядра находятся в sys.tar.gz
, а исходники userland
- в src.tar.gz
.
При выполнении следующих командах подразумевается, что вы выполнили
эти инструкции, наделив не-root-пользователя
правами на запись в каталогах src
, ports
и
xenocara
.
$ cd /usr/src $ tar xzf /tmp/src.tar.gz $ tar xzf /tmp/sys.tar.gz $ cd /usr $ tar xzf /tmp/ports.tar.gz $ cd /usr/xenocara $ tar xzf /tmp/xenocara.tar.gz
cvs(1) был разработан таким образом, чтобы у пользователей не возникало никаких проблем с загрузкой и обновлением исходников. Сначала надо решить, с каким branch вы хотите работать: с -current или -stable. В -current branch есть все последние изменения, в то время как в -stable содержится только исходники последнего релиза, плюс патчи критических багов и другие исправления проблем. Для получения дополнительной информации о flavors OpenBSD, смотрите пятую главу FAQ.
Для начала выберите анонимный CVS-сервер, которым
собираетесь пользоваться. Если вы начинаете с src.tar.gz
и
sys.tar.gz
, как указано выше, вы можете пропустить команду
checkout и перейти к обновлению.
Внимание:
при использовании cvs помните о том, что текущий каталог должен
находится либо в корне дерева, на которое вы ссылаетесь, либо в
другом месте, например в /tmp
.
Некоторые команды, такие как cvs checkout, могут создать
произвольное поддерево (sub-tree) в текущем каталоге, и последующее
обновление рекурсивно расширит это поддерево.
Следующая комада подразумевает, что вы уже входите в wsrc
группу; замените anoncvs.example.org
на зеркало из
списка ниже.
Если вы хотите использовать -current:
$ cd /usr $ cvs -qd anoncvs@anoncvs.example.org:/cvs checkout -P src
Если вы хотите использовать 7.6 -stable branch:
$ cd /usr $ cvs -qd anoncvs@anoncvs.example.org:/cvs checkout -rOPENBSD_7_6 -P src
Анонимный CVS использует SSH для транспортировки данных. Пароль не нужен. Если вы впервые подключаетесь к серверу, вам будет предложено подтвердить SSH fingerprint, чтобы убедиться, что вы подключаетесь к ожидаемому серверу:
$ cvs -d anoncvs@anoncvs.spacehopper.org:/cvs checkout -P src The authenticity of host 'anoncvs.spacehopper.org (2001:67c:15f4:a423::28)' can't be established. ED25519 key fingerprint is SHA256:oaJ7VEyjt2EHMeixzKn9zJGiV5YlWHIUls070tKdBzI. Are you sure you want to continue connecting (yes/no)?
Приведенный ниже список как правило включает в себя и fingerprint сервера, поэтому вы можете сравнить его с отображаемым при подключении fingerprint в качестве дополнительной проверки того, что подключаетесь к нужному серверу. Подтвердите установку соединения, и fingerprint будет сохранен (как и обычно при нормальном SSH соединении).
Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'anoncvs.spacehopper.org' (ED25519) to the list of known hosts.
Если вы используете -current:
$ cd /usr/src $ cvs -q up -Pd -A
Если вы используете 7.6 -stable branch:
$ cd /usr/src $ cvs -q up -Pd -rOPENBSD_7_6
Каждый раз, когда вы запустите приведенную выше команду,
cvs(1) попытается синхронизировать
ваш /usr/src
с изменениями, добавленными на сервере.
Это не поломает какие-любо локальные изменения; вместо этого cvs
попытается объединить (merge) их.
Если вы хотите обновить дерево каталогов с исходниками, которые загрузили себе первоночально с другого сервера или распаковали из тарбола, вы должны добавить -d [cvsroot] параметр cvs(1).
$ cd /usr/src $ cvs -d anoncvs@anoncvs.example.org:/cvs -q up -Pd
Убедитесь, что ваш пользователь входит в группу wsrc
и каталог /usr/ports
открыт на запись группе wsrc
.
Замените ports на xenocara, чтобы загрузить или
обновить дерево с исходниками xenocara.
Если нужен -current:
$ cd /usr $ cvs -qd anoncvs@anoncvs.example.org:/cvs checkout -P ports
Если нужен 7.6 -stable branch:
$ cd /usr $ cvs -qd anoncvs@anoncvs.example.org:/cvs checkout -rOPENBSD_7_6 -P ports
В случае с -current:
$ cd /usr/ports $ cvs -q up -Pd -A
В случае с 7.6 -stable branch:
$ cd /usr/ports $ cvs -q up -Pd -rOPENBSD_7_6
Чтобы создать diff того или иного файла, после того как вы его
изменили (в это примере это файл cd.c
) для, к примеру,
использования в отчете об ошибке:
$ cd /usr/src $ cvs diff -u sys/scsi/cd.c > /tmp/patch
$ cd /tmp $ cvs -d anoncvs@anoncvs.example.org:/cvs checkout -P src/sys/arch/sparc [copies the files from the repository to your machine] $ cd src/sys/arch/sparc $ cvs log locore.s [shows the commit log for the chosen file] $ cvs diff -bc -r1.1 -r1.5 locore.s [shows the changes between revisions 1.1 and rev 1.5]
Как уже упоминалось, некоторые зеркала с репозиториями поддерживают rsync.
Используйте скрипт reposync
, который проверяет наличие обновлений
CVSROOT/ChangeLog и в некоторых случаях избегает полного сканирования
каталогов, когда обновление не обнаружено.
Он также поддерживает SSH port-forwarding для зеркал, где это возможно,
позволяя подключаться к серверу "rsync --daemon" по аутентифицированному
и зашифрованному каналу.
Установите пакет reposync
, создайте нового пользователя и каталог,
куда будет скачен репозиторий, а также каталог, необходимый для самого reposync:
# pkg_add reposync # useradd cvs # install -d -o cvs /home/cvs /var/db/reposync
После этого следующая команда может использоваться для зеркалирования или обновления репозитория. Если выбранное вами зеркало не поддерживает SSH port-forwarding, либо переключитесь на другое зеркало, либо используйте «reposync -p».
# su -m cvs -c "reposync rsync://mirror.example.org/cvs /home/cvs"
После создания зеркала можно использовать локальный каталог в качестве вашего cvsroot, например:
$ cd /usr/src $ cvs -d /home/cvs -q up -PdВ марте 2024 года размер репозиториев был таким:
$ du -shc * 224M CVSROOT 1.6G ports 3.9G src 936M www 2.3G xenocara 9.0G total
Общий размер репозитория в настоящее время увеличивается примерно на 530 МБ в год. Репозиторий src увеличивается примерно на 220 МБ.
Используйте traceroute(8) чтобы найти ближайший к вам сервер. При возникновении проблем с сервером свяжитесь с его мейнтейнером.
В случае, если вы в целях безопасности не хотите или не можете использовать
исходящие SSH-соединения на 22 порт (используется по умолчанию), некоторые
CVS-серверы позволяют подключаться на альтернативный порт (обычно 2022).
Об этом должно быть указано в списке серверов.
Для использования другого порта настройте ваш ssh-клиент добавив Host
секцию в $HOME/.ssh/config
, например:
Host anoncvs.example.org Port 2022
Anoncvs зеркала в настоящее время требуется около 9 ГБ свободного места на диске (и со временем будут требовать больше!). И для каждого anoncvs-пользователя требуется до 64 МБ swap (при условии, что пользователь выполняет сложные операции; в то время как простые операции используют меньше ресурсов, anoncvs по-прежнему требует гораздо большее ресурсов чем ftp). Такие anoncvs-машины должны иметь быстрое и стабильное сетевое соединение. Ознакомьтесь с документом, где описывается процесс настройки anoncvs-серверов.
После обновления дерева с исходниками вы должны прочитать комментарии в верхней
части /usr/src/Makefile
файла, прежде чем пытаться выполнить сборку.
Кроме того, вы должны собрать новое ядро прежде чем делать
make build, если это возможно.
В некоторых случаях может потребоваться пересобрать и установить утилиту
config
, прежде чем вы сможете собрать ядро.
Например, если config GENERIC по той или иной причине у вас не
сработает.
Важно отметить, что обновление с release до current путем пересборки/компиляции исходников не поддерживается. Поэтому рекомендуется сначала установить последний snapshot, прежде чем пытаться собрать current из исходников.