Note: Narrowly targeted Google-food. Skip if you do not program in Standard ML.
Update 2010-05-05: As of Lucid, SML/NJ is now available on 64-bit. So you should probably just upgrade.
Ubuntu x86_64 does not have smlnj (the Standard ML of New Jersey (SML/NJ) distribution); nor does SML/NJ currently build out-of-the-box on Ubuntu x86_64. I elide here a long, dull story about trying to build it --- using 32-bit libraries, etc. --- and cut to the chase: ultimately, I installed it on a 32-bit Ubuntu box, and then manually transferred the files over.
In general, I almost never install software on my Linux box unless it's either (a) completely managed by my packaging system or (b) can be removed by simply rm -Rf /some/directory. Fortunately, SML/NJ more or less satisfies (b).
Assuming you have both a 32-bit Ubuntu install and a 64-bit Ubuntu install available, the transfer process is straightforward. The only trickiness is that there's no simple way to get all SML/NJ packages and libraries at once, so you'll have to apt-get several times if you want a "batteries included" installation.
Steps (unless otherwise noted, perform all these commands on your 32-bit machine):
sudo apt-get install smlnj
- Optionally, do
apt-cache search smlnjand install as many of the resulting lib*-smlnj libraries as you want.
- Optionally, install the following extra packages:
- ml-lpt ("language processing tools"; includes ml-ulex and ml-antlr)
- ml-yacc (ML-Yacc)
apt-cache search mlyields a huge fusillade of results because "ml" is a common substring. Couldn't they at least use sml-* or better yet standard-ml-*? Blech.)
tar -czvf smlnj.tar.gz smlnj
- Copy the tarball smlnj.tar.gz to your target machine of choice and untar it under /usr/lib
pushd /usr/bin && tar -czvf ~/smlnj-scripts.tar.gz `dpkg -L smlnj smlnj-runtime ml-lpt ml-yacc |cut -b 10-` && popd
- Copy the tarball smlnj-scripts.tar.gz to your target machine, and untar it under a binary directory on your PATH. (I have $HOME/bin in my PATH for user-local executables, so I put it there.)
As far as I can tell, everything works.