Суть вопроса:
Хочу, чтобы инсталляция порта проходила с заранее определенными параметрами.Пример:
Если я хочу проинсталлировать php4 (дефолтная конфигурация меня не устраивает), то:1. правлю /usr/ports/lang/php4/Makefile, а именно
добавляю нужные параметры
CONFIGURE_ARGS+=--with-mysql2. устанавливаю PHP с нужными мне параметрами, определенными в Makefile
make deinstall install cleanСпособ рабочий, но слегка муторный. Много портов, требующих специфические недефолтные настройки, частые критические уязвимости, частый апгрейд то одного порта то другого... Makefile с нужной конфигурацией живет до первого обновления портов через cvsup, а затем приходится его править вновь.
Правда я нашел способ. Ведь для установки заранее заданных переменных можно использовать /etc/make.conf . Он инклудится при вызове make из /usr/share/mk/sys.mk даже до вызова Makefile, имеет тот же синтаксис что и Makefile.
В итоге получается следующая картина в /etc/make.conf :.if ${.CURDIR} == "/usr/ports/lang/php4"
WITH_MYSQL=yes
.endifИ это работает! Но вот если в make.conf поместить
.if ${.CURDIR} == "/usr/ports/lang/php4"
CONFIGURE_ARGS+=--with-mysql
.endifто это работать не будет, поскольку позже в Makefile переменная CONFIGURE_ARGS переопределится:
CONFIGURE_ARGS= --enable-versioning \
<...>ВОПРОС: Как предопределить параметры вида --with-mysql (a не WITH_MYSQL) в /etc/make.conf ?
^^up^^
Сначала ставишь cd /usr/ports/lang/php4
make install clean WITH_MYSQL=yes
Затем ставишь portupgrade и куришь pkgtools.conf на предмет MAKE_ARGS и вносишь туда WITH_MYSQL=yes.
При дальнейших апгрейдам порта, он будет собираться с заданными в pkgtools.conf опциями.
>Сначала ставишь cd /usr/ports/lang/php4
>make install clean WITH_MYSQL=yes
>Затем ставишь portupgrade и куришь pkgtools.conf на предмет MAKE_ARGS и вносишь туда
>WITH_MYSQL=yes.
>При дальнейших апгрейдам порта, он будет собираться с заданными в pkgtools.conf опциями.
>
Да, все это прекрасно работает, когда речь идет о параметрах вида WITH_MYSQL
Ну а если к примеру мне необходимо скомпилить порт с:
--with-config-file-scan-dir=/usr/local/etc/php
По идее должен соответствовать параметр WITH_CONFIG_FILE_SCAN_DIR, но не катит с ним.
Как мне прописать параметр вида --with-config-file-scan-dir в pkgtools.conf или make.conf?
>>Сначала ставишь cd /usr/ports/lang/php4
>>make install clean WITH_MYSQL=yes
>>Затем ставишь portupgrade и куришь pkgtools.conf на предмет MAKE_ARGS и вносишь туда
>>WITH_MYSQL=yes.
>>При дальнейших апгрейдам порта, он будет собираться с заданными в pkgtools.conf опциями.
>>
>Да, все это прекрасно работает, когда речь идет о параметрах вида WITH_MYSQL
>
>Ну а если к примеру мне необходимо скомпилить порт с:
>--with-config-file-scan-dir=/usr/local/etc/php
>По идее должен соответствовать параметр WITH_CONFIG_FILE_SCAN_DIR, но не катит с ним.
>Как мне прописать параметр вида --with-config-file-scan-dir в pkgtools.conf или make.conf?Про pkgtools.conf не знаю, самому было бы интересно узнать. Я делал так:
1. Смотрим какие файлы использует make - make -n -V .MAKEFILE_LIST
2. В любой из файлов который идет после Makefile порта (я делал в /usr/share/mk/bsd.port.pre.mk) вставляю:
.if ${.CURDIR:M*/usr/ports*}
.include "/etc/ports.conf"
.endif
3. В /etc/ports.conf прописываю нужные мне аргументы:
.if ${.CURDIR:M*/www/apache*}
CONFIGURE_ARGS+=--enable-suexec
.....
.....
.endif
4. При отладке полезно коммандой make -n - посмотреть что же все-таки будет делать make.
чтобы просунуть в configure можно использовать это прямо в строкеcd /usr/ports/lang/php5
make CONFIGURE_ARGS+="--with-layout=PHP" install clean
>чтобы просунуть в configure можно использовать это прямо в строке
>
>cd /usr/ports/lang/php5
>make CONFIGURE_ARGS+="--with-layout=PHP" install cleanЕсли так сделать, то переменная CONFIGURE_ARGS вообще перетрется и будет только запись из ком. строки, т.е., в данном случае, будет --with-layout=PHP и все. Все, что было прописано в Makefile до этого будет переписано одним единственным параметром. А надо, чтобы все, что есть сохранилось и только добавилось, что написал.
Так что вопрос открытый.
>[оверквотинг удален]
>>cd /usr/ports/lang/php5
>>make CONFIGURE_ARGS+="--with-layout=PHP" install clean
>
>Если так сделать, то переменная CONFIGURE_ARGS вообще перетрется и будет только запись
>из ком. строки, т.е., в данном случае, будет --with-layout=PHP и все.
>Все, что было прописано в Makefile до этого будет переписано одним
>единственным параметром. А надо, чтобы все, что есть сохранилось и только
>добавилось, что написал.
>
>Так что вопрос открытый.по идее нет, параметры будут дополнены, ну можешь еще создать файл:
/usr/ports/lang/php5/Makefile.local
в который добавить:
CONFIGURE_ARGS+= --with-layout=PHP
>по идее нет, параметры будут дополнены, ну можешь еще создать файл:
>/usr/ports/lang/php5/Makefile.local
>в который добавить:
>CONFIGURE_ARGS+= --with-layout=PHPсобирать при этом как обычно: make install clean