Skip to content

Instantly share code, notes, and snippets.

@danielalvarenga
Last active February 19, 2016 11:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielalvarenga/c23449bd88779532e13d to your computer and use it in GitHub Desktop.
Save danielalvarenga/c23449bd88779532e13d to your computer and use it in GitHub Desktop.
Script Instalação Ubuntu 14.10 (customizable for vagrant provision)
#!/bin/bash
# Autor: Daniel Alvarenga Lima <danielalvarengalima@gmail.com>
# Versão do Ubuntu suportada: 14.10 64Bit
# Versão deste Script: 2015-05-20
# EXECUTE
# sudo chmod +x script-install-all-ubuntu.sh
# ./script-install-all-ubuntu.sh
#INSTRUCTIONS
# Change "true" por "false" to ignore program
# Required only in the first time to execute this script
UPDATE_REPOSITORIES=false
# build-essential, git, curl, libs, zip, rar, nodejs
ESSENCIALS=false
# Add color for user, host, folder and git branch
COLORIZE_TERMINAL=false
# Configure GIT
CONFIGURE_GIT=false
GIT_NAME="Daniel Alvarenga"
GIT_MAIL="danielalvarengalima@gmail.com"
GIT_USER="danielalvarenga"
# java
JAVA_ORACLE=false
JAVA_VERSION=8
# if true force not install gimp, vlc, wine, torrent, spotify, filezilla, avanced_apps, google chrome, sublime text, team viewer, eclipse and resolve touchpad
VAGRANT_PROVISION=false
VAGRANT_USER=vagrant
VAGRANT_SYNCED_FOLDER=/vagrant
# image editor
GIMP=false
# player and codecs
VLC=false
# webcam
CHEESE=false
# storage
DROPBOX=false
# manage windows programs
WINE=false
# qBitTorrent
TORRENT=false
# online musics
SPOTIFY=false
# client FTP
FILEZILLA=false
# vagrant rpogram
VAGRANT=false
# synaptic, gparted, terminator
ADVANCED_APPS=false
# google chrome
GOOGLE_CHROME=false
# sublime text
SUBLIME_TEXT=false
# remote control
TEAM_VIEWER=false
# database sqlite
SQLITE=false
# database postgresql, pg admin
POSTGRESQL=false
# database manager postgresql
PGADMIN=false
# database mysql
MYSQL=false
MYSQL_USER=root
MYSQL_PASSWORD=root
# database manager mysql
WORKBENCH=false
# ruby
RUBY_WITH_RVM=false
RUBY_WITH_RBENV=false # only install if RUBY_WITH_RVM is false
RUBY_WITHOUT_VERSION_MANAGER=false # only install if RUBY_WITH_RVM and RUBY_WITH_RBENV is false
RUBY_VERSION=2.2.3
#rails
RAILS=false
RAILS_VERSION=4.2.4
# memcached, redis, rabbit, imagemagick
DEV_EXTRAS=false
# resolve specific touchpad problem in DELL Inspiron 13 7000
RESOLVE_TOUCHPAD=false
# paths
LOG_SCRIPT=./log_script.txt
GITCONFIG=/etc/gitconfig
SSH_FOLDER=~/.ssh
DOWNLOADS=~/Downloads
BASHRC=~/.bashrc
MOUSE_CONFIG=/usr/share/X11/xorg.conf.d/52-mymods.conf
RBENV_DIR=~/.rbenv
RUBY_BUILD_DIR="$RBENV_DIR/plugins/ruby-build"
REHASH_DIR="$RBENV_DIR/plugins/rbenv-gem-rehash"
if $VAGRANT_PROVISION
then
GIMP=false
VLC=false
CHEESE=false
DROPBOX=false
WINE=false
TORRENT=false
SPOTIFY=false
FILEZILLA=false
VAGRANT=false
ADVANCED_APPS=false
GOOGLE_CHROME=false
SUBLIME_TEXT=false
TEAM_VIEWER=false
RESOLVE_TOUCHPAD=false
PGADMIN=false
WORKBENCH=false
#paths
LOG_SCRIPT=$VAGRANT_SYNCED_FOLDER/log_script.txt
DOWNLOADS=$VAGRANT_SYNCED_FOLDER
BASHRC=/home/$VAGRANT_USER/.bashrc
SSH_FOLDER=/home/$VAGRANT_USER/.ssh
RBENV_DIR=/home/$VAGRANT_USER/.rbenv
RUBY_BUILD_DIR=$RBENV_DIR/plugins/ruby-build
REHASH_DIR=$RBENV_DIR/plugins/rbenv-gem-rehash
fi
function install {
echo installing $1
shift
sudo apt-get -y -f install "$@" >$LOG_SCRIPT 2>$LOG_SCRIPT
}
if $UPDATE_REPOSITORIES
then
echo "*** Add repositories"
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo add-apt-repository -y ppa:webupd8team/java
echo "*** Add the Spotify repository"
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys D2C19886
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
echo "*** Update and upgrade"
sudo apt-get update
sudo apt-get -y upgrade
fi
if $ESSENCIALS
then
install "Build Essencial" build-essential
install Git git-core
install CURL curl
install DevLibs zlib1g-dev libssl-dev libreadline-dev libyaml-dev libcurl4-openssl-dev libffi-dev python-software-properties
install "Nokogiri gem dependencies" libxml2 libxml2-dev libxslt1-dev
install 7zip p7zip-full
install RAR p7zip-rar
install NodeJS nodejs
install Vim vim
fi
if $JAVA_ORACLE
then
sudo apt-get -y remove --purge openjdk-*
echo oracle-java$JAVA_VERSION-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
install "Java $JAVA_VERSION" oracle-java$JAVA_VERSION-installer
install SetDefaultJava$JAVA_VERSION oracle-java$JAVA_VERSION-set-default
install Maven maven
fi
if $GIMP
then
install Gimp gimp
fi
if $VLC
then
install VLC vlc
fi
if $CHEESE
then
install Cheese cheese
fi
if $DROPBOX
then
install Dropbox nautilus-dropbox
fi
if $WINE
then
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
install Wine wine
fi
if $TORRENT
then
install qBitTorrent qbittorrent
fi
if $SPOTIFY
then
install Spotify spotify-client
fi
if $FILEZILLA
then
install FileZilla filezilla
fi
if $VAGRANT
then
install VirtualBox virtualbox
echo "*** installing Vagrant"
VAGRANT_FILE=$DOWNLOADS/vagrant_1.7.4_x86_64.deb
if [ -f $VAGRANT_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget https://releases.hashicorp.com/vagrant/1.7.4/vagrant_1.7.4_x86_64.deb
fi
sudo dpkg -i $VAGRANT_FILE
install "Vagrant extras" nfs-kernel-server nfs-common portmap
echo "*** installing Vagrant plugins"
vagrant plugin install vagrant-omnibus >$LOG_SCRIPT 2>$LOG_SCRIPT
vagrant plugin install vagrant-berkshelf
echo "*** installing CHEF-DK 0.10.0 64bits"
CHEF_FILE=$DOWNLOADS/chefdk_0.10.0-1_amd64.deb
if [ -f $CHEF_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget https://opscode-omnibus-packages.s3.amazonaws.com/debian/6/x86_64/chefdk_0.10.0-1_amd64.deb
fi
sudo dpkg -i $CHEF_FILE
fi
if $ADVANCED_APPS
then
install Synaptic synaptic # gerenciador de pacotes do linux
install GParted gparted # gerenciador de dicos avançado
install Terminator terminator # terminal
fi
if $GOOGLE_CHROME
then
echo "*** installing Google Chrome 64bits"
install "Google chrome dependencies" libindicator7 libappindicator1 gconf2-common gconf-service-backend libasound2-data libasound2 libgconf-2-4 libnspr4 libnss3-nssdb libnss3 libxft2 libpangox-1.0-0 libpangoxft-1.0-0 libpango1.0-0 libxss1 fonts-liberation xdg-utils gconf-service
CHROME_FILE=$DOWNLOADS/google-chrome-stable_current_amd64.deb
if [ -f $CHROME_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
fi
sudo dpkg -i $CHROME_FILE
fi
if $SUBLIME_TEXT
then
echo "*** installing Sublime Text 3 64bits"
SUBLIME_FILE=$DOWNLOADS/sublime-text_build-3103_amd64.deb
if [ -f $SUBLIME_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget https://download.sublimetext.com/sublime-text_build-3103_amd64.deb
fi
sudo dpkg -i $SUBLIME_FILE
fi
if $TEAM_VIEWER
then
echo "*** installing Team Viewer"
install "Team Viewer dpendencies" libjpeg62 libxtst6 libjpeg62:i386 libxtst6:i386
TEAM_VIEWER_FILE=$DOWNLOADS/teamviewer_i386.deb
if [ -f $TEAM_VIEWER_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget http://download.teamviewer.com/download/teamviewer_i386.deb
fi
sudo dpkg -i $TEAM_VIEWER_FILE
fi
if $SQLITE
then
install SQLite sqlite3 libsqlite3-dev
fi
if $POSTGRESQL
then
install PostgreSQL postgresql postgresql-contrib libpq-dev
fi
if $PGADMIN
then
install "PG Admin" pgadmin3
fi
if $MYSQL
then
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_USER"
sudo debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD"
install MySQL mysql-server mysql-client libmysqlclient-dev
mysql -uroot -proot <<SQL
CREATE USER 'rails'@'localhost';
CREATE DATABASE activerecord_unittest DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE activerecord_unittest2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON activerecord_unittest.* to 'rails'@'localhost';
GRANT ALL PRIVILEGES ON activerecord_unittest2.* to 'rails'@'localhost';
GRANT ALL PRIVILEGES ON inexistent_activerecord_unittest.* to 'rails'@'localhost';
SQL
fi
if $WORKBENCH
then
echo "*** installing Workbench"
install "Workbench dependeencies" libctemplate2 libgeos-c1 libhdf4-0-alt libhdf5-7 libmysqlclient18 libnetcdfc7 libpcrecpp0 libpq5 libxerces-c3
WORKBENCH_FILE=$DOWNLOADS/mysql-workbench-community-6.3.5-1ubu1404-amd64.deb
if [ -f $WORKBENCH_FILE ]
then
echo ""
else
cd $DOWNLOADS
wget http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-workbench-community-6.3.5-1ubu1404-amd64.deb
fi
sudo dpkg -i $WORKBENCH_FILE
fi
if $RUBY_WITH_RVM
then
echo "installing RVM with RUBY $RUBY_VERSION"
if ! type rvm >$LOG_SCRIPT 2>$LOG_SCRIPT; then
cd
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
install "RVM dependencies" gawk libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison
curl -sSL https://get.rvm.io | bash -s stable
source ~/.rvm/scripts/rvm
fi
rvm requirements
rvm install ruby-$RUBY_VERSION
rvm use $RUBY_VERSION --default
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT
elif $RUBY_WITH_RBENV
then
echo "installing Rbenv with Ruby $RUBY_VERSION"
if [ -d $RBENV_DIR ]
then
cd $RBENV_DIR
git pull
else
git clone https://github.com/sstephenson/rbenv.git $RBENV_DIR
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi
if [ -d $RUBY_BUILD_DIR ]
then
cd $RUBY_BUILD_DIR
git pull
else
git clone https://github.com/sstephenson/ruby-build.git $RUBY_BUILD_DIR
cd $RUBY_BUILD_DIR
./install.sh
fi
if [ -d $REHASH_DIR ]
then
cd $REHASH_DIR
git pull
else
git clone https://github.com/sstephenson/rbenv-gem-rehash.git $REHASH_DIR
fi
rbenv install $RUBY_VERSION -s
rbenv global $RUBY_VERSION
rbenv rehash
echo installing Bundler
echo "gem: --no-ri --no-rdoc" > ~/.gemrc
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT
rbenv rehash
elif $RUBY_WITHOUT_VERSION_MANAGER
then
install Ruby ruby2.2 ruby2.2-dev
update-alternatives --set ruby /usr/bin/ruby2.2 >$LOG_SCRIPT 2>$LOG_SCRIPT
update-alternatives --set gem /usr/bin/gem2.2 >$LOG_SCRIPT 2>$LOG_SCRIPT
echo "installing Bundler"
gem install bundler -N >$LOG_SCRIPT 2>$LOG_SCRIPT
fi
if $RAILS
then
echo "installing Rails $RAILS_VERSION"
gem install rails -v $RAILS_VERSION -N >$LOG_SCRIPT 2>$LOG_SCRIPT
fi
if $DEV_EXTRAS
then
install memcached memcached
install Redis redis-server
install RabbitMQ rabbitmq-server
install ImageMagick imagemagick
cd
fi
if $RESOLVE_TOUCHPAD
then
sudo touch $MOUSE_CONFIG
sudo chmod 777 $MOUSE_CONFIG
echo -e Section \"InputClass\" > $MOUSE_CONFIG
echo -e Identifier \"Force Clickpad Config\" >> $MOUSE_CONFIG
echo -e MatchDriver \"synaptics\" >> $MOUSE_CONFIG
echo -e Option \"ClickPad\" \"true\" >> $MOUSE_CONFIG
echo -e Option \"EmulateMidButtonTime\" \"0\" >> $MOUSE_CONFIG
echo -e Option \"SoftButtonAreas\" \"50% 0 82% 0 0 0 0 0\" >> $MOUSE_CONFIG
echo -e Option \"SecondarySoftButtonAreas\" \"58% 0 0 15% 42% 58% 0 15%\" >> $MOUSE_CONFIG
echo -e EndSection >> $MOUSE_CONFIG
fi
if $COLORIZE_TERMINAL
then
echo -e "function parse_git_branch () {" >> $BASHRC
echo -e " git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'" >> $BASHRC
echo -e "}" >> $BASHRC
echo -e 'RED="\[\033[01;31m\]"' >> $BASHRC
echo -e 'YELLOW="\[\033[01;33m\]"' >> $BASHRC
echo -e 'GREEN="\[\033[01;32m\]"' >> $BASHRC
echo -e 'BLUE="\[\033[01;34m\]"' >> $BASHRC
echo -e 'NO_COLOR="\[\033[00m\]"' >> $BASHRC
echo -e 'PS1="$GREEN\u@\h$NO_COLOR:$BLUE\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "' >> $BASHRC
source $BASHRC
fi
echo "*** remove packages"
sudo apt-get clean
if $CONFIGURE_GIT
then
sudo rm $GITCONFIG
sudo touch $GITCONFIG
sudo chmod 777 $GITCONFIG
echo -e "[user]" >> $GITCONFIG
echo -e " name = $GIT_NAME" >> $GITCONFIG
echo -e " email = $GIT_MAIL" >> $GITCONFIG
echo -e "[core]" >> $GITCONFIG
echo -e " editor = vim -f" >> $GITCONFIG
echo -e "[alias]" >> $GITCONFIG
echo -e " df = diff" >> $GITCONFIG
echo -e " st = status" >> $GITCONFIG
echo -e " ci = commit" >> $GITCONFIG
echo -e " co = checkout" >> $GITCONFIG
echo -e " br = branch" >> $GITCONFIG
echo -e " lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative" >> $GITCONFIG
echo -e " ctags = !.git/hooks/ctags" >> $GITCONFIG
echo -e "[color]" >> $GITCONFIG
echo -e " branch = auto" >> $GITCONFIG
echo -e " diff = auto" >> $GITCONFIG
echo -e " grep = auto" >> $GITCONFIG
echo -e " interactive = auto" >> $GITCONFIG
echo -e " status = auto" >> $GITCONFIG
echo -e " ui = 1" >> $GITCONFIG
echo -e "[branch]" >> $GITCONFIG
echo -e " autosetuprebase = always" >> $GITCONFIG
echo -e "[github]" >> $GITCONFIG
echo -e " user = $GIT_USER" >> $GITCONFIG
ssh-keygen -t rsa -b 4096 -C "$GIT_MAIL" -N "" -f $SSH_FOLDER/id_rsa_git
echo ""
echo ""
echo "**********************"
echo "CONFIGURE GIT USER"
echo ""
echo "Adicione a public ssh key em 'https://github.com/settings/ssh':"
echo ""
cat $SSH_FOLDER/id_rsa_git.pub
echo ""
echo "**********************"
fi
if $POSTGRESQL
then
echo ""
echo ""
echo "**********************"
echo "CONFIGURE O POSTGRES"
echo ""
echo "Para definir usuário e senha no PostgreSQL, execute manualmente os seguintes comandos:"
echo "sudo -u postgres createuser NOME_DO_USUARIO -s"
echo "sudo -u postgres psql"
echo "\password NOME_DO_USUARIO"
echo "**********************"
fi
if $SUBLIME_TEXT
then
echo ""
echo ""
echo "**********************"
echo "MELHORE O SUBLIME TEXT"
echo ""
echo "Abra o Sublime Text 3 e exiba o terminal em View > Show Console"
echo "Copie e cole o código abaixo no terminal do Sublime Text 3 e pressione enter:"
echo ""
echo "import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)"
echo ""
echo "Reinicie o Sublime Text 3"
echo "**********************"
fi
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment