Как я рекурсивно применяю PKGREPOSITORY при вызове make-recursive во FreeBSD?

Я пытаюсь создать пакет Apache и его зависимости:

sudo make package-recursive \ __MAKE_CONF=~/make.apache22.conf \ PKGREPSOITORY=/usr/home/gvkv 

Все работает нормально; Apache и его зависимости компилируются и устанавливаются, а apache22.tbz находится в gvkv . Проблема в том, что пакеты зависимостей встроены в их соответствующие каталоги ports/<package> ! Их около пятнадцати, и, хотя их достаточно легко найти с помощью find и perl one-liner, наверняка должен быть способ make работать в среде, чтобы пакеты зависимостей gvkv в gvkv .

Часть удовольствия от использования FreeBSD связана с подсистемой портов. Это во многих отношениях – простая установка и обновление в экосистеме FreeBSD, но в других – плохое использование переменных с помощью файлов конфигурации или среды, которые не работают должным образом или даже рекламируются.

Тем не менее, SirDice пришла на помощь с аккуратным небольшим трюком:

 mount -t nullfs /directory/for/pkgs /usr/ports/packages 

что действительно здорово, потому что оно обходит использование переменных среды, и вы можете установить целевой каталог везде, где хотите. Очень полезно, если вы (как я) используете «build-jail» для создания пакетов, которые установлены на разных системах или в других тюрьмах.

/usr/ports/packages – это место, где PACKAGES указывает (если оно существует), которое якобы может указывать на другое место, но не работает для меня. Страница man предусматривает установку PKGREPOSITORY которая работает только при создании одного пакета.

Я читал, что PKGREPOSITORY зависит от ПАКЕТОВ.

Вы можете установить ПАКЕТЫ в /etc/make.conf . Например:

 DISTDIR= /opt/portbuild/distfiles PACKAGES=/opt/portbuild/packages