Installation » History » Version 39

Marcus Pearce, 2013-10-30 10:28 AM

1 7 Jeremy Gow
h1. Installing IDyOM
2 1 Marcus Pearce
3 1 Marcus Pearce
h2. Prerequisites
4 1 Marcus Pearce
5 2 Marcus Pearce
* "Steel Bank Common Lisp [SBCL]":http://www.sbcl.org/platform-table.html
6 39 Marcus Pearce
* "Quicklisp":http://www.quicklisp.org/beta/ is a library manager for Common Lisp.  Just download "<code>quicklisp.lisp</code>":http://beta.quicklisp.org/quicklisp.lisp and follow the instructions "here":http://www.quicklisp.org/beta/
7 39 Marcus Pearce
* An SQL database.  I would recommend  "SQLite":http://www.sqlite.org/ which is already installed on most recent flavours of MacOS and Linux.
8 7 Jeremy Gow
9 39 Marcus Pearce
It is possible to use SBCL in a terminal window but I strongly suggest using "Emacs":http://www.gnu.org/software/emacs/ and installing Slime (a Lisp interface for Emacs) which is easily done using Quicklisp (see instructions "here":http://www.quicklisp.org/beta/).
10 7 Jeremy Gow
11 39 Marcus Pearce
See the "CLSQL Manual":http://clsql.b9.com/manual/ for information on other database systems you can use and how to access them from Common Lisp.
12 27 Marcus Pearce
13 7 Jeremy Gow
h2. Install Quicklisp
14 1 Marcus Pearce
15 22 Jeremy Gow
First download  "<code>quicklisp.lisp</code>":http://beta.quicklisp.org/quicklisp.lisp to a directory <code>DIR_A</code>.  You can then install Quicklisp to another directory of your choice <code>DIR_B</code>:
16 1 Marcus Pearce
17 1 Marcus Pearce
<pre>
18 22 Jeremy Gow
(load "/DIR_A/quicklisp.lisp")
19 22 Jeremy Gow
(quicklisp-quickstart:install :path "/DIR_B/quicklisp/")
20 1 Marcus Pearce
(ql:add-to-init-file)
21 1 Marcus Pearce
</pre>
22 22 Jeremy Gow
23 26 Marcus Pearce
Use the full pathnames for both directories (Lisp doesn't interpret shell substitutions like ~ for the home directory).
24 1 Marcus Pearce
25 32 Marcus Pearce
See the "Quicklisp website":http://beta.quicklisp.org/ for documentation about other features of Quicklisp.
26 32 Marcus Pearce
27 7 Jeremy Gow
h2. Download IDyOM
28 1 Marcus Pearce
29 9 Jeremy Gow
Download the following Lisp libraries, and unzip them into <code>DIR/quicklisp/local-projects/</code>
30 1 Marcus Pearce
31 36 Marcus Pearce
* "idyom":https://code.soundsoftware.ac.uk/hg/idyom/archive/tip.zip
32 9 Jeremy Gow
33 34 Marcus Pearce
*Removing previous installations*: If you have any previous installations of these libraries, you would do well to remove them, especially if they are in folders such as '~/.local' which are automatically scanned by asdf/quicklisp. You may also want to clear the corresponding entries from <code>asdf:*central-registry*</code> in your .sbclrc file, should any exist.
34 34 Marcus Pearce
35 12 Jeremy Gow
h2. Set <code>*idyom-root*</code>
36 1 Marcus Pearce
37 28 Marcus Pearce
IDyOM requires the global variable <code>*idyom-root*</code> be set to a suitable working directory, where it stores models, cross-validation settings, cached results etc. By default, this is a directory called 'idyom' in your home directory. Alternatively, you can customise the location by setting the variable <code>*idyom-root*</code> to point to the desired directory by including the following in your <code>.sbclrc</code> file, located in your home directory (you must restart SBCL for this to take effect):
38 21 Jeremy Gow
39 1 Marcus Pearce
<pre>
40 29 Marcus Pearce
(defvar *idyom-root* "/FULL/PATH/TO/WORKING/DIR/")
41 1 Marcus Pearce
</pre>
42 28 Marcus Pearce
43 10 Jeremy Gow
However you configure this, you must ensure that the directory exists (create it if it doesn't) and you will also need to create three directories below <code>*idyom-root*</code> for IDyOM to use: <code>*idyom-root*/data/cache/</code>, <code>data/models/</code> and <code>data/resampling/</code>.
44 16 Jeremy Gow
45 1 Marcus Pearce
h2. Install IDyOM
46 7 Jeremy Gow
47 9 Jeremy Gow
You can now use Quicklisp to install IDyOM:
48 31 Marcus Pearce
49 5 Marcus Pearce
<pre>
50 7 Jeremy Gow
(ql:quickload "idyom")
51 1 Marcus Pearce
</pre>
52 31 Marcus Pearce
53 31 Marcus Pearce
This will also install the third-party Lisp libraries IDyOM depends on.  
54 31 Marcus Pearce
55 31 Marcus Pearce
(If you get an error which brings up the debugger, press 2 [ACCEPT] and the installation should complete.)
56 1 Marcus Pearce
57 7 Jeremy Gow
h2. Create a database
58 1 Marcus Pearce
59 30 Marcus Pearce
IDyOM is now installed, but you will need a database in order to use it.  For example, to create an SQLite database called 'example.db' in directory <code>DIR</code>:
60 5 Marcus Pearce
61 1 Marcus Pearce
<pre>
62 1 Marcus Pearce
(clsql:connect '("DIR/example.db") :if-exists :old :database-type :sqlite3)
63 8 Jeremy Gow
</pre>
64 8 Jeremy Gow
Alternatively, to connect to an existing local MySQL database:
65 8 Jeremy Gow
<pre>
66 8 Jeremy Gow
(clsql:connect '("localhost" "example-database" "username" "password") :if-exists :old :database-type :mysql)
67 8 Jeremy Gow
</pre>
68 8 Jeremy Gow
See the "CLSQL documentation":http://clsql.b9.com/manual/ for more on "connect":http://clsql.b9.com/manual/connect.html and "supported databases":http://clsql.b9.com/manual/prerequisites.html#idp8251808.
69 8 Jeremy Gow
70 8 Jeremy Gow
Finally, for a new database: 
71 8 Jeremy Gow
<pre>
72 7 Jeremy Gow
(mtp-admin:initialise-database)
73 7 Jeremy Gow
</pre>
74 1 Marcus Pearce
75 8 Jeremy Gow
76 8 Jeremy Gow
h3. Problems loading foreign libraries
77 8 Jeremy Gow
78 8 Jeremy Gow
Depending on how your system is configured, <code>clsql:connect</code> may give a "Couldn't load foreign libraries" error.  In this case, you
79 8 Jeremy Gow
need to "tell CLSQL where it can find these libraries":http://clsql.b9.com/manual/appendix.html#foreignlibs, e.g.
80 8 Jeremy Gow
<pre>
81 8 Jeremy Gow
(clsql:push-library-path "/usr/local/mysql/lib/")
82 8 Jeremy Gow
</pre>
83 9 Jeremy Gow
The exact path will depend on your system.  Note that, for some database installations these libraries may not have been installed, and you should consult the database documentation.