[OpenBSD]

Программное обеспечение для OpenBSD


Оглавление


Введение

Существует огромное количество программного обеспечения, которое хотелось бы видеть включенным в состав OpenBSD. В связи с этим возникают различные проблемы: что включать в OpenBSD, а что нет, случайное лицензирование, экспортные ограничения. Как предполагается, OpenBSD должна быть маленькой, автономной UNIX-подобной системой, и многие вещи не могут поставляться с системой.

Порты и пакеты НЕ проходят полную ревизию защиты, за которой следует OpenBSD. Хотя мы стремимся сохранить высокое качество портов и пакетов, мы не имеем достаточно разработчиков, чтобы гарантировать тот же самый уровень отказоустойчивости и защиты.

Дерево портов, первоначально заимствованное от FreeBSD, заполняет этот промежуток. Концепция в том, чтобы к программному обеспечению третьего лица формировался управляющий Makefile, который содержит директивы

Вся эта информация хранится в иерархии директорий /usr/ports.

Пакеты - бинарный эквивалент портов. Компилируемый порт становится пакетом, который потом может быть зарегистрирован в системе, используя утилиту pkg_add(1)

Пакеты выглядят, как простые .tgz архивы, но они должны устанавливаться, используя pkg_add(1), так как содержат дополнительную информацию, которую только pkg_add(1) знает, как обработать. Совет: чтобы отличить пакет от .tgz архива воспользуйтесь утилитой pkg_info(1).

Получение пакетов

Большое количество предварительно скомпилированных пакетов доступно для большинства распространенных архитектур. Пакеты устанавливаются с помощью команды pkg_add pkgname.tgz. Если вы устанавливаете пакет с какого-нибудь единого источника (хранилища пакетов), установите переменную окружения PKG_PATH на URL источника, для удовлетворения зависимостей.

Например, чтобы установить пакет Gimp для версии 3.4 на i386 с ftp-сервера (включая зависимости):

    # setenv PKG_PATH ftp://ftp.openbsd.org/pub/OpenBSD/3.4/packages/i386/
    # pkg_add ${PKG_PATH}gimp-1.2.3.tgz

Обновление портов и пакетов для релиза OpenBSD

Впервые, в релизе 2.7 была создана ветка stable для дерева портов.

Например, чтобы получить порты для релиза 3.4 из этой ветви:

    $ cd /usr/ports
    $ cvs -q -d anoncvs@some.anon.server:/cvs up -r OPENBSD_3_4 -Pd

Начиная с версии 2.8, некоторые бинарные пакеты также доступны. Обратитесь к этой странице, если хотите получить информацию об обновленных пакетах и важных изменениях касающихся ветви stable.

Имена пакетов всегда изменяются при их обновлении, чтобы избежать путаницы между пакетами релиза и пакетами, в которых исправлены ошибки.

Управление установленными пакетами

Страница руководства packages(7) содержит информацию об управлении установленным программным обеспечением, разрешении конфликтов (файлы которые уже существуют) и обработке зависимостей.

Чтобы обновить установленный пакет вы должны:

Это слегка неудобно, поскольку пакет может вызывать зависимости, и вам, вероятно, придется вручную удалять большое количество пакетов для дальнейшего их обновления.

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

Если какой-то пакет не создан под вашу архитектуру, вы можете скомпилировать порт. Кроме того, некоторые пользователи, по различным причинам, компилируют все программное обеспечение из исходных текстов.

Вы можете получить релиз версию портов с любого ftp сервера из директории pub/OpenBSD/[версия] (где, [версия] - номер релиза). Релиз версия так же содержится на нашем CD диске, и проходит больше тестов, чем любой снапшот. Дополнительная информация доступна на странице руководства ports(7).

Жизненный цикл дерева портов

Дерево портов, подобно остальной части OpenBSD, постоянно изменяется.

Текущее дерево портов не может использоваться с предыдущим релизом OpenBSD. Это из-за значительных изменений, обычно в процессе построения портов, которые требуют текущего исходного кода OpenBSD.

Дерево портов работает как одно целое. Обновление одиночного каталога не гарантирует, что все будет работать, поскольку зависимости пакета могут заставить вас обновить другие части дерева портов. Мы настоятельно рекомендуем следить за состоянием дерева портов. Списки рассылки, такие как source-changes@openbsd.org или tech@openbsd.org могут быть неоценимы.

Мы советуем использовать стабильную версию портов на продуктивной машине и постараемся содержать стабильное дерево портов в хорошем состоянии относительно проблем, и предоставлять своевременные обновления бинарных пакетов.

Обратите внимание на то, что исчезающие distfiles не являются проблемой, поскольку ftp.openbsd.org содержит все их копии. Изменение контрольных сумм, также не является проблемой: вы можете использовать команду

	make checksum REFETCH=true
чтобы удостоверятся, что вы получаете правильный distfile для вашего дерева портов. Для определения, что из себя представляет текущая и стабильная версия, смотрите Mini-FAQ по обновлению.

