Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> OpenBSD —> Настройка —> src & ports

Работа с портами и исходниками.

Автор: Raven2000.


Конечно, в OpenBSD система портов никогда не сможет быть полной сравнение с той же системой во FreeBSD.
Связано это с тем, что разработчики включают в порты лишь те приложение которые протестированны и однозначно стабильные, т.е. нет ветки devel и т.п. приложений, которые не стабильны и не протестированы, что является плюсом OpenBSD =). Установка портов на OpenBSD, отличается от установки онных во FeeBSD.

Содержание:

  • Ports
         Установка
  • SRC
         Установка и обновление
  • Обновление
         Обновление c CVS
         Обновление c CVSup
  • Работа с пакетами и портами
         Пакеты
         Порты
         Flavors
         Проверка портов с out-of-date скриптом
  • Конфигурация mk.conf & ports
  • Литература

  • Ports
    Иерархия ports/ должна быть скопирована с CD-ROM, или с другого носителя на ваш жесткий диск вручную.
    Необходимо скопировать компоненты дерева портов в /usr/ports (туда, где они обычно располагаются в *BSD системах)

    Установка
    Если вы установили OpenBSD с CD-ROM на котором есть дерево портов, то можно выполнить следующую комманду:
    # mount_cd9660 /dev/cd0a /mnt/cdrom
    # cd /usr && tar zxf /mnt/cdrom/ports.tar.gz


    Если же вы сами скачали ports.tar.gz с ftp.openbsd.org, то выполните аналогичную команду:
    # cd /usr && tar zxf /home/Raven2000/ports.tar.gz


    Загрузка и установка ports для current:
    # cd /usr
    # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P ports


    Загрузка и установка ports для 4.3:
    # cd /usr
    # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_3 -P ports

    флаг -q указан для минимизации вывода сообщений на экран программой cvs.

    Еще вариант загрузки и установки ports для 4.3:
    # cd /tmp
    # ftp ftp://ftp.openbsd.org/pub/OpenBSD/4.3/ports.tar.gz
    # cd /usr
    # tar xzf /tmp/ports.tar.gz


  • SRC
    Установка и обновление
    Если вы установили OpenBSD с CD-ROM на котором есть src, то можно выполнить следующую команду:
    # mount_cd9660 /dev/cd0a /mnt/cdrom
    # cd /usr/src && tar zxf /mnt/cdrom/src.tar.gz


    В случае самостоятельного скачивания архива с исходным кодом с FTP, вводим следующее:
    Небольшое отступление src на ftp разделен на два файла src.tar.gz и sys.tar.gz в комментариях создателей это сделано специально, чтобы пользователям было удобнее закачивать по частям и чтобы было при необходимости можно было работать только с одной частью дерева.
    # cd /usr/src && tar zxf /home/Raven2000/src.tar.gz
    # cd /usr/src && tar zxf /home/Raven2000/sys.tar.gz


    Качаем и установим:
    Для current
    # cd /usr
    # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -P src


    Для ветки 4.3
    # cd /usr
    # cvs -qd anoncvs@anoncvs.ca.openbsd.org:/cvs get -rOPENBSD_4_3 -P src


    Команда указанная ниже, загружает src нужной ветки в /usr/src:
    # cd /usr; cvs checkout -P -rOPENBSD_4_3 src


    Обновление для current:
    # cd /usr/src
    # cvs -q up -Pd


    Для ветки 4.3:
    # cd /usr/src
    # cvs -q up -rOPENBSD_4_3 -Pd


    Так же обновление src можно сделать следующей командой с указанием источника:
    # cd /usr/src/; cvs -d anoncvsserver.openbsd.org:/cvs update -PAd


    Пример обновления компонентов src:
    # cd /usr/src/; cvs -d anoncvs@anoncvs.de.openbsd.org:/cvs update -PAd
    ~~
    P usr.sbin/ypset/ypset.c
    cvs server: Updating usr.sbin/zdump
    cvs server: Updating usr.sbin/zic
    cvs server: Updating usr.sbin/ztsscale


  • Обновление
    Обновление c CVS
    Обновим ваше дерево портов для current:
    # cd /usr/ports
    # cvs -q up -Pd

    Флаги
    "-q" - указан для минимизации вывода сообщений на экран программой cvs.

    Обновим ваше дерево портов для ветки 4.3:
    # cd /usr/ports
    # cvs -q up -rOPENBSD_4_3 -Pd


    или можно так
    # cd /usr/ports
    # cvs -d anoncvsserver.openbsd.org:/cvs update -PdrOPENBSD_4_3


    Разумеется, вы должны подставить вместо anoncvsserver.openbsd.org необходимый анонимный CVS, который ближе всего нахотится к вам.
    Весь список можно посмотреть тут Anonymous CVS в разделе Available Anonymous CVS Servers

    Пример обновления дерева портов:
    # cd /usr/ports
    # cvs -d anoncvs@anoncvs.de.openbsd.org:/cvs update -PdrOPENBSD_4_3
    The authenticity of host 'anoncvs.de.openbsd.org (131.188.40.91)' can't be established.
    RSA key fingerprint is fc:94:b0:c1:e5:b0:98:7c:58:43:99:76:97:ee:9f:b7.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'anoncvs.de.openbsd.org,131.188.40.91' (RSA) to the list of known hosts.
    ~~~


    Обновление c CVSup
    Классика жанра, но в классике небольшие изменения и сами разработчики указывают, что лучше установить пакет, чем ставить из порта обосновываясь цитирую:
    CVSup написан на Modula-3, поэтому его довольно сложно скомпилировать и установить. Порт lang/ezm3 содержит специальный дистрибутив Modula-3 необходимый лишь для компиляции CVSup. Мы рекомендуем установить уже собранный пакет CVSup с ftp сервера, вместо создания собственного из порта net/cvsup. В настоящий момент, порты CVSup и Ezm3 доступны только для i386 платформы.
    Отсюда следуют жесткие ограничения только i386 платформа, а это нехорошо. В выводе лучше использовать cvs, а лучше сразу пакеты как утверждают разработчики.

    Мы установим в двух вариантах:
    Пакет.
    # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/cvsup-16.1hp1-no_x11.tgz

    Порт.
    # make search name=cvsup
    Port: cvsup-16.1hp0
    Path: net/cvsup,-main
    Info: network file distribution system
    Maint: Christian Weisgerber <naddy@openbsd.org>
    Index: net devel
    L-deps:
    B-deps: :lang/ezm3
    R-deps:
    Archs: i386

    Port: cvsupd-16.1h-no_x11
    Path: net/cvsup,-server,no_x11
    Info: network file distribution server
    Maint: Christian Weisgerber <naddy@openbsd.org>
    Index: net devel
    L-deps:
    B-deps: :lang/ezm3
    R-deps:
    Archs: i386

    # cd /usr/ports/net/cvsup && make install -main clean
    ===> Checking files for cvsup-snap-16.1h
    >> cvsup-snap-16.1h.tar.gz doesn't seem to exist on this system.
    >> Fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/snapshots/cvsup-snap-16.1h.tar.gz.
    Trying 2001:4f8:0:2::e...
    ftp: connect to address 2001:4f8:0:2::e: No route to host
    Trying 2001:6c8:6:4::7...
    ftp: connect to address 2001:6c8:6:4::7: No route to host
    Trying 204.152.184.73...
    100% |**************************************************| 420 KB 00:11
    ~~~~
    ===> Installing cvsup-16.1hp0 from /usr/ports/packages/i386/all/
    cvsup-16.1hp0: complete
    ===> Cleaning for cvsup-16.1hp0


    Теперь, нам необходимо создать конфиг для CVSUP.
    # cd /etc/
    # touch cvsup.conf
    # cat cvsup.conf
    
    *default release=cvs
    *default delete use-rel-suffix
    *default umask=002
    *default host=cvsup.usa.openbsd.org
    *default base=/usr
    *default prefix=/usr
    *default tag=OPENBSD4_3
    *default compress
    
    # Что будем обновлять. Здесь выбрано все, но быть может,
    # в Вашем случае, в этом не будет необходимости.
    OpenBSD-all
    #OpenBSD-src
    #OpenBSD-www
    #OpenBSD-ports
    #OpenBSD-x11
    #OpenBSD-xf4
    #OpenBSD-xenocara
    


    Начнем обновление (я отредактировал конфигурацию под себя)
    # cvsup -g -L 2 /etc/cvsup.conf
    Parsing supfile "/etc/cvsup.conf"
    Connecting to cvsup.usa.openbsd.org
    Connected to cvsup.usa.openbsd.org
    Server software version: SNAP_16_1h
    Negotiating file attribute support
    Exchanging collection information
    Establishing multiplexed-mode data connection
    Running
    Updating collection OpenBSD-src/cvs
    Updating collection OpenBSD-www/cvs
    Updating collection OpenBSD-ports/cvs
    Skipping collection OpenBSD-xenocara/cvs
    Shutting down connection to server
    Finished successfully


    refuse
    Файл refuse, как и во FreeBSD предназначен ограничения от не нужного закачивания, например, не нужные локализации документации, либо ненависть к программам например из Африки =)
    ЕЩЕ ДОПИСЫВЕТСЯ

  • Работа с пакетами и портами
    Пакеты
    Пакеты - это скомпилированные бинарные файлы, которые могут легко управлятся такими инструментами как:
    pkg_add - утилита для установки и обновления пакетов.
    pkg_delete - утилита для удаления установленных пакетов.
    pkg_info - утилита для отображения информации об установленном пакете.
    pkg_create - утилита для создания пакета.

    Скомпилированные пакеты можно получить с CD-ROM, c FTP сервера или с сайта OpenBSD:
    Packages for OpenBSD 4.3
    Packages for OpenBSD 4.2
    Packages for OpenBSD 4.1

    Установка пакета:
    # pkg_add -v screen-4.0.3p0
    parsing screen-4.0.3p0
    installed /etc/screenrc from /usr/local/share/examples/screen/screenrc | 71%
    screen-4.0.3p0: complete

    Флаги:
    "-v" - для вывода более детальной информации при установке.
    "-i" - интерактивая установка, установщик спрашивает подтверждения каждого действия.

    Листинг установленных пакетов:
    pkg_info - показывает все установленные пакеты.

    Обновление пакетов:
    # pkg_add -u unzip
    unzip-5.52 (extracting): complete
    unzip-5.51 (deleting): complete
    unzip-5.52 (installing): complete
    Clean shared items: complete

    Если пакет имеет зависимости, они так же будут обновленны.
    Флаги:
    "-u" - обновление пакета.
    "-с" - заменяет отредактированный файл конфигурации на файл конфигурации по умолчанию.

    Удаление пакетов:
    # pkg_delete screen
    screen-4.0.3p0: complete
    Clean shared items: complete

    Флаги:
    "-с" - удаляет измененный файл конфигурации.
    "-v" - более детализированный отчет о производимых действиях при удалении.

    Порты

    Поиск порта:
    Поиск в дереве портов происхдит так же, как и во FreeBSD.
    # cd /usr/ports/
    # make search name=nmap
    Port: nmap-4.53
    Path: net/nmap,-main
    Info: scan ports and fingerprint stack of network hosts
    Maint: Giovanni Bechis <g.bechis@snb.it>
    Index: net security lang/python
    L-deps: dnet::net/libdnet lua.>=5::lang/lua pcre::devel/pcre
    B-deps: :devel/gmake python-2.5*:lang/python/2.5
    R-deps:
    Archs: any


    Установка порта:
    # cd /usr/ports/net/nmap/
    # make install


    Это не то, что в FreeBSD вы привыкли и вам придется привыкать к FLAVORS.
    Конфигурация порта. Некоторые порты имеют возможность задавать вопросы в процессе установки.
    # make configure


    Или так добавив в конвеер
    # cd /usr/ports/net/nmap/ && make install


    Очистка директории c портом после сборки и установки:
    # make clean
    ===> Cleaning for nmap-4.53


    Очистка рабочих директорий порта от всех зависимостей:
    # make clean=depends


    Удаление исходников порта:
    # make clean=dist


    Удаление порта:
    # make uninstall

     
    Переустановка порта:
    # make reinstall


    Удаление пакета собранного порта:
    # make clean=packages


    Проблемы с портом
    При возникновении технических проблем с портом, отправьте сообщение его майнтайнеру.
    # cd /usr/ports/net/nmap/
    # make show=MAINTAINER
    Giovanni Bechis <g.bechis@snb.it>


    Flavors
    А здесь как раз и есть та возможность, которая нам предоставлялась в FreeBSD под видом графического make config. Привыкайте.    
    # cd /usr/ports/misc/screen/
    # make show=FLAVORS
    static shm

    Чтобы разобратся что это такое необходимо прочтитать файл DESCR который находится в директории этого порта.
    # cat /usr/ports/misc/screen/pkg/DESCR
    Screen is a full-screen window manager that multiplexes a physical
    terminal between several processes (typically interactive shells).
    Each virtual terminal provides the functions of a DEC VT100 terminal
    and, in addition, several control functions from the ANSI X3.64 (ISO
    6429) and ISO 2022 standards (e.g. insert/delete line and support for
    multiple character sets). There is a scrollback history buffer for each
    virtual terminal and a copy-and-paste mechanism that allows moving text
    regions between windows.

    Flavors:
    static - Build with statically linked binaries.
    shm - export screen as shared memory, useful for brltty.

    Теперь более менее ясно и соберем screen как static и в пакет.
    # env FLAVOR="static" make package

    А теперь соберем и установим и почистим.
    # env FLAVOR="static" make install clean
    ===> Installing screen-4.0.3p1-static from /usr/packages/i386/all/
    screen-4.0.3p1-static: complete
    ===> Cleaning for screen-4.0.3p1-static

    Можно определить сразу множество параметров
    # cd /usr/ports/mail/exim
    # env FLAVOR="mysql ldap" make install clean


    Проверка портов с out-of-date скриптом
    Посмотрим что нам необходимо обновить:
    # cd /usr/ports/infrastructure/build/
    # ./out-of-date
    Collecting installed packages
    Collecting port versions: complete
    Collecting port signatures: complete
    Outdated ports:

    archivers/bzip2 # c.43.0 -> c.48.0
    #


    Единственный порт нуждающийся в обновлении bzip2.
    Обноружим нахождение bzip2 в портах:
    # find /usr/ports/ -name bzip2
    /usr/ports/archivers/bzip2


    Обновим bzip2:
    # cd /usr/ports/archivers/bzip2
    # make update


  • Конфигурация mk.conf & ports

    mk.conf - определенные для системы параметры.
    Словами FreeBSD это make.conf. В котором вы вписываете все необходимые параметры. По умолчанию он отсутствует, поэтому нужно создать файл самому.
    # touch /etc/mk.conf


    Сконфигурируем и добавим несколько параметров.
    Например, укажем рабочие директории портов, дистрибутивов и скомпилированных бинарных пакетов.
    WRKOBJDIR=/usr/ports
    DISTDIR=/usr/distfiles
    PACKAGE_REPOSITORY=/usr/packages
    


    SUDO - утилита для безопасной эксплуатации системы, применяют sudo в виду небезопасной постоянной работы в системе с правами пользователя root.
    На вкус и цвет..
    SUDO=/usr/bin/sudo
    


    USE_SYSTRACE - применение этого параметра запрещает записываться приложению куда ему не положено, что есть хорошо и снижает риск убийства системы кривыми или злонамеренными приложениями.  systrace - создает и указывает политику запроса системы. НО обратите внимание, что использование systrace добавляет 20% при компиляции. Используйте это параметр когда будете знать, что вы делаете =)
    USE_SYSTRACE=Yes
    


    Ports
    Вы должны изменить группу всего дерева портов, чтобы туда мог писать только определенный пользователь, так же, пользователя следует добавить в группу wsrc.
    # chgrp -R wsrc /usr/ports
    # find /usr/ports -type d -exec chmod g+w {} \;


    Статья в процессе дописания все пожелания и очепятки в ветку форума.
    Спасибо Andy за помощь в редактировании статьи ;)

  • Литература
    1) Anonymous CVS
    2) The OpenBSD packages and ports system
    3) CVSup Часто задаваемые вопросы перевод сайта CVSup
    4) OpenBSD CVSup перевод FAQ



    размещено: 2008-10-17,
    последнее обновление: 2008-11-19,
    автор: Raven2000


    iZEN, 2008-10-19 в 10:43:40

    Статью пропесочили здесь: http://www.opennet.ru/opennews/art.shtml?num=18468

    ElDeRone, 2008-10-24 в 15:28:56

    Весь список можно посмотреть тут url=http://www.openbsd.org/anoncvs.html]Anonymous CVS[/url] в разделе ...

    Raven2000, 2008-10-24 в 15:43:52

    to ElDeRone
    см список литературы ничего не узнаешь под номером 1?

    ElDeRone, 2008-10-24 в 20:21:50

     url=http://www.openbsd.org/anoncvs.html]
    ^ здесь ты забыл открывающую скобку :)

    Raven2000, 2008-10-24 в 22:52:41

    to ElDeRone
    сеньк, а я то и не понял сразу =)



  •  

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0376 секунд
    Из них PHP: 28%; SQL: 72%; Число SQL-запросов: 61 шт.
    Исходный размер: 57471; Сжатая: 11320