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

воскресенье, 24 августа 2008 г.

Завершена работа над FreeBSD портом системы распознавания Cuneiform

Данный проект основан на исходниках, созданных и позднее открытых компанией Cognitive technologies. Порт основан на cuneiform-linux версии 0.3.1 и содержит дополнительные исправления из основного репозитория. Работоспособность порта была проверена на FreeBSD 6 и 7, архитектуры i386 и amd64.

Источник: www.opennet.ru

четверг, 8 мая 2008 г.

Обновление PHP5

Продолжаю исправлять свои давние ошибки :) На этот раз обновление php5 и его расширений там, где затерлась системная БД с записями об установленных из портов программах.

  1. Соберем php5.
    cd /usr/ports/lang/php5 && make all
    Остановим apache2
    /usr/local/etc/rc.d/apache2 stop
    Ставим php5
    make install
  2. Теперь установим расширения php5.
    Список расширений находится в файле /usr/local/etc/php/extensions.ini. Остается лишь поиск в портах и установка. Для этой цели написал маленький скрипт.
    #!/bin/sh
    grep -oE '=[a-z]+' /usr/local/etc/php/extensions.ini | \
    sed -E 's/^./php5-/' | \
    while read pkg;
    do {
    cd /usr/ports;
    cd `make quicksearch name="^$pkg-" | \
    grep -oE '/usr/ports/.+$'` && make install;
    } done;
    Сохраняем его под именем php5-ext-inst.sh и делаем исполняемым
    chmod +x php5-ext-inst.sh
    Выполняем скрипт.
  3. После установки расширений запускаем apache2 и радуемся жизни :)
    /usr/local/etc/rc.d/apache2 start

пятница, 11 апреля 2008 г.

Скрипт быстрой сборки пакетов зависимостей

При установке программ из портов freebsd нередко компилируются и ставятся их зависимости. Если для самой программы пакет собирается одной командой

make package
то сборка пакетов зависимостей превращается или в ручной обход требуемых программ или в длительное ожидание конца обработки команды
make package-recursive
Последняя команда начинает тупо компилировать все зависимости и пытаться ставить их в систему, в том числе установленные вместе с программой.

Для решения этой проблемы я сделал следующее:
  1. В файл /etc/make.conf добавить параметр
    WRKDIRPREFIX=/tmp/work
    указывающий системе компилировать программы из портов в папке /tmp/work.

  2. Cохранить скрипт под именем pkg-recursive.sh:
    #!/bin/sh

    if [ -z "$WRKDIRPREFIX" ];
    then {
    # WRKDIRPREFIX берем из make.conf
    wrkdir=`grep -oE 'WRKDIRPREFIX=[^ ]+' /etc/make.conf | sed 's/WRKDIRPREFIX=//'`

    if [ -z "$wrkdir" ];
    then {
    # WRKDIRPREFIX не задан ни в переменной окружения ни в make.conf
    echo No WRKDIRPREFIX variable defined;
    exit;
    } fi;
    }
    else {
    # WRKDIRPREFIX задан в переменной окружения
    wrkdir=$WRKDIRPREFIX;
    } fi;

    # Меняем текущую директорию на директорию сборки и просматриваем его
    cd $wrkdir/usr/ports && ls -d */* | \
    while read pkg;
    do {
    if [ -f $wrkdir/usr/ports/$pkg/work/.install* ] && [ ! -f $wrkdir/usr/ports/$pkg/work/.package* ];
    then {
    # Условие срабатывает если программа установлена в систему и пакет не еще не собран.
    # Команда printf "\t\n" принудительно завершает режим конфигурирования программы
    # (выходит из make config).
    cd /usr/ports/$pkg && (printf "\t\n" | make package);
    } fi;
    } done

  3. Сделать скрипт исполняемым
    chmod +x pkg-recursive.sh

  4. Установить и собрать пакет программы командой
    make package

  5. Выполнить скрипт.

пятница, 14 марта 2008 г.

FreshPorts.org

Очень полезный ресурс. С его помощью можно оперативно узнавать о выходе новых версий нужных вам программ в дереве портов. Требуется зарегистрироваться на сайте, указать свой адрес e-mail (требует подтверждения), куда будут присылаться оповещения об обновлениях, и сформировать список.