SCM Repository
Annotation of /sml/trunk/INSTALL
Parent Directory
|
Revision Log
Revision 1047 - (view) (download)
1 : | blume | 1047 | Installation instructions for SML/NJ |
2 : | ------------------------------------ | ||
3 : | |||
4 : | These are instructions for installing recent "working" versions of SML/NJ. | ||
5 : | |||
6 : | 1. If you are in a hurry (and you have network connectivity) ... | ||
7 : | ---------------------------------------------------------------- | ||
8 : | |||
9 : | - Pick a place to do the installation, e.g. | ||
10 : | |||
11 : | $ d=/usr/share/smlnj # or whatever you like | ||
12 : | $ mkdir $d | ||
13 : | $ cd $d | ||
14 : | |||
15 : | - Download config.tgz, e.g. | ||
16 : | |||
17 : | $ v=110.38 # or whatever is the version you desire | ||
18 : | $ wget http://ftp.research.bell-labs.com/dist/smlnj/working/$v/config.tgz | ||
19 : | |||
20 : | - Gunzip and untar, e.g. | ||
21 : | |||
22 : | $ gunzip <config.tgz | tar xf - | ||
23 : | |||
24 : | This creates a subdirectory "config" | ||
25 : | |||
26 : | - Edit the "config/targets" file to your taste. If you leave this | ||
27 : | file alone, you end up with a minimal installation. | ||
28 : | |||
29 : | - Run the installer, it will automatically fetch all other necessary | ||
30 : | tarballs: | ||
31 : | |||
32 : | $ config/install.sh | ||
33 : | |||
34 : | If the installer complains about not being able to fetch those | ||
35 : | tarballs, try step 2.1. | ||
36 : | |||
37 : | 2. If you have a bit more time... | ||
38 : | --------------------------------- | ||
39 : | |||
40 : | 2.1. If you do not have network connectivity... | ||
41 : | ------------------------------------------------- | ||
42 : | |||
43 : | - Use some other means of downloading the necessary tarballs. Store | ||
44 : | them in directory $d. Then run the installer (config/install.sh). | ||
45 : | |||
46 : | Here is table that shows which packages you will need to download | ||
47 : | depending on what you select in config/targets. Take the union of | ||
48 : | all the packages corresponding to your selection. Don't forget to | ||
49 : | include the "(always)" entry. (<arch> and <os> should match your | ||
50 : | host system.) | ||
51 : | |||
52 : | Make sure you satisfy the "requires" dependencies when you make your | ||
53 : | selection in config/targets. (Actually, you need to satisfy these | ||
54 : | requirements even if you do have network connectivity. But you | ||
55 : | said you were in a hurry... Future versions of the installer | ||
56 : | might be enhanced so that dependencies are satisfied automatically.) | ||
57 : | |||
58 : | if you select... | ... you need | ||
59 : | --------------------------------------------------------------- | ||
60 : | (always) | boot.<arch>-<os>.tgz | ||
61 : | | runtime.tgz | ||
62 : | | | ||
63 : | src-smlnj | MLRISC.tgz | ||
64 : | | cm.tgz | ||
65 : | | compiler.tgz | ||
66 : | | smlnj-lib.tgz | ||
67 : | | ml-yacc.tgz | ||
68 : | | system.tgz | ||
69 : | | | ||
70 : | ml-yacc | ml-yacc.tgz | ||
71 : | | | ||
72 : | ml-lex | ml-lex.tgz | ||
73 : | | | ||
74 : | ml-burg | ml-burg.tgz | ||
75 : | requires: ml-lex | | ||
76 : | | | ||
77 : | smlnj-lib | smlnj-lib.tgz | ||
78 : | | | ||
79 : | pgraph-util | cm.tgz | ||
80 : | | | ||
81 : | cml | cml.tgz | ||
82 : | requires: smlnj-lib | | ||
83 : | | | ||
84 : | cml-lib | cml.tgz | ||
85 : | | | ||
86 : | eXene | eXene.tgz | ||
87 : | requires: cml, cml-lib | | ||
88 : | | | ||
89 : | ckit | ckit.tgz | ||
90 : | | | ||
91 : | ml-nlffi-lib | ml-nlffi-lib.tgz | ||
92 : | | | ||
93 : | ml-nlffigen | ml-nlffigen.tgz | ||
94 : | requires: smlnj-lib, | | ||
95 : | ckit | | ||
96 : | | | ||
97 : | mlrisc-tools | MLRISC.tgz | ||
98 : | | | ||
99 : | nowhere | | ||
100 : | requires: mlrisc-tools | | ||
101 : | | | ||
102 : | doc | - (currently unavailable) | ||
103 : | |||
104 : | 2.2. Tweaking "preloads"... | ||
105 : | ---------------------------- | ||
106 : | |||
107 : | - Before running the installer (but after unpacking the config | ||
108 : | directory), you can customize the set of libraries that are | ||
109 : | pre-loaded (either directly or via CM's "autoload" mechanism). | ||
110 : | |||
111 : | For this, edit config/preloads before running config/install.sh. | ||
112 : | |||
113 : | 2.3. Using a different ftp server (for a step-1.-like installation) | ||
114 : | -------------------------------------------------------------------- | ||
115 : | |||
116 : | - If you have a local mirror for ftp.research.bell-labs.com/dist/smlnj, | ||
117 : | then you can speed up installation by pointing the automatic URL | ||
118 : | fetch mechanism there. The URL of the repository is stored in | ||
119 : | config/srcarchiveurl. Edit this file before running config/install.sh. | ||
120 : | |||
121 : | 2.4. Using locally stored tarballs | ||
122 : | ----------------------------------- | ||
123 : | |||
124 : | - This is like step 2.3. -- except the URL in config/srcarchiveurl | ||
125 : | should read something like | ||
126 : | |||
127 : | file:///usr/src/packages/smlnj/working/110.38 | ||
128 : | |||
129 : | (In other words, the URL should spell out the name of the local | ||
130 : | directory that happens to contain the tarballs.) | ||
131 : | |||
132 : | 2.5. What needs to be on my PATH? | ||
133 : | ---------------------------------- | ||
134 : | |||
135 : | - You should include $d/bin into your PATH. | ||
136 : | |||
137 : | 2.6. Which of all those files do I really need? | ||
138 : | ------------------------------------------------ | ||
139 : | |||
140 : | After the installer completes, directory $d will be full of files | ||
141 : | and subdirectories. Not all of them are actually required if you want | ||
142 : | to use the system. | ||
143 : | |||
144 : | In particular, if you are not interested in any of the source code, | ||
145 : | you can DELETE EVERYTHING EXCEPT: | ||
146 : | |||
147 : | $d/bin | ||
148 : | $d/lib | ||
149 : | |||
150 : | 2.7. Can I move files to another directory after the fact? | ||
151 : | ----------------------------------------------------------- | ||
152 : | |||
153 : | Yes. But this requires two small tweaks (points 2. and 3. below). | ||
154 : | |||
155 : | Here is the procedure: | ||
156 : | |||
157 : | Suppose you have installed everything under $d and now you want to | ||
158 : | move things to some other directory $e (e.g., e=/usr/share/smlnj): | ||
159 : | |||
160 : | 1. Move (at least) $d/bin and $d/lib to $e: | ||
161 : | |||
162 : | $ mv $d/{bin,lib} $e | ||
163 : | |||
164 : | 2. Edit $e/bin/.run-sml and change the value of | ||
165 : | the variable BIN_DIR to (the value of) $e/bin. | ||
166 : | (If e=/usr/share/smlnj, then the value would have to be | ||
167 : | /usr/share/smlnj/bin.) | ||
168 : | |||
169 : | 3. Before running the "sml" command, set the environment variable | ||
170 : | CM_PATHCONFIG to $e/lib. You could do this globally, either | ||
171 : | in a system-wide .profile or even by adding a line, e.g., | ||
172 : | |||
173 : | export CM_PATHCONFIG=/usr/share/smlnj/lib | ||
174 : | |||
175 : | to $e/bin/.run-sml. | ||
176 : | |||
177 : | Alternatively, each user who wants to run "sml" could set the | ||
178 : | variable by him/herself. | ||
179 : | |||
180 : | 2.8 Forcing the installer to use a particular URL getter program | ||
181 : | ---------------------------------------------------------------- | ||
182 : | |||
183 : | By default, config/install.sh will attempt to use wget, curl, and lynx | ||
184 : | (in that order). If you already know which of these programs you want | ||
185 : | the installer to use, then set the environment variable URLGETTER | ||
186 : | to "wget", "curl", or "lynx", respectively. | ||
187 : | |||
188 : | You can also set URLGETTER to any other command "foo" as long as | ||
189 : | it can be invoked as | ||
190 : | |||
191 : | $ foo <source> <destination> | ||
192 : | |||
193 : | where <source> is the URL you want to fetch and <destination> is | ||
194 : | the file name where the result will be stored. | ||
195 : | |||
196 : | 3. Troubleshooting: | ||
197 : | ------------------- | ||
198 : | |||
199 : | 3.1. You think you have network connectivity, but the installer fails | ||
200 : | --------------------------------------------------------------------- | ||
201 : | |||
202 : | - You probably do not have any of the following commands available | ||
203 : | on your system: wget, lynx, curl. | ||
204 : | |||
205 : | Failsafe remedy: Proceed according to step 2.1., using whatever | ||
206 : | other FTP client you have. | ||
207 : | |||
208 : | Alternative remedy: If you have some other command-line tool to | ||
209 : | fetch URLs, make a wrapper for it (if necessary) so that it can | ||
210 : | be invoked with precisely two arguments: <srcurl> and <dst>. | ||
211 : | Then set the environment variable URLGETTER to the name of this | ||
212 : | (wrapped) tool and try running the installer. | ||
213 : | |||
214 : | Example: Suppose you don't have wget but a wget-lookalike named | ||
215 : | "xget". You could then make a shell script that wraps xget, e.g. | ||
216 : | using a shell script "myxget" consisting of the single line: | ||
217 : | |||
218 : | exec xget -nv -O $2 $1 | ||
219 : | |||
220 : | Once you have myxget, simply run: | ||
221 : | |||
222 : | URLGETTER=myxget config/install.sh |
root@smlnj-gforge.cs.uchicago.edu | ViewVC Help |
Powered by ViewVC 1.0.0 |