O Zenity não mostra mensagens no deb preinst quando é executado pelo Ubuntu Software Center

2

Estou criando um pacote deb que requer java oracle > = 7. Então escrevi um arquivo preinst simples com um script bash que mostrará uma mensagem (usando zenity) que avisará ao usuário que ele precisa instalá-lo. No entanto, quando o pacote deb é instalado através do Ubuntu Software Center, ele falha antes que a mensagem apareça. Por favor me ajude a consertar isso.

Editar: Isso ocorreu no Ubuntu 15.04 64/32 bits.

arquivo preinst:

#!/bin/bash

JAVA_VERSION='echo "$(java -version 2>&1)" | grep "java version" | awk '{ print substr($3, 2, length($3)-2); }''

 if [[ "$JAVA_VERSION" = *"1.7"* ]] || [[ "$JAVA_VERSION" = *"1.8"* ]]; then
     echo 'java is ok'
     exit 0
 fi

 zenity --error --text="Please install java oracle 7 or newer. \"Ok\", exiting instalation"
 exit 1

Log de instalação:

Reading database ... 100%
(Reading database ... 171184 files and directories currently installed.)
Preparing to unpack .../usb/test.deb ...
gdk_mir_display_open
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused (zenity:3179): Gtk-WARNING **: 
cannot open display: dpkg: error processing archive /media/test/usb/test.deb (--install):
subprocess new pre-installation script returned error exit status 1
Errors were encountered while processing: /media/test/usb/test.deb
    
por user2183073 06.08.2015 / 15:03

1 resposta

1

Eu encontrei esta opção: 'export DISPLAY =: 0' precisa ser adicionado à linha de script do zenity.

export DISPLAY=:0 && zenity --error --text="Please install java oracle 7 or newer. \"Ok\", exiting installation"

Mas isso não funcionou para mim. Estranhamente, funcionou a cada 20 ou mais testes.

A melhor maneira para mim foi abandonar o zenity e usar o debconf. Link tutorial do Debconf . Nota: a prioridade da janela de entrada precisa ser alta ou crítica ou não será exibida.

    
por user2183073 07.08.2015 / 11:27