[an error occurred while processing this directive]

Скрипт для создания всех пакетов, требуемых по зависимостям, для порта в ОС FreeBSD
По сути, выполняет действия, аналогичные pkg_create с ключём -R, который
появился только в FreeBSD 6.x.
Однако данный скрипт позволяет указывать короткое имя порта и каталог, 
в котором создавать пакеты. А главное, он работает и на тех системах, 
где pkg_create не поддерживает ключ -R.

#!/bin/sh
#
# pkg_depend
# Create all packages (with dependence) needed by some port for FreeBSD 5.x+
#
# Version: 1.4
# Copyright (c) 2005,2006 Alexey Tsvetnov, vorakl@fbsd.kiev.ua
#
 
# Path to packages directory
pkgpath="/usr/ports/packages/All"
 
# Command for get package's version
pkgvercmd="pkg_version -v"
#pkgvercmd="portversion -v"              # more faster than pkg_version
 
getdepend()
{
    [ ! -d $2 ] && echo -n "Creating directory ($2)..." && mkdir -p $2 && echo "Done."
 
    cd ${pkgpath}
    if [ ! -f ${pkgpath}/$1.tbz ]; then
        echo -n "Creating package ($1)..."
        pkg_create -yb $1
        echo "Done."
    fi
 
    echo -n "Copying package ($1)..."
    cp -f ${pkgpath}/$1.tbz $2
    echo "Done."
 
    for LINE in `pkg_info -r $1 | grep Dependency\: | awk '{print $2}'`
    do
        if [ ! -f ${pkgpath}/${LINE}.tbz ]; then
            echo -n "Creating package (${LINE})..."
            pkg_create -yb ${LINE}
            echo "Done."
        fi
        echo -n "Copying package (${LINE})..."
        cp -f ${pkgpath}/${LINE}.tbz $2
        echo "Done."
    done
}
 
gethelp()
{
    echo ""
    echo "Usage: `basename $0` <Full/Short pkg_name> <Directory>"
    echo ""
    echo "If specify short package name script will get first find entry"
    echo ""
    echo "Example: `basename $0` dia-gnome-0.94_4,1 /tmp/pkg/"
    echo "         `basename $0` dia-gnome /tmp/pkg/"
    echo ""
    exit 1
}
 
main()
{
if [ "$2" = "" ]; then gethelp
 else
    echo -n "Checking package name ($1)..."
    if [ "`echo $1 | grep '\-[0-9]'`" = "" ]; then
        pkgname=`${pkgvercmd} | grep -E '^'$1'-[0-9].*' | awk '{print $1}' | head -1`
    else
        pkgname=`${pkgvercmd} | grep $1 | awk '{print $1}' | head -1`
    fi
    echo "Done."
 
    if [ "${pkgname}" = "" ]; then
        echo "Package '$1' not found! Exit."
        exit 2
    else
        getdepend ${pkgname} $2
    fi
fi
}
 
main $1 $2
 
exit 0
 
31.05.2006 , Автор: Alexey Tsvetnov
Ключи: freebsd, port / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

[an error occurred while processing this directive]

[an error occurred while processing this directive]