Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
Скорее всего какой-то shell-скрипт 07.08.06 16:12 Число просмотров: 2463
Автор: :-) <:-)> Статус: Elderman Отредактировано 07.08.06 16:23 Количество правок: 1
|
> запустил make - вывод точно такой же, т.е. запуск утилиты > test не проходил.
В большинстве шеллов "test" и "[" - встроенные команды. Поэтому твой скрипт и не вызывается.
Например в bash:
$ type \[
[ is a shell builtin
Проблему наверное стоит искать в строках вида
if [ $a -le $b ]
Где переменным $a или $b - не присвоено значение.
Попробуй добавить опцию -v в первую строчку скрипта, чтобы команды печатались по мере исполнения.
#! /bin/sh -v
|
<sysadmin>
|
Знатокам make 07.08.06 14:07
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
с какого-то момента при выполнении make на FreeBSD 4.11 выдает такие варнинги:
/usr/ports/lang/php4]# make clean
[: -le: argument expected
[: -le: argument expected
[: -le: argument expected
[: -le: argument expected
===> Cleaning for apache-1.3.37
Думал сначала что поменялась утилита [ (test) и с ней что-то не так. Переименовал файлы [ и test, вместо них оставил скрипт
#!/usr/local/bin/bash
echo $* >>/tmp/test.log
запустил make - вывод точно такой же, т.е. запуск утилиты test не проходил.
Сделал следующее
make -d A сlean>test 2>&1
получил пошаговое выполнение команды make, но с синтакисом не знаком. Кто-то может помочь?
Фрагмент test
Applying :M to "13"
Result is "13"
lhs = "13", rhs = "", op = !=
Global:AP_PORT_IS_MODULE = YES
Apply[: -le: argument expected
Ошибка возникает при выполнении /usr/ports/Mk/bsd.apache.mk. Нужно только определиться где именно.
|
|
Скорее всего какой-то shell-скрипт 07.08.06 16:12
Автор: :-) <:-)> Статус: Elderman Отредактировано 07.08.06 16:23 Количество правок: 1
|
> запустил make - вывод точно такой же, т.е. запуск утилиты > test не проходил.
В большинстве шеллов "test" и "[" - встроенные команды. Поэтому твой скрипт и не вызывается.
Например в bash:
$ type \[
[ is a shell builtin
Проблему наверное стоит искать в строках вида
if [ $a -le $b ]
Где переменным $a или $b - не присвоено значение.
Попробуй добавить опцию -v в первую строчку скрипта, чтобы команды печатались по мере исполнения.
#! /bin/sh -v
|
| |
вот что наковырял после дебага 07.08.06 18:32
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
> В большинстве шеллов "test" и "[" - встроенные команды. Поэтому твой скрипт и не > вызывается. похоже что так и есть
вот лог выполнения make (make -d A clean >test 2>&1)
---8<---
Global:_ERROR_MSG = : Error from bsd.apache.mk.
Global:APACHE_SUPPORTED_VERSION = 13 20 21 22
Applying :M to "1.3+"
Result is ""
lhs = "", rhs = "", op = !=
Applying :L to "1.3+"
Result is "1.3+"
lhs = "1.3+", rhs = "apr", op = ==
Applying :C to "1.3+"
Result is "13+"
Applying :C to "13+"
Result is "13"
Applying :M to "13"
Result is "13"
lhs = "13", rhs = "", op = !=
Global:AP_PORT_IS_MODULE = YES
Apply[: -le: argument expected
---8<---
смотрим файл /usr/ports/Mk/bsd.apache.mk
находим единстевенное место где есть -le
---8<---
if defined(AP_CUR_VERSION)
VERSION_CHECK!= eval `${ECHO_CMD} "[ ${AP_VERSION} -eq ${AP_CUR_VERSION} ]" | ${SED} -e 's/- -eq/ -ge/ ; s/+ -eq/ -le/' ` ; ${ECHO_CMD} $${?}
. if ${VERSION_CHECK} == 1
IGNORE= ${_ERROR_MSG} apache${AP_CUR_VERSION} is installed (or APACHE_PORT is defined) and port requires ${USE_APACHE}
. endif
---8<---
как я понял не устанавливаются переменные {AP_CUR_VERSION} - это скорее всего версия установленного апача. Почему так происходит - непонятно.
|
| | |
Победил ;-)) 07.08.06 18:40
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
Стал жертвой собственного кастомизинга ;-))
Сначала такое случилось на одном из серверов, потом на втором. После того как стало на третьем и четвертом решил разобратья. Дело вот в чем:
.if exists(${HTTPD})
AP_CUR_VERSION!= ${HTTPD} -V | ${SED} -ne 's/^Server version: Apache\/\([0-9]\)\.\([0-9]*\).*/\1
\2/p'
. if ${AP_CUR_VERSION} > 13
APACHE_MPM!= ${APXS} -q MPM_NAME
. endif
.elif defined(APACHE_PORT)
AP_CUR_VERSION!= ${ECHO_CMD} ${APACHE_PORT} | ${SED} -ne 's,/apache\([0-9]*\).\1,p'
.endif
версия апача определяется по htttpd -V, но так как я немного покастомизил src/include/httpd.h на предмет выдачи хедера, то паттерном она уже не ловилась, и переменная устанавливалась в none
APACHE_VERSION= ${AP_CUR_VERSION}
.else
AP_CUR_VERSION= none
|
|
|