11.5 Installing MATLAB®

Contributed by Dan Pelleg.

This document describes the process of installing the Linux® version of MATLAB® version 6.5 onto a FreeBSD system. It works quite well, with the exception of the Java Virtual Machine which is described further in .

The Linux version of MATLAB can be purchased and licensed from MathWorks. Consider letting the company know that you would like a native FreeBSD version of this software.

11.5.1 Installing MATLAB

To install MATLAB:

  1. Become root, as recommended by the installation script. Insert the installation CD and mount it. To start the installation script type:

    # /compat/linux/bin/sh /cdrom/install
    

    Tip: The installer is graphical. If it is not able to open a display, type setenv HOME ~USER, where USER is the user who ran su(1).

  2. When asked for the MATLAB root directory, type: /compat/linux/usr/local/matlab.

    Tip: For easier typing on the rest of the installation process, type this at the shell prompt: set MATLAB=/compat/linux/usr/local/matlab.

  3. Edit the license file as instructed when obtaining the MATLAB license.

    Tip: This file can be prepared in advance using an editor, and copied to $MATLAB/license.dat before the installer asks to edit it.

  4. Complete the installation process.

At this point the MATLAB installation is complete. The following steps apply “glue” to connect it to the FreeBSD system.

11.5.2 License Manager Startup

  1. Create symlinks for the license manager scripts:

    # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
    # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
    
  2. Create a startup file named /usr/local/etc/rc.d/flexlm. The example below is a modified version of the distributed $MATLAB/etc/rc.lm.glnx86. The changes are file locations and startup of the license manager under Linux emulation.

    #!/bin/sh
    case "$1" in
      start)
            if [ -f /usr/local/etc/lmboot_TMW ]; then
                  /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
            fi
            ;;
      stop)
    	if [ -f /usr/local/etc/lmdown_TMW ]; then
                /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
    	fi
            ;;
      *)
    	echo "Usage: $0 {start|stop}"
    	exit 1
    	;;
    esac
    
    exit 0
    

    Important: The file must be made executable:

    # chmod +x /usr/local/etc/rc.d/flexlm
    

    Replace username with the name of a valid user on the system which is not root.

  3. Start the license manager with the command:

    # service flexlm start
    

11.5.3 Linking the Java™ Runtime Environment

Change the Java Runtime Environment (JRE) link to one working under FreeBSD:

# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre

11.5.4 Creating a MATLAB Startup Script

  1. Place the following startup script in /usr/local/bin/matlab:

    #!/bin/sh
    /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
    
  2. Then, type the command chmod +x /usr/local/bin/matlab.

Tip: Depending on the version of emulators/linux_base, running this script may result in errors. To avoid errors, edit /compat/linux/usr/local/matlab/bin/matlab, and change the line that says:

if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

to this line:

if test -L $newbase; then

11.5.5 Creating a MATLAB Shutdown Script

The following is needed to solve a problem with MATLAB not exiting correctly.

  1. Create $MATLAB/toolbox/local/finish.m containing the single line:

    ! $MATLAB/bin/finish.sh
    

    Note: The $MATLAB is literal.

    Tip: The same directory contains finishsav.m and finishdlg.m, which allow the workspace to be saved before quitting. If either file is used, insert the line above immediately after the save command.

  2. Create $MATLAB/bin/finish.sh which contains the following:

    #!/compat/linux/bin/sh
    (sleep 5; killall -1 matlab_helper) &
    exit 0
    
  3. Make the file executable:

    # chmod +x $MATLAB/bin/finish.sh
    

11.5.6 Using MATLAB

At this point, matlab is ready for use.