Freelance nerd, writer, environment builder. Did Plasma Physics.

Octave Environment

You can use this environment by remixing the Octave template.

Setup

Build the Octave Environment

List the distro's octave dependencies.

apt-cache depends octave | grep Depends | sed "s/.*ends:\ //" | tr '\n' ' '

Install build tools and dependencies (removed liboctave, octave-common, and <libglu1> from above).

wget -q -O nextjournal-conda-python_3.6.8_all.deb \
  https://nextjournal.com/data/Qmcy5rjq2jui3VTvyfktPMrLASs4vWJSGAKpz3PTzXQhho
apt-get -qq update
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends \
  build-essential gfortran cmake automake libtool libltdl-dev pkg-config \
  libhdf5-100 libgraphicsmagick++-q16-12 libumfpack5 libqrupdate1 \
  libarpack2 libblas3 liblapack3 \
  gnuplot gnuplot-nox ghostscript libcairo2 libpango1.0-0 \
  libamd2 libbz2-1.0 libc6 libccolamd2 libcholmod3 libcolamd2 libcxsparse3 libfftw3-double3 libfftw3-single3 libfltk-gl1.3 libfltk1.3 libgcc1 libgl1 libglpk40 libglu1-mesa libosmesa6 libportaudio2 libqhull7 libqscintilla2-qt5-13 libqt5core5a libqt5gui5 libqt5network5 libqt5opengl5 libqt5printsupport5 libqt5widgets5 libsndfile1 libstdc++6 libsuitesparseconfig5 libx11-6 zlib1g texinfo \
  ./nextjournal-conda-python_3.6.8_all.deb
apt-get clean
rm -r /var/lib/apt/lists/* # Clear package list so it isn't stale

Download and extract compiled octave from build notebook.

cd /opt
wget -q -O octave-bin-${OCTAVE_VERSION}.tar.xz \
  https://nextjournal.com/data/QmdPquM8BrARr38vd8M9AZEFo4vaeXyZouMXNq1XRRat9E
tar -Jxf octave-bin-${OCTAVE_VERSION}.tar.xz
ln -sf octave-${OCTAVE_VERSION} octave
echo "/opt/octave/lib/octave/${OCTAVE_VERSION}" > /etc/ld.so.conf.d/octave.conf
ldconfig
rm octave-bin-${OCTAVE_VERSION}.tar.xz

Install Jupyter and the Octave kernel.

pip install --upgrade jupyter jupyter_client octave-kernel

Check.

du -hsx /
octave --no-gui --version 2>/dev/null | grep version
jupyter kernelspec list

Test

5+7
ans
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)