Skip to content

Instantly share code, notes, and snippets.

@joaoneto
Created September 13, 2013 00:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joaoneto/6545594 to your computer and use it in GitHub Desktop.
Save joaoneto/6545594 to your computer and use it in GitHub Desktop.
Nice zenity installer example
#!/bin/bash
function infinite_progress {
$* 2> /dev/null
}
function verify_dependencies {
local DEPS=""
local PACKAGES=$1
for PACKAGE in $PACKAGES ; do
CMD=$(dpkg --get-selections | grep "$PACKAGE")
if [ -z "$CMD" ] ; then
DEPS="$DEPS $PACKAGE"
fi
done
echo $DEPS
}
# Init
function setup_init {
echo "# Atualizando repositórios"
infinite_progress apt-get update
echo "\r# Repositórios aualizados!!!"
}
# Setup Modules
# Apache
function setup_module_apache {
echo "# Verificando se o Apache2 está instalado"
PACOTES=$(verify_dependencies "apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Apache2"
infinite_progress apt-get install -y $PACOTES
echo "\r# Apache2 instalado!!!"
else
echo "# Apache2 OK!!!"
fi
}
# PHP5
function setup_module_php5 {
echo "# Verificando se o PHP5 está instalado"
PACOTES=$(verify_dependencies "libapache2-mod-php5 php-auth-sasl php-http-request php-mail php-mail-mime php-mail-mimedecode php-net-dime php-net-smtp php-net-socket php-net-url php-pear php-soap php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-mcrypt php5-mysql php5-sqlite php5-xdebug php5-xmlrpc php5-xsl")
if [ -n "$PACOTES" ] ; then
echo "# Instalando PHP5"
infinite_progress apt-get install -y $PACOTES
echo "\r# PHP5 instalado!!!"
else
echo "# PHP5 OK!!!"
fi
}
# MySQL
function setup_module_mysql {
echo "# Verificando se o MySQL está instalado"
PACOTES=$(verify_dependencies "mysql-client mysql-common mysql-server")
if [ -n "$PACOTES" ] ; then
echo "# Instalando MySQL"
echo "mysql-server mysql-server/root_password select (password omitted)" | debconf-set-selections
echo "mysql-server mysql-server/root_password_again select (password omitted)" | debconf-set-selections
infinite_progress apt-get install -y --force-yes --no-download --ignore-missing mysql-client mysql-common mysql-server
echo "\r# MySQL instalado!!!"
else
echo "# MySQL OK!!!"
fi
}
# FileZilla
function setup_module_filezilla {
echo "# Verificando se o FileZilla está instalado"
PACOTES=$(verify_dependencies "filezilla filezilla-common")
if [ -n "$PACOTES" ] ; then
echo "# Instalando FileZilla"
infinite_progress apt-get install -y filezilla filezilla-common
echo "\r# FileZilla instalado!!!"
else
echo "# FileZilla OK!!!"
fi
}
# Sublime Text 2
function setup_module_sublimetext2 {
echo "# Verificando se o Sublime Text 2 está instalado"
PACOTES=$(verify_dependencies "sublime-text")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Sublime Text 2"
infinite_progress add-apt-repository -y ppa:webupd8team/sublime-text-2
infinite_progress apt-get update
infinite_progress apt-get install -y $PACOTES
echo "\r# Sublime Text 2 instalado!!!"
else
echo "# Sublime Text 2 OK!!!"
fi
}
# Virtualbox
function setup_module_virtualbox {
echo "# Verificando se o Virtualbox está instalado"
PACOTES=$(verify_dependencies "virtualbox virtualbox-fuse virtualbox-guest-additions virtualbox-guest-additions-iso virtualbox-guest-utils virtualbox-guest-x11")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Virtualbox"
infinite_progress apt-get install -y $PACOTES
echo "\r# Virtualbox instalado!!!"
else
echo "# Virtualbox OK!!!"
fi
}
# Preload
function setup_module_preload {
echo "# Verificando se o Preload está instalado"
PACOTES=$(verify_dependencies "preload")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Preload"
infinite_progress apt-get install -y $PACOTES
echo "\r# Preload instalado!!!"
else
echo "# Preload OK!!!"
fi
}
# Adobe Flash Player
function setup_module_flashplayer {
echo "# Verificando se o Adobe Flash Player está instalado"
PACOTES=$(verify_dependencies "flashplugin-installer")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Adobe Flash Player"
infinite_progress apt-get install -y $PACOTES
echo "\r# Adobe Flash Player instalado!!!"
else
echo "# Adobe Flash Player OK!!!"
fi
}
# Oracle Java
function setup_module_java {
echo "# Verificando se o Oracle Java está instalado"
PACOTES=$(verify_dependencies "oracle-java8-installer")
if [ -n "$PACOTES" ] ; then
echo "# Instalando Oracle Java"
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selections
infinite_progress add-apt-repository -y ppa:webupd8team/java
infinite_progress apt-get update
infinite_progress apt-get install -y --force-yes --no-download --ignore-missing $PACOTES
echo "\r# Oracle Java instalado!!!"
else
echo "# Oracle Java OK!!!"
fi
}
# add-apt-repository ppa:webupd8team/java
# apt-get install -y oracle-java8-installer
# apt-add-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
# apt-get update
# apt-get install skype
if [ "$UID" != "0" ]; then
zenity --error --title=Setup --text="Precisa ser root!"
exit 1
fi
MODULES=`zenity --title=Setup --text="Selecione os módulos que serão configurados e/ou instalados no Ubuntu:\n" \
--height=400 --width=640 --list --separator=" " --checklist --print-column 3 --hide-column 3 --column="" --column="Módulos" --column="" \
true "Apache2" "apache" \
true "PHP5" "php5" \
true "MySQL" "mysql" \
true "Sublime Text 2" "sublimetext2" \
true "Virtualbox" "virtualbox" \
true "Preload" "preload" \
true "Adobe Flash Player" "flashplayer" \
true "Oracle Java" "java"`
COUNT_MODULES=$(echo "$MODULES" | wc -w)
OFFSET=$((100 / COUNT_MODULES))
if [[ $? == 0 ]] ; then
(
x=0
for mod in $MODULES; do
x=`expr $x + $OFFSET`
setup_module_$mod
echo $x
done
echo "# Setup finalizado."
) | zenity --title "Executando setup" --width=400 "Verificando..." --progress --pulsate
else
echo "Cancelado, saindo!"
exit 1
fi
echo ""
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment