I decided yesterday that I was going to create a little shiny app for my wife. I won’t share the details here because it’s mushy, but suffice it to say the idea is that she can go to a website and get some nice notes I left for her.
Since I wanted to serve this site for cheap, I was going to run a
shiny server on an EC2 instance that fit into AWS’s free tier. The finished product will run just fine on this tiny server, but I was finding that package installation was taking forever.
After launching the AWS instance and installing R, I ran
install.packages("dplyr") and walked away, knowing that it might take a minute on such a puny system. 25 minutes and 47 seconds later, it was still compiling the
I knew installing packages from binary (i.e. pre-compiled) would be way faster. That was validated when the
dplyr installation that didn’t finish in 25 minutes and 47 seconds installed from binary in about 10 seconds.
There are a bunch of warnings for using binary packages, particularly that they are community-maintained, are likely to not be up-to date with the latest source updates, and are not available for all package/OS combos. In particular, if you’re looking for an enterprise solution, RStudio’s Package Manager is perfect for this sort of thing (did I mention I’m starting work there a week from Monday?).
BUT - if you’re trying to spend zero money to do something cute for your wife, this will work.
Add Repository for Binaries
Since we’re installing binaries here, you’ll be installing them using your system’s installer (e.g.
apt-get in Ubuntu ), not
install.packages() in R. Therefore you’ve got to tell Ubuntu that it can install from the binaries online.
Once you find the right combo of R version (looks like 3.4.x and 3.5.x are supported right now) and OS on the r-project website, you add it to your system’s list of sources (using command line, not in an R terminal) and update the repos:
echo "deb [allow-insecure=yes] https://cloud.r-project.org/bin/linux/ubuntu bionic/" | sudo tee -a /etc/apt/sources.list sudo apt-get update
Note the little
[allow-insecure=yes] decorator. This allows for packages to be installed even if they’re not verified. I had some issues with this piece, and since I trust the
r-project folks, I thought it was ok to allow here.
Off to the Races
That’s really it in terms of setup. Now you can search for available R package binaries, for example
apt search dplyr
And install them in seconds, like
sudo apt-get install r-cran-dplyr
Done! Packages installed in record time. Mushiness managed.