|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Sergey Skvortsov 2:5020/400 11 Aug 2006 14:00:53 To : Andrey Slusar Subject : Re: Вести с полей: --------------------------------------------------------------------------------
Andrey Slusar wrote:
> KP> Хмм, оказывается FORCE_PKG_REGISTER=1 тоже поломан полностью,
> KP> в fake-pkg взяли и написали .if !exists... вместо if [ ! -d ... а
> KP> это фатально заканчивается. Как-то по-серьезному нехорошо уже все
> KP> это выглядит.
>
> Может кто-то доступно расскажет в чем главное достоинство DESTDIR?
> Вроде и без него хорошо жили...
В его текущей реализации лично я не вижу ни малейшего смысла.
Вообще, есть 4 варианта использования DESTDIR:
1. Сборка порта в master OS, установка в jail, регистрация порта в
jail's pkgdb:
cd /usr/ports/misc/foobar
make install DESTDIR=/usr/Jails/jail007
При этом создаются:
/usr/Jails/jail007/usr/local/bin/foobar
/usr/Jails/jail007/var/db/pkg/foobar-1.0/+CONTENTS:
@cwd /usr/local
bin/foobar
В общем, аналогично тому, как (полагаем, что /usr/ports смонтирован в
/usr/Jails/jail007/usr/ports):
jexec 007 make -C /usr/ports/misc/foobar install
Зачем было городить огород с DESTDIR - неясно.
2. Сборка порта в master OS, установка в jail, регистрация порта в
master's pkgdb, т.е.:
При этом создаются:
/usr/Jails/jail007/usr/local/bin/foobar
/var/db/pkg/jail007-foobar-1.0/+CONTENTS:
@cwd /usr/Jails/jail007/usr/local
bin/foobar
Этот вариант полезен, если наш jail не имеет ни базы packages, ни даже
/usr/sbin/pkg_*.
Вариант очень даже полезный - например, есть порт dns/super-named,
который ставит (статически скомпилированный) bind в jail.
Очевидно, что в этом jail'е никаких бинарей кроме named и его сателлитов
и не надо.
Hо вот регистрировать такой порт очень даже надо - по очевидным причинам
(deinstall/update).
Тонкость - надо как-то указывать некий namespace-префикс типа "jail007-".
3. Сборка порта в master OS, установка в jail, регистрация порта в
jail's pkgdb, но с относительными путями, т.е.:
/usr/Jails/jail007/usr/local/bin/foobar
/usr/Jails/jail007/var/db/pkg/foobar-1.0/+CONTENTS:
@cwd /usr/local
bin/foobar
Плюсы этого варианта по сравнению со 2-м - нет нужды как-то затачивать
имя package (типа jail007-foobar-1.0) - что надо было для избежания
конфликта.
Увы, но для такого варианта pkg_* просто не подготовлены, поскольку
ключики -p и -P имеют иную семантику.
А надо бы что-то типа pkg_deinstall -D /usr/Jails/jail007 foobar-1.0
3. Сборка порта в master OS, установка в jail, регистрация порта в
jail's pkgdb, но с абсолютными путями, т.е.:
/usr/Jails/jail007/usr/local/bin/foobar
/usr/Jails/jail007/var/db/pkg/foobar-1.0/+CONTENTS:
@cwd /usr/Jails/jail007/usr/local
bin/foobar
В этом случае всё чудесно:
PKG_DBDIR=/usr/Jails/jail007/var/db/pkg pkg_deinstall foobar-1.0
Hо! В том виде, как сейчас реализован DESTDIR в bsd.port.mk этот вариант
(полезный для "минималистичных" jails) попросту не предусмотрен.
--
Sergey Skvortsov
mailto: skv@protey.ru
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/6577c069298a.html, оценка из 5, голосов 10
|