Bug 31924

Summary: Скрип /usr/bin/nxloadconfig рассчитан на CUPS/1*, в сизифе присутствует CUPS/2.1
Product: Sisyphus Reporter: Стас <stas.grumbler>
Component: freenx-serverAssignee: Michael Shigorin <mike>
Status: NEW --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P3    
Version: unstable   
Hardware: all   
OS: Linux   

Description Стас 2016-03-27 17:48:10 MSK
Команда `/usr/bin/nxloadconfig --check` сообщает об ошибке:

(standard_in) 1: syntax error
/usr/bin/nxloadconfig: line 696: [: -ne: ожидается использование унарного оператора

В строках 696-697 находится проверка версии CUPS:

		[ $(echo "`strings $COMMAND_CUPSD | egrep 'CUPS\/1\.' | head -1 | sed 's|CUPS\/\(1\.[0-9]\+\).*|\1|'` >= 1.2" | bc) -ne 1 ] && \
			WARNING="yes" && echo "Warning: Invalid cupsd version of \"$COMMAND_CUPSD\". Need version more or equal than 1.2."

Пустой результат появляется в цепочке:
strings $COMMAND_CUPSD | egrep 'CUPS\/1\.'
Дело в том, что в строках файла /usr/sbin/cupsd нет подстроки "CUPS/1.", зато есть "CUPS/%d" и CUPS/2.1

По смыслу условия "версия CUPS больше 1.2" думаю, будет правильным модифицировать регулярное выражение egrep так:
strings $COMMAND_CUPSD | egrep 'CUPS\/[1-9]\.'
Или упростить всёю цепочку (sed может и грепать, и взять только первую строку из найденных):
		[ $(echo "`strings $COMMAND_CUPSD | sed -n '/^CUPS\/[0-9.]*$/{s/[^0-9.]//gp;q}'` >= 1.2" | bc) -ne 1 ] && \
			WARNING="yes" && echo "Warning: Invalid cupsd version 

Но IMHO в Altlinux надёжнее извлечь версию из rpm:
rpm -qf $COMMAND_CUPSD | cut -d - -f 2 | sed s/[^0-9.]//g
Comment 1 Стас 2016-03-27 19:43:02 MSK
Ошибся в выражении для sed. Правильно и ещё короче строка 696 будет такой:

[ $( strings /usr/sbin/cupsd | sed -n '/^CUPS\/[0-9.]*$/s|.*/\([0-9]\+\.[0-9]\+\)[^0-9].*|\1 >= 1.2|p' | bc ) -ne 1 ] && \