Bug 31924 - Скрип /usr/bin/nxloadconfig рассчитан на CUPS/1*, в сизифе присутствует CUPS/2.1
: Скрип /usr/bin/nxloadconfig рассчитан на CUPS/1*, в сизифе присутствует CUPS/2.1
Status: NEW
: Sisyphus
(All bugs in Sisyphus/freenx-server)
: unstable
: all Linux
: P3 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2016-03-27 17:48 by
Modified: 2016-03-27 19:43 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2016-03-27 17:48:10
Команда `/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 From 2016-03-27 19:43:02 -------
Ошибся в выражении для 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 ]
&& \