Почему я не могу переопределить переменные окружения make в порту apache FreeBSD? - PullRequest
1 голос
/ 05 августа 2010

Я пытаюсь настроить Apache 2.2 из портов (во FreeBSD).Я написал свой собственный make-файл с желаемыми опциями компиляции, и, насколько я могу судить, кажется, все проверено.Т.е.:

make -V <env_var> __MAKE_CONF=~/mk/make.apache22.conf

возвращает то, что я ожидаю, за исключением PERL5 и USE_PERL5.Я попытался установить обе переменные в make.apache22.conf, а также установить окружение в каждой комбинации:

export PERL5=/usr/local/bin/perl
export USE_PERL5=5.12+

и все же

make -e -V USE_PERL5 -V PERL5

возвращает

yes
/usr/local/bin/perl5.10.1

(я также пытался переопределить с помощью -E.) Другое дело, что у меня установлен только Perl 5.12.1, так что версия явно идет из порта Perl и / или bsd.perl.mk, нокак я грохнул bsd.perl.mk и саму утилиту make Я не понимаю, почему мои методы не работают.

Чего мне не хватает?

1 Ответ

1 голос
/ 06 августа 2010

Итак, короче говоря, ответ лежит в системе портов. От /usr/ports/Mk/bsd.port.mk:

Note: the distinction between the USE_* and WANT_* variables, and the
WITH_* and WITHOUT_* variables, are that the former are restricted to
usage inside the ports framework, and the latter are reserved for user-
settable options.  (Setting USE_* in /etc/make.conf is always wrong).

Обычно при установке из порта Makefile рекурсивно включает цепочку файлов, которая в какой-то момент приносит:

/usr/ports/Mk/bsd.perl.mk

и этот файл оценивает все переменные USE_PERL* и PERL*, определенные для порта Makefile. В частности, bsd.perl.mk жестко кодирует требуемую версию Perl и установит порт Perl, если его еще нет в системе.

Система портов довольно крутая, но я нахожу такие вещи разочаровывающими, поскольку, похоже, нет простого способа настроить порт для сборки и / или запуска с использованием уже существующего программного обеспечения.

ОБНОВЛЕНИЕ 8 августа 2010 г .:

Суть в том, что вы используете порты или нет. Если вы этого не сделаете, вы должны вручную настроить и отследить все, но вы также получите последние и (надеюсь) лучшие. Система портов хороша тем более, что каждый порт может быть настроен по мере необходимости, и вы получаете преимущества простого обновления и управления пакетами. (Например, для создания пользовательских скомпилированных пакетов для установки в тюрьмы - особенно с помощью такого инструмента, как ezjail.) Недостатком является то, что иногда вам придется немного подождать, прежде чем порт обновится до последней версии. Это не имеет большого значения для обычного программного обеспечения, но, возможно, вам придется немного подождать, пока что-то неясное.

В конечном счете, решение здесь состоит в том, чтобы установить порт Perl 5.12 и перейти оттуда.

...