информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / sysadmin
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Скорее всего какой-то 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
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach