Скрипт для создания всех пакетов, требуемых по зависимостям, для порта в ОС 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, [email protected]
#
# 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
|
|
|
|
Раздел: Корень / Программисту и web-разработчику / Shell / Готовые скрипты |
1.3, vorakl (??), 11:14, 09/06/2006 [ответить]
| +/– |
Потому что перед тем, как make начнёт создавать пакет, произведётся сборка порта.
Если после сборки порта ранее было выполнено 'make clean', то для 'make package' придётся снова выполнить 'make install'. Надо либо никогда не делать 'make clean' и держать в ветке портов не нужный work, либо пересобирать ВСЕ порты каждый раз... 8) | |
1.4, Павел (??), 18:38, 21/06/2006 [ответить]
| +/– |
расскажите плиз, как мне собрать порт в пакадж с нужными мне опциями? не теми что по дефолту, а с нужными...
спасибо | |
|
2.5, Сергей (??), 13:43, 22/06/2006 [^] [^^] [^^^] [ответить]
| +/– |
cd /usr/ports/<каталог>/<имя>
make КЛЮЧ1=yes КЛЮЧ2=yes -DWITH_КЛЮЧ3 package clean
| |
|
1.6, basil (??), 14:14, 23/06/2006 [ответить]
| +/– |
а нафига ?
есть пакет в портах - называется portupgrade
/usr/ports/sysutils/portupgrade
make install
[13:14] ffu:/usr/ports ]#portinstall -pir databases/phpmyadmin/
и получишь в /usr/ports/packages/ все зависимые тарболы. | |
1.7, Павел (??), 12:20, 28/07/2006 [ответить]
| +/– |
> а нафига ?
хочу свой дистриб создать... чтоб в нем сразу нужные мне пакаджи были ;) | |
|