91 lines
2.4 KiB
Bash
Executable File
91 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Setup RAPPOR analysis on Ubuntu Trusty (Google Cloud or otherwise).
|
|
#
|
|
# For the apps/api server, you need 'install-minimal'. For the regtest, and
|
|
# Shiny apps, we need a few more R packages (ggplot2, data.table, etc.). They
|
|
# cause versioning problems, so we keep them separate.
|
|
#
|
|
# Usage:
|
|
# ./setup.sh [function name]
|
|
# If run without specifing any function it will run: install-most
|
|
# which should cover all the packages needed to run the demo.
|
|
|
|
set -o nounset
|
|
set -o pipefail
|
|
set -o errexit
|
|
|
|
native-packages() {
|
|
sudo apt-get update
|
|
# - build-essential for gcc compilers, invoked while installing R packages.
|
|
# - gfortran Fortran compiler needed for glmnet.
|
|
# - libblas-dev needed for limSolve.
|
|
# - python-dev is for building the fastrand extension
|
|
#
|
|
# NOTE: we get R 3.0.2 on Trusty.
|
|
sudo apt-get install build-essential gfortran libblas-dev r-base python-dev graphviz
|
|
}
|
|
|
|
r-packages() {
|
|
# Install as root so you can write to /usr/local/lib/R.
|
|
|
|
# glmnet, limSolve: solvers for decode.R
|
|
# RJSONIO, optparse: for decode_dist.R
|
|
# RUnit: for unit tests
|
|
# abind: for decode_test only
|
|
sudo R -e \
|
|
'install.packages(c("glmnet", "optparse", "limSolve", "RUnit", "abind", "RJSONIO"), repos="http://cran.rstudio.com/")'
|
|
}
|
|
|
|
# R 3.0.2 on Trusty is out of date with CRAN, so we need this workaround.
|
|
install-plyr-with-friends() {
|
|
mkdir -p _tmp
|
|
wget --directory _tmp \
|
|
http://cran.r-project.org/src/contrib/Archive/Rcpp/Rcpp_0.11.4.tar.gz
|
|
wget --directory _tmp \
|
|
http://cran.r-project.org/src/contrib/Archive/plyr/plyr_1.8.1.tar.gz
|
|
sudo R CMD INSTALL _tmp/Rcpp_0.11.4.tar.gz
|
|
sudo R CMD INSTALL _tmp/plyr_1.8.1.tar.gz
|
|
sudo R -e \
|
|
'install.packages(c("reshape2", "ggplot2", "data.table"), repos="http://cran.rstudio.com/")'
|
|
}
|
|
|
|
# Keep Shiny separate, since it seems to install a lot of dependencies.
|
|
shiny() {
|
|
sudo R -e \
|
|
'install.packages(c("shiny"), repos="http://cran.rstudio.com/")'
|
|
}
|
|
|
|
#
|
|
# Batch
|
|
#
|
|
|
|
install-minimal() {
|
|
native-packages
|
|
r-packages
|
|
}
|
|
|
|
# NOTE: hasn't yet been tested on a clean machine.
|
|
install-most() {
|
|
install-minimal
|
|
install-plyr-with-friends
|
|
}
|
|
|
|
#
|
|
# Shiny Apps / API Server
|
|
#
|
|
|
|
# After running one of the run_app.sh scripts, see if the app returns a page.
|
|
shiny-smoke-test() {
|
|
curl http://localhost:6789/
|
|
}
|
|
|
|
# Then set up a "firewall rule" in console.developers.google.com to open up
|
|
# "tcp:6789". Test it from the outside.
|
|
|
|
if test $# -eq 0 ; then
|
|
install-most
|
|
else
|
|
"$@"
|
|
fi
|