个人工具

UbuntuHelp:Mathematica

来自Ubuntu中文

Oneleaf讨论 | 贡献2007年11月21日 (三) 18:49的版本

跳转至: 导航, 搜索


Mathematica is not free software, see ['UbuntuScience'] for alternatives.

Installation

Mathematica has an installer named Math'Installer. It is in

/cdrom/Unix/Installers/Linux

Math'Installer will not run from the CD since, by default, ubuntu mounts CDs with the noexec option. To solve this simply run the installer with the sh command

sudo sh MathInstaller

Alternatively you can copy the Linux installer to a temporary directory and run Math'Installer:

mkdir /tmp/Mathematica/Installers
cd /cdrom/Unix/Installers
cp -r Linux/ /tmp/Mathematica/Installers
cd /tmp/Mathematica/Installers/Linux/
./MathInstaller

After that, the script asks a series of questions, including the licensing information. It ends installing Mathematica in /usr/local, and it creates a symbolic link /usr/bin/mathematica.

You may need to restart gnome to get the fonts working properly.

Autoloading Packages

Mathematica has a certain core set of functionality that is automatically available. There are also a number of "packages" that can be manually loaded to get additional functions. Examples include the Graphics and LinearAlgebra packages. If, like me, you think that these should always be available, it is easy to make it so. Simply run the commands below:

cd /usr/local/Wolfram/5.1/AddOns/StandardPackages
for i in `find -name init.m | sed s/..//` ; do mkdir -p ~/.Mathematica/Autoload/`dirname $i` ; cp $i ~/.Mathematica/Autoload/`dirname $i` ; done

This will make it so you no longer have to run <<`PackageName` to load a package; it will load as soon as you use a function from the package. The above command enables autoloading for you. Change ~/.Mathematica/AutoLoad to /usr/local/Wolfram/5.1/AddOns/AutoLoad to enable autoloading for all users. Remember to change the version number if you don't have version 5.1.

Known Issues and Workarounds

Environment Variables

A number of these fixes involve setting environment variables. There are several ways to set these and have them be seen by Mathematica (or other programs). First, you can add them to your ~/.bashrc:

export VARIABLE=value

This will make the variable visible to essentially all programs you run. You can simply type a line like the above in a terminal, and all program you run from that terminal will see the variable. Finally, you can set the variable in a subshell and run the program from that subshell:

( export VARIABLE=value ; Mathematica & )

The '(' and ')' cause the shell to launch a subshell and run the enclosed commands in it, thus it will not affect the original shell. The ideal thing to do is probably make a launcher script like so:

#!/bin/bash
export VARIABLE1=value1
export VARIABLE2=value2
Mathematica -option1 -option2 &

Applet Bug

On 5.10+ there is a bug with Mathematica and the window-list and workspace-switcher applets. After starting Mathematica the applets take up 100% of CPU.

If you start mathematica with no splash screen

mathematica -noSplashScreen

everything seems to work fine

You can use it for creating an Ubuntu launcher.

Sound

Mathematica sound doesn't work in Linux, and Wolfram Research probably isn't going to integrate it anytime soon. Here is a workaround that should work well. It assumes that you have aRts installed and running. To install aRts,

 
sudo apt-get install arts 

To start aRts,

 
artswrapper -s 2 & 

Now, create the file ~/.Mathematica/Kernel/sound.m and copy the following Mathematica program into it.

(*
* Set up a $SoundDisplayFunction for the
* Linux version of Mathematica and potentially other unixes, too.
*)

Begin[[UbuntuHelp:System`Private`]]

Unprotect[$SoundDisplayFunction]
Clear[$SoundDisplayFunction]

