PDA

Visualizza la versione completa : Installatore interattivo da shell


Marcolino's
30-11-2008, 11:47
Ciao!
Sto costruendo un'applicazione in grado di installare Apache (per ora) da Shell ma mi sono fermato su un profondo dilemma.
Volendo dare la possibilità di scegliere quali moduli installare e altre amenità :madai!?: avevo instenzione di usare dialog che ho trovato molto interessante per questi scopi, ma non è quasi mai installato.
Così mi pongo questo dilemma, ovvero come posso ovviare alla mancanza di dialog?
Installarlo con un bel apt-get ma, così l'installer deve girare sotto root o quanto meno devo mettere un sudo davanti ad apt-get; d'accordo sto costruendo l'installer per sistemi Debian, ma nulla e nessuno vieta di usarlo sotto Red Hat ad esempio, oppure ovviare con qualcosaltro, ma cosa?

cacao74
30-11-2008, 12:26
"metti" il pacchetto dialog nelle dipendenze necessarie all'utilizzo del tuo pacchetto.

ciao

Marcolino's
30-11-2008, 12:35
Originariamente inviato da cacao74
"metti" il pacchetto dialog nelle dipendenze necessarie all'utilizzo del tuo pacchetto.

ciao
Perfetto! Ma volevo evitare di forzare l'utente ad installare qualcosa che non gli serve, in ogni caso penso che farò così.

Marcolino's
01-12-2008, 15:55
Ho trovato il modo :yuppi: almeno spero :fagiano:
dunque: con un amico siamo arrivati ad una conclusione che sicuramente porterà a qualche scompenso ma al momento sembra la via più praticabile.
In poche parole abbiamo pensato che dialog in genere viene usato da quegli installatori "grafici" via shell, quelli in genere che usano le ncurses dure e pure, in pratica pochi programmi oramai, mentre per tutti gli altri installatori si usa xdialog o i suoi derivati (gdialog, kdialog), in pratica comunque la si veda o c'è installato un server grafico come il vetusto Xfree86 o lo XOrg, in tutti questi casi xdialog c'è, se no dialog.
Ovviamente, dato che dialog altro non è che una specie di wrapper per facilitare l'uso delle ncurses, se proprio non c'è ... troverò il modo di farcelo stare :D
Quindi grazie anche alla guida avanzata allo scripting Bash ho realizzato questo semplice work around per verificare se c'è un programma o nel caso di lanciarne un altro:


CMD=dialog # Contiene il programma di interfaccia

# Verifica se tutto ciò che verrà usato è presente nel sistema
#+ dialog oppure altri programmi analoghi
verifica=$(whatis "$CMD" | grep \/) # se il risultato è false (0 - zero) dialog non è installato
if [ -z "$verifica" ] # Verifica se il comando esiste
then
CMD=xdialog # altrimenti ne usa un altro
fi

$CMD --title "Installatore: $0" --textbox $0 $ALTEZZA $LARGHEZZA

# Uscita regolare dal programma
exit 0

Loading