alnoda-workspaces/workspaces/r-workspace/rocker_scripts/install_julia.sh
2022-07-19 16:49:46 +00:00

59 lines
1.6 KiB
Bash

#!/bin/bash
set -e
## build ARGs
NCPUS=${NCPUS:--1}
JULIA_VERSION=${1:-${JULIA_VERSION:-latest}}
# a function to install apt packages only if they are not installed
function apt_install() {
if ! dpkg -s "$@" >/dev/null 2>&1; then
if [ "$(find /var/lib/apt/lists/* | wc -l)" = "0" ]; then
apt-get update
fi
apt-get install -y --no-install-recommends "$@"
fi
}
ARCH_LONG=$(uname -p)
ARCH_SHORT=$ARCH_LONG
if [ "$ARCH_LONG" = "x86_64" ]; then
ARCH_SHORT="x64"
fi
apt_install wget
install2.r --error --skipmissing --skipinstalled -n "$NCPUS" \
yaml \
JuliaCall \
JuliaConnectoR
# Get the latest Julia version by using R and the R yaml package.
if [ "$JULIA_VERSION" = "latest" ]; then
# shellcheck disable=SC2016
JULIA_VERSION=$(Rscript -e '
js <- yaml::read_yaml("https://julialang-s3.julialang.org/bin/versions.json")
versions <- names(js)
is_stable <- unlist(Map(function(x) x$stable, js))
latest_version <- sort(versions[is_stable], decreasing = TRUE)[1]
cat(latest_version)
')
fi
JULIA_MINOR_VERSION=${JULIA_VERSION%.*}
# Download Julia and create a symbolic link.
wget "https://julialang-s3.julialang.org/bin/linux/${ARCH_SHORT}/${JULIA_MINOR_VERSION}/julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz"
mkdir /opt/julia
tar zxvf "julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz" -C /opt/julia --strip-components 1
rm -f "julia-${JULIA_VERSION}-linux-${ARCH_LONG}.tar.gz"
ln -s /opt/julia/bin/julia /usr/local/bin/julia
julia --version
# Clean up
rm -rf /var/lib/apt/lists/*
rm -rf /tmp/downloaded_packages