Список ежедневных изменений в портах.

Текущее дерево портов можно получить через:

Порты и XFree86

В файлах конфигурации XFree86 содержится некое волшебство, позволяющее дереву портов устанавливать приложения на базе imake в /usr/local.

Начиная с 2.9, OpenBSD поставляется с XFree86 4.0.3 Если вы используете предыдущие дистрибутивы, вместе с бинарными файлами XFree86, вам необходимо добавить патч /usr/ports/infrastructure/patches/patch-xfree-4.0 в бинарный дистрибутив XFree86 4.0.x, для того, чтобы он корректно работал с деревом портов OpenBSD

Пример использования дерева портов

Скажем, у вас есть дерево портов и вы хотите скомпилировать и установить утилиту unzip. Вы должны проделать следующее:

    % cd /usr/ports/archivers/unzip
    % su
    # make
    # make install
    # exit
Просто? Теперь рассмотрим, что скрыто за этими операциями:

В OpenBSD 3.0, при установке портов автоматически создаются пакеты.

По мере установки приложений из коллекции портов, директория /usr/ports/distfiles заполняется архивами исходных текстов этих приложений, а /usr/ports/packages двоичными пакетами. Пользователи с ограниченной возможностью соединений могут обратится к странице руководства mirroring-ports(7) где описан эффективный способ для получения всех distfiles за раз. В OpenBSD-current, вы можете использовать скрипт /usr/ports/infrastructure/fetch/clean-old, чтобы отслеживать старые distfiles. Заметьте, что CD диск с OpenBSD содержит только дерево портов и некоторые выбранные пакеты. Если вы хотите также иметь и distfiles, вы должны получить их другим путем.

Расширенное использование дерева портов

Дерево портов имеет множество возможностей для расширенного использования, которые делают из него ценный инструмент. Пользователи могут изменять makefile'ы (прочитайте страницы руководства make(1)) или устанавливать различные переменные непосредственно в командной строке make или в /etc/mk.conf. Детальное описание этих переменных можно найти на странице руководства bsd.port.mk(5) или в документации по портированию, указанной ниже.

Создание новых портов

Если вы заинтересованы в расширении дерева портов OpenBSD, прочитайте porting.html. Эта страница ссылается на FreeBSD Porter's Handbook с специфичной для OpenBSD политикой и советами.

Когда порт не обновляется

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

Иногда, некоторые порты могут отставать от главной версии программы. Дерево портов может иметь версию программы вышедшей в Январе, тогда как разработчик программы выпустил новую версию в Мае, 3 месяца назад. Обычно это сознательное решение; новая версия может иметь проблемы на OpenBSD, которые maintainer пытается разрешить, или возможно новая версия хуже старой: OpenBSD может иметь другие задачи проекта, отличные от задач разработчика программы в другом проекте, которые иногда приводят к особенностям в дизайне или структуре программы, которые являются нежелательными с точки зрения разработчиков OpenBSD. Обновление порта так же может быть отложено из-за того, что в новой версии нет существенных изменений.

Если вам действительно нужна новая версия порта, вы должны попросить MAINTAINER'а, чтобы он обновил порт (см. ниже, как можно определить mainteiner'а); лучше будет если вы отошлете ему необходимые исправления. Для корректного создания исправлений обратитесь к документации по созданию портов.

Проблемы и обратная связь

Если у вас возникли проблемы с существующими портами, пожалуйста напишите e-mail maintainer'у порта. Для того, чтобы определить, кто является mainteiner'ом порта:

       % cd /usr/ports/archivers/unzip
       % make show=MAINTAINER
Если у порта нет maintainer'а, или он/она не отвечает, воспользуйтесь списком рассылки ports@openbsd.org. Пожалуйста не используйте список рассылки misc@openbsd.org для вопросов касающихся портов. Исправления всегда приветствуются, но в любом случае, пожалуйста, предоставьте: Для портов, которые не строятся корректно, включите информацию, выводимую при их построении. Для этого вы можете использовать скрипт portslogger, находящийся в /usr/ports/infrastructure/build. Пример запуска:
       % cd /usr/ports/archivers/unzip
       % su
       # mkdir -p ~/portslogs
       # make clean install 2>&1 | /usr/ports/infrastructure/build/portslogger \
               ~/portslogs
После этого, вы получите файл содержащий процесс построения порта в директории ~/portslogs, который вы можете послать mainteiner'у порта. Убедитесь, что вы не используйте дополнительных опций при построении, например в /etc/mk.conf.

Вы так же можете


OpenBSD www@openbsd.org
Originally [OpenBSD: ports.html,v 1.77 ]
$RuOBSD: ports.html,v 1.10 2004/02/28 08:38:39 dfa Exp $
$Translation: ports.html,v 1.21 2004/02/28 19:30:43 dfa Exp $
$OpenBSD: ports.html,v 1.16 2004/02/29 08:50:22 jufi Exp $