Created
January 17, 2010 01:59
-
-
Save esavard/279150 to your computer and use it in GitHub Desktop.
Ubuntu post installation script that setup a development environment using dialogs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#=================================================================================== | |
# ubuntu_devenv.sh | |
# http://symbiosoft.net/ubuntu_devenv | |
# | |
# (K)UBUNTU - POST INSTALLATION SCRIPT THAT SETUP A DEVELOPER ENVIRONMENT | |
# | |
# TODOLIST | |
#---------------------------------------------------------------------------------- | |
# - Simulation (no changes) | |
# - Support some option passing to apt-get (ex: --quiet, --simulate) | |
# - Check if package is not already installed before trying to download/install it again | |
# - Add unit tests (shUnit2) and logging (Log4sh) | |
# - Evaluate development environment compliance level | |
# | |
# CHANGE LOG | |
#---------------------------------------------------------------------------------- | |
# 2008-07-18: Beta release, tested with Ubuntu & KUbuntu 8.04 | |
# 2008-09-19 v1.0: Initial public release. Added dialogs and command line switches | |
# 2008-09-20 v1.1: Added some more packages (vim-rails, xclip, rubyzip, konsole) | |
# 2008-09-27 v1.1.1: Corrected the netbeans path for desktop icon. Added a | |
# check before trying to create post_install_tmp dir. | |
# 2008-10-01 v1.1.2: Added Capistrano to the Ruby group. | |
# 2008-12-04 v1.1.3: Updated Netbeans to version 6.5. | |
# | |
# CREDITS | |
#---------------------------------------------------------------------------------- | |
# - The find_dialog function and related sub-functions were written by | |
# Ubuntu Customization Kit Team (http://uck.sourceforge.net/). Big thanks! | |
# | |
# LEGAL | |
#---------------------------------------------------------------------------------- | |
#Copyright (C) 2010, Etienne Savard | |
# | |
#This program is free software; you can redistribute it and/or modify it under | |
#the terms of the GNU General Public License as published by the Free Software | |
#Foundation; either version 2 of the License, or (at your option) any later | |
#version. | |
# | |
#This program is distributed in the hope that it will be useful, but WITHOUT ANY | |
#WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
#PARTICULAR PURPOSE. See the GNU General Public License for more details | |
#(http://www.opensource.org/licenses/gpl-2.0.php). | |
#=================================================================================== | |
function failure() | |
{ | |
printf "\n$@\n" | |
exit 2 | |
} | |
#Find which dialog tool is available | |
function find_dialog() | |
{ | |
if [ ! -z "$DISPLAY" ] ; then | |
DIALOG=`which kdialog` | |
if [ ! -z "$DIALOG" ]; then | |
DIALOG_TYPE=kdialog | |
else | |
DIALOG=`which Xdialog` | |
if [ ! -z "$DIALOG" ]; then | |
DIALOG_TYPE=dialog | |
fi | |
fi | |
if [ -z "$DIALOG" ]; then | |
DIALOG=`which zenity` | |
if [ ! -z "$DIALOG" ]; then | |
DIALOG_TYPE=zenity | |
fi | |
fi | |
fi | |
if [ -z "$DIALOG" ]; then | |
DIALOG=`which dialog` | |
if [ ! -z "$DIALOG" ]; then | |
DIALOG_TYPE=dialog | |
fi | |
fi | |
if [ -z "$DIALOG" ]; then | |
failure "You need kdialog, xenity or dialog application to run this script,\nplease install it using 'apt-get install packagename' where packagename is\n'kdebase-bin' for kdialog, 'xdialog' for dialog, 'dialog' for dialog.\nIf you are using text-mode, you need to install dialog." | |
fi | |
} | |
function dialog_menu() | |
{ | |
DESCRIPTION="$1" | |
shift | |
declare -a PARAMS | |
if [ "$DIALOG_TYPE" = "zenity" ]; then | |
declare -i i=0 | |
for v; do | |
PARAMS[$i]="$v" | |
i+=1 | |
done | |
$DIALOG --list --text "$DESCRIPTION" --column "" "${PARAMS[@]}" --width=500 --height=400 | |
else | |
if [ "$DIALOG_TYPE" = "kdialog" ] ; then | |
declare -i i=0 | |
for v; do | |
PARAMS[$i]="$v" | |
i+=1 | |
PARAMS[$i]="$v" #yes, 2 times as kdialog requires key and value | |
i+=1 | |
done | |
$DIALOG --menu "$DESCRIPTION" "${PARAMS[@]}" | |
else | |
declare -i i=0 | |
for v; do | |
PARAMS[$i]="$v" | |
i+=1 | |
PARAMS[$i]="Language" | |
i+=1 | |
done | |
$DIALOG --stdout --menu "$DESCRIPTION" 20 30 10 "${PARAMS[@]}" | |
fi | |
fi | |
} | |
function dialog_multi_choice() | |
{ | |
DESCRIPTION="$1" | |
shift | |
if [ "$DIALOG_TYPE" = "zenity" ]; then | |
for i; do | |
PARAMS="$PARAMS $i $i" | |
done | |
$DIALOG --separator $'\n' --list --checklist --multiple --text "$DESCRIPTION" --column "" --column "" $PARAMS --width=500 --height=400 | |
else | |
if [ "$DIALOG_TYPE" = "kdialog" ] ; then | |
for i; do | |
PARAMS="$PARAMS $i $i 0" | |
done | |
$DIALOG --separate-output --checklist "$DESCRIPTION" $PARAMS | |
else | |
for i; do | |
PARAMS="$PARAMS $i Language 0" | |
done | |
$DIALOG --stdout --separate-output --checklist "$DESCRIPTION" 20 30 10 $PARAMS | |
fi | |
fi | |
RESULT=$? | |
return $RESULT | |
} | |
function dialog_line_input() | |
{ | |
DESCRIPTION="$1" | |
INITIAL_VALUE="$2" | |
if [ "$DIALOG_TYPE" = "zenity" ] ; then | |
$DIALOG --entry --text "$DESCRIPTION" --entry-text "$INITIAL_VALUE" | |
else | |
if [ "$DIALOG_TYPE" = "kdialog" ] ; then | |
$DIALOG --inputbox "$DESCRIPTION" "$INITIAL_VALUE" | |
else | |
$DIALOG --stdout --inputbox "$DESCRIPTION" 20 30 "$INITIAL_VALUE" | |
fi | |
fi | |
RESULT=$? | |
return $RESULT | |
} | |
function dialog_choose_file() | |
{ | |
TITLE="$1" | |
if [ "$DIALOG_TYPE" = "zenity" ] ; then | |
$DIALOG --title "$TITLE" --file-selection "`pwd`/" | |
else | |
if [ "$DIALOG_TYPE" = "kdialog" ] ; then | |
$DIALOG --title "$TITLE" --getopenfilename "`pwd`/" | |
else | |
$DIALOG --stdout --title "$TITLE" --fselect "`pwd`/" 20 80 | |
fi | |
fi | |
} | |
function dialog_msgbox() | |
{ | |
TITLE="$1" | |
TEXT="$2" | |
if [ "$DIALOG_TYPE" = "zenity" ]; then | |
echo -n "$TEXT" | $DIALOG --title "$TITLE" --text-info --width=500 --height=400 | |
else | |
$DIALOG --title "$TITLE" --msgbox "$TEXT" 20 80 | |
fi | |
} | |
function dialog_question() | |
{ | |
TITLE="$1" | |
TEXT="$2" | |
if [ "$DIALOG_TYPE" = "zenity" ]; then | |
$DIALOG --title "$TITLE" --question --text "$TEXT" | |
else | |
$DIALOG --title "$TITLE" --yesno "$TEXT" 20 80 | |
fi | |
} | |
#*********************************************************************************** | |
# CREATE TEMPORARY FOLDER | |
#*********************************************************************************** | |
function init_temp_dir() | |
{ | |
cd ~ | |
if [ -a ./post_install_tmp ]; then | |
echo "Erasing existing post_install_tmp dir..." | |
rm -rf ./post_install_tmp | |
fi | |
mkdir ./post_install_tmp | |
cd post_install_tmp | |
} | |
#*********************************************************************************** | |
# GET SECURITY UPDATES | |
#*********************************************************************************** | |
function update_packages() | |
{ | |
sudo apt-get update | |
sudo apt-get upgrade | |
} | |
#*********************************************************************************** | |
# ESSENTIAL (NON-DEVELOPPER) TOOLS | |
#*********************************************************************************** | |
function install_mandatories() | |
{ | |
$APTGETCMD -y install synaptic #User-friendly package manager | |
$APTGETCMD -y install firefox | |
$APTGETCMD -y install wget | |
$APTGETCMD -y install ssh | |
$APTGETCMD -y install samba smbfs | |
} | |
#*********************************************************************************** | |
# SOURCE CONTROL MANAGERS | |
#*********************************************************************************** | |
function install_scm() | |
{ | |
for i in $SCM_PKG; do | |
case $i in | |
"subversion") | |
$APTGETCMD -y install subversion;; | |
"cvs") | |
$APTGETCMD -y install cvs;; | |
"mercurial") | |
$APTGETCMD -y install mercurial;; | |
"git") | |
$APTGETCMD -y install git git-gui gitk;; | |
esac | |
done | |
} | |
#*********************************************************************************** | |
# JAVA | |
#*********************************************************************************** | |
#NetBeans sources compilation require java5-jdk not java6-jdk | |
#see http://wiki.netbeans.org/WorkingWithNetBeansSources for details | |
function install_java() | |
{ | |
if [ "$JAVA_JDK" = "present" ]; then | |
$APTGETCMD -y install sun-java5-demo sun-java5-jdk sun-java5-jre | |
sudo update-java-alternatives -s java-1.5.0-sun | |
cat >> ~/.bash_profile <<"EOF" | |
#************************************************ | |
# JAVA RELATED ENVIRONMENT VARIABLES | |
#************************************************ | |
JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun | |
export ANT_OPTS="-Xms256m -Xmx256m" #Increase the heap size for Ant JVM | |
export PATH=$PATH:$JAVA_HOME/bin | |
EOF | |
fi | |
for i in $JAVA_PKG; do | |
case $i in | |
"ant") | |
#Ant build tool | |
$APTGETCMD -y install ant ant-doc ant-optional;; | |
"junit") | |
#JUnit unit testing | |
$APTGETCMD -y install junit junit-doc;; | |
"log4j") | |
#Log4J Logging framework | |
$APTGETCMD -y install liblog4j1.2-java liblog4j1.2-java-doc;; | |
esac | |
done | |
for i in $DBMS_PKG; do | |
case $i in | |
"mysql") | |
#JDBC connector for MySQL | |
$APTGETCMD -y install libmysql-java;; | |
"postgresql") | |
#JDBC connector for PostgreSQL | |
$APTGETCMD -y install libpg-java;; | |
esac | |
done | |
} | |
#*********************************************************************************** | |
# NETBEANS IDE | |
#*********************************************************************************** | |
function install_netbeans() | |
{ | |
wget http://download.netbeans.org/netbeans/6.5/final/bundles/netbeans-6.5-ml-linux.sh -O netbeans-6.5-linux.sh | |
sudo chmod +x ./netbeans-6.5-linux.sh | |
sudo ./netbeans-6.5-linux.sh | |
#Add NetBeans icon on KDesktop | |
cat >> ~/Desktop/NetBeans.desktop << "EOF" | |
[Desktop Entry] | |
Encoding=UTF-8 | |
GenericName=NetBeans | |
Name=NetBeans | |
StartupNotify=true | |
Terminal=false | |
Type=Application | |
X-KDE-SubstituteUID=false | |
EOF | |
#Add exe location to NetBeans shortcut | |
NETBEANS_EXE=`sudo find / -name "netbeans" | grep -m1 "/bin/netbeans"` | |
echo "Exec=`echo $NETBEANS_EXE`" >> ~/Desktop/NetBeans.desktop | |
NETBEANS_ICON=`sudo find / -name "netbeans.png" | grep -m1 "netbeans.png"` | |
echo "Icon=`echo $NETBEANS_ICON`" >> ~/Desktop/NetBeans.desktop | |
} | |
#*********************************************************************************** | |
# DATABASES | |
#*********************************************************************************** | |
function install_dbms() | |
{ | |
for i in $DBMS_PKG; do | |
case $i in | |
"mysql") | |
$APTGETCMD -y install mysql-server mysql-client mysql-admin;; | |
"postgresql") | |
$APTGETCMD -y install postgresql postgresql-client pgadmin3;; | |
"sqlite3") | |
$APTGETCMD -y install sqlite3;; | |
esac | |
done | |
#On a developer workstation, db servers should be started only when needed (Optional) | |
#update-rc.d -f mysql remove | |
#update-rc.d -f mysql-ndb remove | |
#update-rc.d -f mysql-ndb-mgm remove | |
#update-rc.d -f postgresql-8.2 remove | |
} | |
#*********************************************************************************** | |
# C/C++ | |
#*********************************************************************************** | |
function install_cppenv() | |
{ | |
$APTGETCMD -y install autoconf automake build-essential libtool linux-source linux-headers-`uname -r` | |
$APTGETCMD -y install distcc ccache distccmon-gnome | |
$APTGETCMD -y install valgrind | |
$APTGETCMD -y install libxmlrpc++-dev | |
$APTGETCMD -y install libwxgtk2.8-0 libwxgtk2.8-dev libwxgtk2.8-dbg wx2.8-doc wx2.8-examples wx2.8-i18n wx-common | |
$APTGETCMD -y install openmpi-bin openmpi-common openmpi-dbg openmpi-dev openmpi-libs0 | |
$APTGETCMD -y install swig | |
$APTGETCMD -y install libboost.*-dev libboost-doc libboost.*1.34.1 | |
#TODO: INTEL THREADING BUILDING BLOCKS | |
#wget http://threadingbuildingblocks.org/uploads/77/84/2.0/tbb20_20070927oss_src.tar.gz | |
#tar -xzf ~/tbb20_20070927oss_src.tar.gz | |
#wget http://threadingbuildingblocks.org/uploads/77/84/2.0/tbb20_20070927oss_lin.tar.gz | |
#tar -xzf ~/tbb20_20070927oss_lin.tar.gz | |
#mv ~/tbb20_20070927oss_lin/* ~/tbb20_20070927oss_src | |
#cd ~/tbb20_20070927oss_src | |
#make arch=`uname -m` | |
#sudo mkdir /opt/intel | |
#sudo mkdir /opt/intel/tbb | |
#sudo mkdir /opt/intel/tbb/2.0 | |
#cp src dir to /opt/intel/tbb/2.0 | |
#register lib vars | |
#test... | |
} | |
#*********************************************************************************** | |
# RUBY | |
#*********************************************************************************** | |
function install_rubyenv() | |
{ | |
for i in $RUBYENV_PKG; do | |
case $i in | |
"ruby") | |
$APTGETCMD -y install ruby-full;; | |
"gem") | |
wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz | |
tar xzvf rubygems-1.2.0.tgz | |
cd rubygems-1.2.0 | |
sudo ruby setup.rb | |
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem | |
sudo gem update --system | |
#To have RubyGems automatically loaded when you run ruby script.rb | |
echo "export RUBYOPT=rubygems" >> ~/.bash_profile | |
;; | |
"rails") | |
sudo gem install rails;; | |
"mongrel") | |
sudo gem install mongrel;; | |
"wxruby") | |
sudo gem install wxruby | |
sudo gem install wx_sugar;; | |
"rubyzip") | |
sudo gem install rubyzip;; | |
"vim-rails") | |
$APTGETCMD -y vim-rails;; | |
"capistrano") | |
sudo gem install capistrano;; | |
esac | |
done | |
#Install Ruby drivers for installed DBMS | |
for i in $DBMS_PKG; do | |
case $i in | |
"mysql") | |
$APTGETCMD install libmysqlclient15-dev | |
sudo gem install mysql;; | |
"postgresql") | |
$APTGETCMD install postgresql-server-dev-8.2 | |
sudo gem install postgres;; | |
"sqlite3") | |
$APTGETCMD install sqlite3 libsqlite3-ruby libsqlite3-dev | |
sudo gem install sqlite3-ruby;; | |
esac | |
done | |
} | |
#*********************************************************************************** | |
# MATH TOOLS | |
#*********************************************************************************** | |
function install_mathtools() | |
{ | |
for i in $MATHTOOLS_PKG; do | |
case $i in | |
"scilab") | |
$APTGETCMD -y install scilab;; | |
"octave") | |
$APTGETCMD -y install octave;; | |
"gnuplot") | |
$APTGETCMD -y install gnuplot;; | |
esac | |
done | |
} | |
#*********************************************************************************** | |
# MISC DEVELOPMENT TOOLS | |
#*********************************************************************************** | |
function install_misctools() | |
{ | |
#Prepare Konsole Desktop icon | |
cat >> ~/post_install_tmp/Konsole.desktop << "EOF" | |
[Desktop Entry] | |
Encoding=UTF-8 | |
Exec='konsole' | |
GenericName=Konsole | |
Name=Konsole | |
StartupNotify=true | |
Terminal=false | |
Type=Application | |
X-KDE-SubstituteUID=true | |
EOF | |
for i in $MISCTOOLS_PKG; do | |
case $i in | |
"umbrello") | |
$APTGETCMD -y install umbrello;; | |
"geany") | |
$APTGETCMD -y install geany;; | |
"scons") | |
$APTGETCMD -y install scons;; | |
"konsole") | |
$APTGETCMD -y install konsole | |
mv ~/post_install_tmp/Konsole.desktop ~/Desktop/;; | |
"xclip") | |
$APTGETCMD -y install xclip;; | |
esac | |
done | |
} | |
#*********************************************************************************** | |
# CLEAN TEMPORARY FOLDER | |
#*********************************************************************************** | |
function cleanup() | |
{ | |
rm -rf ~/post_install_tmp | |
if [ -a ~/.bash_profile ]; then | |
source ~/.bash_profile | |
fi | |
} | |
#*********************************************************************************** | |
# DISPLAY HELP | |
#*********************************************************************************** | |
function show_usage() | |
{ | |
echo "Usage: $APPNAME [options]" | |
echo " $APPNAME [-l LOCAL_DEPOT]" | |
echo "" | |
echo "$APPNAME is a shell script that setup a development environment" | |
echo "for Ubuntu and its derivatives (Kubuntu, Xubuntu, etc.) By default," | |
echo "it uses a GUI dialog, specify the -n option to force console dialogs." | |
echo "" | |
echo "Options:" | |
echo " -h This help text" | |
echo " -q Quiet mode - Less verbose than normal mode" | |
echo " -b Backup downloaded packages" | |
echo " -s No-act. Perform ordering simulation" | |
echo " -n No-GUI. Use only console dialog" | |
echo " -v Show version numbers" | |
echo " -l Install using local packages only. Depot location is provided as an argument" | |
} | |
function set_console_display | |
{ | |
CONSOLE_DIALOG=`which dialog` | |
echo $CONSOLE_DIALOG | |
if [ ! -z $CONSOLE_DIALOG ]; then | |
DIALOG_TYPE=dialog | |
DIALOG=$CONSOLE_DIALOG | |
fi | |
if [ -z $CONSOLE_DIALOG ]; then | |
failure "You need at least dialog application to run this script,\nplease install it using: 'apt-get install dialog" | |
fi | |
} | |
#*********************************************************************************** | |
# SET SOME DEFAULT APT-GET OPTIONS ACCORDING TO COMMANDLINE SWITCHES | |
#*********************************************************************************** | |
function init_aptget_options | |
{ | |
SIM_OPT= | |
QUIET_OPT= | |
if [ $SIM_MODE = y ] | |
then | |
SIM_OPT="-s" | |
fi | |
if [ $QUIET_MODE = y ] | |
then | |
QUIET_OPT="-q" | |
fi | |
APTGETCMD=`echo "sudo apt-get $QUIET_OPT $SIM_OPT"` | |
} | |
function show_version | |
{ | |
echo "$VERSION" | |
} | |
function show_welcome_msg | |
{ | |
dialog_msgbox "$APPNAME" \ | |
"$APPNAME is a shell script that setup a development environment \ | |
for Ubuntu and its derivatives (Kubuntu, Xubuntu, etc.) In the next windows, \ | |
you will have to choose the applications you want installed in your environment." | |
} | |
function get_packages | |
{ | |
#Get SCM list | |
SCM_PKG=`dialog_multi_choice "Please choose the source control manager you want to install." subversion cvs mercurial git` | |
#Get DBMS List | |
DBMS_PKG=`dialog_multi_choice "Please choose the databases you want to install." mysql postgresql sqlite3` | |
#Get Java packages | |
JAVA_PKG=`dialog_multi_choice "Please choose the Java packages you want to install." jdk ant junit log4j jdbc_mysql jdbc_postgresql` | |
#Get Ruby environment | |
RUBYENV_PKG=`dialog_multi_choice "Please choose the ruby and ruby related package you want to install." ruby gem rails mongrel wxruby rubyzip vim-rails capistrano` | |
#Get Math tools choices | |
MATHTOOLS_PKG=`dialog_multi_choice "Please choose the mathtools you want to install." scilab octave gnuplot` | |
if [ "$MATHTOOLS_PKG" = "none" ]; then | |
MATHTOOLS_PKG="" | |
fi | |
#Get Miscallenous tools choices | |
MISCTOOLS_PKG=`dialog_multi_choice "Please choose the miscellanous tools you want to install." umbrello geany scons konsole xclip` | |
#Check if user wants NetBeans and that JDK is selected (pre-requisite) | |
JAVA_JDK="" | |
for pkg in $JAVA_PKG; do | |
if [ "$pkg" = "jdk" ]; then | |
JAVA_JDK="present" | |
fi | |
done | |
if [ "$JAVA_JDK" = "present" ]; then | |
dialog_question "NetBeans IDE" "Do you want to install the NetBeans IDE?" | |
case $? in | |
0) | |
NETBEANS_PKG="netbeans";; | |
1) | |
NETBEANS_PKG="";; | |
esac | |
fi | |
#Check if user wants C++ build suite | |
dialog_question "C++ Build Tools" "Do you want to install C++ Build Tools (several packages)?" | |
case $? in | |
0) | |
CPPENV_PKG="cpp";; | |
1) | |
CPPENV_PKG="";; | |
esac | |
} | |
#*********************************************************************************** | |
# MAIN PROGRAM | |
#*********************************************************************************** | |
#*** Initialization *** | |
#Set Dialog tool | |
DIALOG= | |
DIALOG_TYPE= | |
find_dialog | |
#Set application name & version | |
APPNAME=`basename $0` | |
VERSION="Version: 0.9_2008-09-20" | |
APTGETCMD= | |
#Set Default option values | |
BACKUP=n | |
LOCAL_SOURCE=n | |
PACKAGE_PATH= | |
QUIET_MODE=n | |
GUI_MODE=y | |
SIM_MODE=n | |
#Parse command line options (if any) | |
while getopts bhl:nqsv OPTIONS | |
do | |
case "$OPTIONS" in | |
b) echo "Option -$OPTIONS is not implemented yet." | |
BACKUP=y;; | |
h) show_usage | |
exit 0;; | |
l) echo "Option -$OPTIONS is not implemented yet.";; | |
n) GUI_MODE=n | |
set_console_display;; | |
q) QUIET_MODE=y;; | |
s) SIM_MODE=y;; | |
v) show_version;; | |
*) echo "Unknown option. Please use -h option to display command usage." | |
exit 1;; | |
esac | |
done | |
init_temp_dir | |
init_aptget_options | |
#Show welcome screen | |
show_welcome_msg | |
#Collect user choice of packages to install | |
SCM_PKG= | |
DBMS_PKG= | |
JAVA_PKG= | |
NETBEANS_PKG= | |
CPPENV_PKG= | |
RUBYENV_PKG= | |
MATHTOOLS_PKG= | |
MISCTOOLS_PKG= | |
JAVA_JDK= | |
get_packages | |
#debug | |
#for scm in $SCM_PKG; do echo $scm; done | |
#for dbms in $DBMS_PKG; do echo $dbms; done | |
#for java in $JAVA_PKG; do echo $java; done | |
#for netbeans in $NETBEANS_PKG; do echo $netbeans; done | |
#for cppenv in $CPPENV_PKG; do echo $cppenv; done | |
#for rubyenv in $RUBYENV_PKG; do echo $rubyenv; done | |
#for mathtools in $MATHTOOLS_PKG; do echo $mathtools; done | |
#for misctools in $MISCTOOLS_PKG; do echo $misctools; done | |
#Ask for a confirmation before altering user's system | |
dialog_question "Confirmation" "Are you sure you want to proceed with the installation?" | |
case $? in | |
0) | |
echo "Proceed with the installation.";; | |
1) | |
echo "Installation aborted." | |
exit 0;; | |
esac | |
#Proceed with mandatory installation procedures | |
update_packages | |
install_mandatories | |
#Process user choices | |
install_scm | |
install_dbms | |
install_java | |
if [ "$NETBEANS_PKG" = "netbeans" ]; then | |
install_netbeans; | |
fi | |
if [ "$CPPENV_PKG" = "cpp" ]; then | |
install_cppenv; | |
fi | |
install_rubyenv | |
install_mathtools | |
install_misctools | |
cleanup | |
echo "Installation completed." | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment