| #!/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 |