1 : |
blume |
1047 |
Installation instructions for SML/NJ
|
2 : |
|
|
------------------------------------
|
3 : |
|
|
|
4 : |
mblume |
1362 |
These are instructions for installing recent "working" versions of SML/NJ
|
5 : |
|
|
on Unix-like systems, including MacOX X with the developer tools installed.
|
6 : |
blume |
1047 |
|
7 : |
mblume |
1362 |
If you are running MacOS X but don't have the developer tools, you can
|
8 : |
|
|
install the system starting from the disk image that we provide. See
|
9 : |
|
|
MACOSXINSTALL for details.
|
10 : |
|
|
|
11 : |
|
|
If you are running Win32, see WININSTALL.
|
12 : |
|
|
|
13 : |
blume |
1047 |
1. If you are in a hurry (and you have network connectivity) ...
|
14 : |
|
|
----------------------------------------------------------------
|
15 : |
|
|
|
16 : |
|
|
- Pick a place to do the installation, e.g.
|
17 : |
|
|
|
18 : |
|
|
$ d=/usr/share/smlnj # or whatever you like
|
19 : |
|
|
$ mkdir $d
|
20 : |
|
|
$ cd $d
|
21 : |
|
|
|
22 : |
|
|
- Download config.tgz, e.g.
|
23 : |
|
|
|
24 : |
|
|
$ v=110.38 # or whatever is the version you desire
|
25 : |
|
|
$ wget http://ftp.research.bell-labs.com/dist/smlnj/working/$v/config.tgz
|
26 : |
|
|
|
27 : |
|
|
- Gunzip and untar, e.g.
|
28 : |
|
|
|
29 : |
|
|
$ gunzip <config.tgz | tar xf -
|
30 : |
|
|
|
31 : |
|
|
This creates a subdirectory "config"
|
32 : |
|
|
|
33 : |
|
|
- Edit the "config/targets" file to your taste. If you leave this
|
34 : |
|
|
file alone, you end up with a minimal installation.
|
35 : |
|
|
|
36 : |
|
|
- Run the installer, it will automatically fetch all other necessary
|
37 : |
|
|
tarballs:
|
38 : |
|
|
|
39 : |
mblume |
1362 |
$ config/new-install.sh
|
40 : |
|
|
|
41 : |
|
|
or, if this should fail for any reason(*),
|
42 : |
|
|
|
43 : |
blume |
1047 |
$ config/install.sh
|
44 : |
|
|
|
45 : |
|
|
If the installer complains about not being able to fetch those
|
46 : |
|
|
tarballs, try step 2.1.
|
47 : |
|
|
|
48 : |
|
|
2. If you have a bit more time...
|
49 : |
|
|
---------------------------------
|
50 : |
|
|
|
51 : |
|
|
2.1. If you do not have network connectivity...
|
52 : |
|
|
-------------------------------------------------
|
53 : |
|
|
|
54 : |
|
|
- Use some other means of downloading the necessary tarballs. Store
|
55 : |
mblume |
1362 |
them in directory $d. Then run the installer (config/new-install.sh
|
56 : |
|
|
or config/install.sh).
|
57 : |
blume |
1047 |
|
58 : |
blume |
1059 |
Here is a table that shows which packages you will need to download
|
59 : |
blume |
1047 |
depending on what you select in config/targets. Take the union of
|
60 : |
|
|
all the packages corresponding to your selection. Don't forget to
|
61 : |
|
|
include the "(always)" entry. (<arch> and <os> should match your
|
62 : |
|
|
host system.)
|
63 : |
|
|
|
64 : |
blume |
1059 |
Keep in mind that making selections in config/targets there are
|
65 : |
|
|
dependencies between packages. For example, eXene requires cml
|
66 : |
|
|
and cml-lib. The installer script "knows" about these dependencies
|
67 : |
|
|
and will automatically calculate the transitive closure of the
|
68 : |
|
|
"requires" relation for you. Still, if you do not have network
|
69 : |
|
|
connectivity, then you should have downloaded tarballs for the
|
70 : |
|
|
entire transitive closure. (If you didn't, the installer will
|
71 : |
|
|
kindly remind you.)
|
72 : |
blume |
1047 |
|
73 : |
|
|
if you select... | ... you need
|
74 : |
|
|
---------------------------------------------------------------
|
75 : |
|
|
(always) | boot.<arch>-<os>.tgz
|
76 : |
|
|
| runtime.tgz
|
77 : |
|
|
|
|
78 : |
|
|
src-smlnj | MLRISC.tgz
|
79 : |
|
|
| cm.tgz
|
80 : |
|
|
| compiler.tgz
|
81 : |
|
|
| smlnj-lib.tgz
|
82 : |
|
|
| ml-yacc.tgz
|
83 : |
|
|
| system.tgz
|
84 : |
|
|
|
|
85 : |
|
|
ml-yacc | ml-yacc.tgz
|
86 : |
|
|
|
|
87 : |
|
|
ml-lex | ml-lex.tgz
|
88 : |
|
|
|
|
89 : |
|
|
ml-burg | ml-burg.tgz
|
90 : |
|
|
requires: ml-lex |
|
91 : |
|
|
|
|
92 : |
|
|
smlnj-lib | smlnj-lib.tgz
|
93 : |
|
|
|
|
94 : |
|
|
pgraph-util | cm.tgz
|
95 : |
|
|
|
|
96 : |
|
|
cml | cml.tgz
|
97 : |
|
|
requires: smlnj-lib |
|
98 : |
|
|
|
|
99 : |
|
|
cml-lib | cml.tgz
|
100 : |
|
|
|
|
101 : |
|
|
eXene | eXene.tgz
|
102 : |
|
|
requires: cml, cml-lib |
|
103 : |
|
|
|
|
104 : |
|
|
ckit | ckit.tgz
|
105 : |
|
|
|
|
106 : |
|
|
ml-nlffi-lib | ml-nlffi-lib.tgz
|
107 : |
|
|
|
|
108 : |
|
|
ml-nlffigen | ml-nlffigen.tgz
|
109 : |
|
|
requires: smlnj-lib, |
|
110 : |
|
|
ckit |
|
111 : |
|
|
|
|
112 : |
|
|
mlrisc-tools | MLRISC.tgz
|
113 : |
|
|
|
|
114 : |
|
|
nowhere |
|
115 : |
|
|
requires: mlrisc-tools |
|
116 : |
|
|
|
|
117 : |
|
|
doc | - (currently unavailable)
|
118 : |
|
|
|
119 : |
|
|
2.2. Tweaking "preloads"...
|
120 : |
|
|
----------------------------
|
121 : |
|
|
|
122 : |
|
|
- Before running the installer (but after unpacking the config
|
123 : |
|
|
directory), you can customize the set of libraries that are
|
124 : |
|
|
pre-loaded (either directly or via CM's "autoload" mechanism).
|
125 : |
|
|
|
126 : |
mblume |
1362 |
For this, edit config/preloads before running config/new-install.sh
|
127 : |
|
|
(or config/install.sh).
|
128 : |
blume |
1047 |
|
129 : |
|
|
2.3. Using a different ftp server (for a step-1.-like installation)
|
130 : |
|
|
--------------------------------------------------------------------
|
131 : |
|
|
|
132 : |
|
|
- If you have a local mirror for ftp.research.bell-labs.com/dist/smlnj,
|
133 : |
|
|
then you can speed up installation by pointing the automatic URL
|
134 : |
|
|
fetch mechanism there. The URL of the repository is stored in
|
135 : |
mblume |
1362 |
config/srcarchiveurl. Edit this file before running
|
136 : |
|
|
config/new-install.sh (or config/install.sh).
|
137 : |
blume |
1047 |
|
138 : |
|
|
2.4. Using locally stored tarballs
|
139 : |
|
|
-----------------------------------
|
140 : |
|
|
|
141 : |
|
|
- This is like step 2.3. -- except the URL in config/srcarchiveurl
|
142 : |
|
|
should read something like
|
143 : |
|
|
|
144 : |
|
|
file:///usr/src/packages/smlnj/working/110.38
|
145 : |
|
|
|
146 : |
|
|
(In other words, the URL should spell out the name of the local
|
147 : |
mblume |
1362 |
directory that happens to contain the tarballs. Notice that
|
148 : |
|
|
this method does not seem to work with certain versions of wget
|
149 : |
|
|
which do not understand the file:// scheme.)
|
150 : |
blume |
1047 |
|
151 : |
|
|
2.5. What needs to be on my PATH?
|
152 : |
|
|
----------------------------------
|
153 : |
|
|
|
154 : |
|
|
- You should include $d/bin into your PATH.
|
155 : |
|
|
|
156 : |
|
|
2.6. Which of all those files do I really need?
|
157 : |
|
|
------------------------------------------------
|
158 : |
|
|
|
159 : |
|
|
After the installer completes, directory $d will be full of files
|
160 : |
|
|
and subdirectories. Not all of them are actually required if you want
|
161 : |
|
|
to use the system.
|
162 : |
|
|
|
163 : |
|
|
In particular, if you are not interested in any of the source code,
|
164 : |
|
|
you can DELETE EVERYTHING EXCEPT:
|
165 : |
|
|
|
166 : |
|
|
$d/bin
|
167 : |
|
|
$d/lib
|
168 : |
|
|
|
169 : |
|
|
2.7. Can I move files to another directory after the fact?
|
170 : |
|
|
-----------------------------------------------------------
|
171 : |
|
|
|
172 : |
blume |
1261 |
Yes.
|
173 : |
blume |
1047 |
|
174 : |
|
|
Here is the procedure:
|
175 : |
|
|
|
176 : |
|
|
Suppose you have installed everything under $d and now you want to
|
177 : |
|
|
move things to some other directory $e (e.g., e=/usr/share/smlnj):
|
178 : |
|
|
|
179 : |
|
|
1. Move (at least) $d/bin and $d/lib to $e:
|
180 : |
|
|
|
181 : |
|
|
$ mv $d/{bin,lib} $e
|
182 : |
|
|
|
183 : |
blume |
1261 |
2. Before running the "sml" command, set the environment variable
|
184 : |
|
|
SMLNJ_HOME to point to $e:
|
185 : |
blume |
1047 |
|
186 : |
blume |
1261 |
$ export SMLNJ_HOME=$e
|
187 : |
blume |
1047 |
|
188 : |
blume |
1261 |
If you want to put the contents of $e/lib somewhere else, then
|
189 : |
|
|
point CM_PATHCONFIG to wherever the path configuration file
|
190 : |
|
|
lives. (The default is $SMLNJ_HOME/lib/pathconfig.)
|
191 : |
blume |
1047 |
|
192 : |
blume |
1261 |
You can also scatter around the contents of $e/lib. If you do so,
|
193 : |
|
|
you have to edit the path configuration file itself. See the CM
|
194 : |
|
|
manual for more information on path anchors and path configuration.
|
195 : |
blume |
1047 |
|
196 : |
|
|
2.8 Forcing the installer to use a particular URL getter program
|
197 : |
|
|
----------------------------------------------------------------
|
198 : |
|
|
|
199 : |
mblume |
1362 |
By default, config/new-install.sh (and config/install.sh) will
|
200 : |
|
|
attempt to use wget, curl, and lynx (in that order). If you
|
201 : |
|
|
already know which of these programs you want
|
202 : |
blume |
1047 |
the installer to use, then set the environment variable URLGETTER
|
203 : |
|
|
to "wget", "curl", or "lynx", respectively.
|
204 : |
|
|
|
205 : |
|
|
You can also set URLGETTER to any other command "foo" as long as
|
206 : |
|
|
it can be invoked as
|
207 : |
|
|
|
208 : |
|
|
$ foo <source> <destination>
|
209 : |
|
|
|
210 : |
|
|
where <source> is the URL you want to fetch and <destination> is
|
211 : |
|
|
the file name where the result will be stored.
|
212 : |
|
|
|
213 : |
|
|
3. Troubleshooting:
|
214 : |
|
|
-------------------
|
215 : |
|
|
|
216 : |
|
|
3.1. You think you have network connectivity, but the installer fails
|
217 : |
|
|
---------------------------------------------------------------------
|
218 : |
|
|
|
219 : |
|
|
- You probably do not have any of the following commands available
|
220 : |
|
|
on your system: wget, lynx, curl.
|
221 : |
|
|
|
222 : |
|
|
Failsafe remedy: Proceed according to step 2.1., using whatever
|
223 : |
|
|
other FTP client you have.
|
224 : |
|
|
|
225 : |
|
|
Alternative remedy: If you have some other command-line tool to
|
226 : |
|
|
fetch URLs, make a wrapper for it (if necessary) so that it can
|
227 : |
|
|
be invoked with precisely two arguments: <srcurl> and <dst>.
|
228 : |
|
|
Then set the environment variable URLGETTER to the name of this
|
229 : |
|
|
(wrapped) tool and try running the installer.
|
230 : |
|
|
|
231 : |
|
|
Example: Suppose you don't have wget but a wget-lookalike named
|
232 : |
|
|
"xget". You could then make a shell script that wraps xget, e.g.
|
233 : |
|
|
using a shell script "myxget" consisting of the single line:
|
234 : |
|
|
|
235 : |
|
|
exec xget -nv -O $2 $1
|
236 : |
|
|
|
237 : |
|
|
Once you have myxget, simply run:
|
238 : |
|
|
|
239 : |
|
|
URLGETTER=myxget config/install.sh
|
240 : |
mblume |
1362 |
|
241 : |
|
|
----------------------------------------------------------------------------
|
242 : |
|
|
(*) config/new-install.sh is a newer version of our installer with
|
243 : |
|
|
major parts written in SML rather than as a shell script.
|
244 : |
|
|
Since it is fairly new it may still have some problems -- in which
|
245 : |
|
|
case you can fall back to the old config/install.sh.
|