RPM-Build -Как распечатать сообщение об ошибке при установке rpm на клиенте

Мое требование состоит в том, что я хочу напечатать какое-либо сообщение на экране, если установка rpm в любом случае не удалась на клиентском компьютере. или отобразить сообщение на экране, например, сбой установки rpm из-за любой из сгенерированных причин. как и другие стандартные rpm.

и я не создаю файл c или не делаю команду в моем файле .spec. Все, что я делал, в файле spec.plz предлагает, как распечатать такие вещи в клиентской консоли, используя файл spec.


#Pre-Uninstall section

%preun
Processes=`ps -Ao"%p:%a"  --cols 150 |
 egrep "Launcher|rmiregistry" | grep -v grep | cut -d ":" -f1`
         if [ -n "$Processes" ]; then
                echo 'xyz is running ,first stop it then uninstall.' > /dev/stderr;
                exit 1;
         else
                 echo 'xyz service is not running' >/dev/stdout;
         fi

затем я пытаюсь удалить rpm с помощью команды

rpm -ev xyz

вывод: оба сообщения печатаются в соответствии со статусом службы. я хочу, чтобы клиент удалил с опцией -v, а затем он отобразил сообщение на экране, иначе нет. Как я могу это сделать?


person meet patel    schedule 04.12.2012    source источник


Ответы (2)


Печать в STDERR всегда будет показана клиенту. STDOUT отображается, если они устанавливаются с подробными параметрами.

echo 'Something may be wrong!' > /dev/stderr
person Aaron D. Marasco    schedule 04.12.2012
comment
размер файла равен 0. он связывает другие файлы / dev / stdout - ›/ proc / self / fd / 1 -› / dev / pts / 0 - person meet patel; 04.12.2012
comment
@miteshpatel Да, но ничего страшного. Это всего лишь внутреннее устройство системы для нормальной обработки ввода-вывода процесса. /dev/pts/0 - это (виртуальный) терминал, на котором вы работаете, например. грамм. одна вкладка в эмуляции терминала или в SSH-соединении. - person glglgl; 04.12.2012
comment
Какая у вас командная строка? Я спрашиваю, потому что вчера вы заявили, что это не сработало, потому что вы используете --test, и я уже упоминал об этом в комментариях к другому ответу. - person Aaron D. Marasco; 06.12.2012

Вы можете определить разделы %pre, %post, %preun и %postun. В качестве параметра они получают количество текущих установок пакета. См. здесь.

Соответствующий раздел книги RPM подробно описывает эти скрипты. По сути, скрипт записывается в файл перед выполнением, а затем запускается.

person glglgl    schedule 04.12.2012
comment
не могли бы вы дать более подробную информацию. - person meet patel; 04.12.2012
comment
да, но мое требование похоже на то, что после сборки rpm, когда я устанавливаю на клиентском компьютере, предположим, что команда установки - это rpm -ivh demo.rpm вместо того, что я использую rpm -ivh --test demo.rpm, он не дает сообщения об ошибке. я не уверен, возможно это или нет. - person meet patel; 04.12.2012
comment
Это потому, что --test будет проверять только, будет ли транзакция работать или нет. Он не будет выполнять ни один из сценариев, запущенных из операции только для чтения. - person Aaron D. Marasco; 05.12.2012