$SoundDisplayFunction =
Module[{playCmd,soundFileName},
Display[$SoundDisplay, #1];

(* is there a way to get the sample rate, etc. from the audio stream? *)
playCmd = "artsplay";
soundFileName = "/dev/shm/" <> ToString[Unique[[UbuntuHelp:sound]]] <> ".wav";
playCmd = playCmd <> " " <> soundFileName;

Export[soundFileName, #1, "WAV"];
Run[playCmd];
Run["/bin/rm -f " <> soundFileName];
] &

Protect[$SoundDisplayFunction]

End[];

Then add the following to ~/.Mathematica/Kernel/init.m

Get[[UbuntuHelp:sound.m]];

Try using Play[] to see if it worked.

The command to start aRts could be placed in init.m (personally, I start it in ~/.xsession). If you put it in init.m, then you'll probably want to suppress any error messages like this

 
artswrapper -s 2 >& /dev/null & 

If you don't like aRts, by all means use a different command to play the sounds. The sound.m file is pretty easy to follow.

sound.m uses /dev/shm as a temporary directory. This means that it's fast, but also can't handle huge sound files. Change /dev/shm to, say, /tmp or ~/tmp if you're concerned.

SMP Machines

There is a bug in Mathematica 5.1 (possibly others) where certain functions take a long time or hang the Mathematica Kernel on SMP machines. An example function is LinearSolve[]. You have an SMP machine if /proc/cpuinfo lists more than one processor. The work around is to set an environment variable before launching Mathematica:

export LD_ASSUME_KERNEL=2.4.1

This tells the runtime linker (ld) to use the threading and other support libraries expected by Mathematica. On some systems,

export OMP_NUM_THREADS=1

does the same.

X.org Composite Extension

Mathematica uses the Motif library (or some variant of it) to do its GUI. Motif and its variants seem to have trouble with the X.org Composite extension, which is used by xcompmgr, Xgl, Compiz, etc. It appears that just loading Composite when starting X is enough to trigger the bug; you don't have to use xcompmgr or any other compositor. This bug affects other applications (e.g. Nedit) that use a Motif variant, and is not really a bug in Mathematica. The bug basically causes bad updates to the notebook interface. If you drag the scroll bar, it will "bleed" instead of just moving. It is enough to resize the window or page up or down to cause a full redraw and fix the display, but it is very annoying. A possible workaround is

export XLIB_SKIP_ARGB_VISUALS=1

If this doesn't work, you can just be careful about dragging the scroll bar, and the problem will be minimized. You can use arrow keys, page up/down, click (not drag) in the scrollbar, or use scrollbar buttons.

Numlock / Alt / Ctrl / Backspace Problems

There are well known problems with Mathematica and X keymaps. One particular problem is an inability to use Mathematica with Numlock on (which is probably one of the more useful keys for a mathematics package...). This can be fixed with various combinations of Xresources and xmodmap. It should be enough to set some Xresources. Add the following to a file called ~/.Xresources:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! XMathematica settings
! system resources set in:
! /usr/local/Wolfram/Mathematica/5.1/SystemFiles/FrontEnd/SystemResources/X/XMathematica

! Set these if you need to change what the FE uses for Primary (Command)
! and Secondary (Option) modifier keys.
! this is an alternative to using xmodmap to redefine Mod3 (default NumLock)
!*primaryModifierMask: Mod2Mask
*secondaryModifierMask: Mod3Mask

Then set them with

xrdb -merge ~/.Xresources

or

xrdb -merge ~/.Xresources

You can add the above line to a script that is run at login (e.g., ~/.xsession or ~/.xinitrc) to set them every time you login. You can see all of the Xresources Mathematica recognizes (and their defaults) in the file mentioned above.

The other thing to look at is xmodmap, which is used to (re)define keymappings. The following works for me in conjunction with the above Xresources (these were done a long time ago, and I'm pretty sure that these don't address Mathematica problems).

xmodmap -e "keycode 115 = Super_L"
xmodmap -e "keycode 116 = Super_R"
xmodmap -e "keycode 117 = Menu"
xmodmap -e "add mod4 = Super_L Super_R"
xmodmap -e "remove lock = Caps_Lock"

See also http://support.wolfram.com/mathematica/systems/linux/general/configurenumlock.html

Locale Errors

The bug manifests itself with:

  • error complaining about the locale settings
  • lots of lines repeating various blends of "Warning: translation table syntax error"
  • window list applet got stuck when the splash screen appeared
  • segmentation fault & Mathematica death

A workaround is:

cd /usr/X11R6/lib/X11/
sudo mv locale locale.bck
sudo ln -s /usr/share/X11/XKeysymDB XKeysymDB
sudo ln -s /usr/share/X11/locale/ locale

Also, the -noSplashScreen option should be used when starting Mathematica.

AMD 64 Users

Using Ubuntu 5.10 "Breezy Badger"

Simply due to the architecture difference, Mathematica will complain with something like the following:

#/usr/local/bin/MathKernel
MathKernel cannot determine operating system.

This can be easily remedied with a couple of small modifications.

Proceedure:

  • First, we will need to modify the "math" script, so using your favorite editor add the following lines:

Modifications

                                x86_64)
SystemIDList="Linux";;

In Context

#  Determine the SystemID by examining the output of `uname -s` and
#  `uname -m`. Failsafe to SystemID=Unknown.
if [ -z "${SystemIDList}" ]; then
case `uname -s` in
AIX)
SystemIDList="AIX-Power64 IBM-RISC";;
HP-UX)
SystemIDList="HPUX-PA64 HP-RISC";;
IRIX)
SystemIDList="SGI";;
Linux)
case `uname -m` in
alpha)
SystemIDList="Linux-AXP";;
ia64)
SystemIDList="Linux-IA64";;
i?86)
SystemIDList="Linux";;
# Beginning of AMD64 Modification
x86_64)
SystemIDList="Linux";;
# End Modification
*)
SystemIDList="Unknown";;
esac;;
OSF1)
SystemIDList="DEC-AXP";;
SunOS)
SystemIDList="UltraSPARC Solaris";;
*)
SystemIDList="Unknown";;
esac
fi
  • Next you will want to run "math" and enter in all of your registration and licensing information.

This step is important even though it may not seem to be at the time of doing this. I could not seem to get the Reg spalsh screen to run for me, and Mathematica would crash out with a Segmentation Fault every time.

  • Finally, make the same exact addition to the "mathematica" script.

Lower case m versus upper case M on "mathematica" Now you should be able to run the "mathematica" script and have the GUI start up properly. As far as I can tell from a few equations and a few plots things seem to run normally from here.

External Links

http://support.wolfram.com/mathematica/systems/linux/intel/

Comments

From DennisKaarsemaker Tue Jun 14 13:43:21 +0100 2005 From: Dennis Kaarsemaker Date: Tue, 14 Jun 2005 13:43:21 +0100 Subject: Use the shell Message-ID: <20050614134321+0100@https://www.ubuntulinux.org>

CDRoms are mounted noexec, so use sh MathInstaller

Wine

Installing Mathematica with Wine 0.9.31 works, although a bit unstable. For instance, the beep generated by warning/error messages causes it to crash. A quick fix is to disable them (Preferences > Global Options > MessageOptions)