Installation » History » Version 61
Marcus Pearce, 2014-06-04 04:09 PM
1 | 47 | Marcus Pearce | h1. Installing IDyOM and its prerequisites |
---|---|---|---|
2 | 1 | Marcus Pearce | |
3 | 46 | Marcus Pearce | {{>toc}} |
4 | 1 | Marcus Pearce | |
5 | 46 | Marcus Pearce | h2. Summary |
6 | 1 | Marcus Pearce | |
7 | 50 | Marcus Pearce | # Download "Steel Bank Common Lisp [SBCL]":http://www.sbcl.org/platform-table.html and "install it":http://www.sbcl.org/getting.html |
8 | 61 | Marcus Pearce | # Install Emacs ("available here for MacOS":http://emacsformacosx.com/) |
9 | 61 | Marcus Pearce | # Install "Quicklisp":http://www.quicklisp.org/beta/, a library manager for Common Lisp (download "<code>quicklisp.lisp</code>":http://beta.quicklisp.org/quicklisp.lisp and follow the instructions "here":http://www.quicklisp.org/beta/#installation) |
10 | 50 | Marcus Pearce | # (Optional) Install an SQL database - I recommend "SQLite":http://www.sqlite.org/ which is already installed on most recent flavours of MacOS and Linux. 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. |
11 | 50 | Marcus Pearce | # Install and setup the IDyOM code itself |
12 | 1 | Marcus Pearce | |
13 | 60 | Marcus Pearce | The following is a detailed description of each of these steps tested on MacOS 10.7.5 and Ubuntu 14.04 (GNU/Linux 3.13.0-24-generic x86_64). It has been successfully installed on Windows following the same basic steps but I don't have a Windows machine to test the detailed instructions. |
14 | 46 | Marcus Pearce | |
15 | 51 | Marcus Pearce | h2. 1. Install SBCL |
16 | 46 | Marcus Pearce | |
17 | 48 | Marcus Pearce | # download SBCL for MacOS X (the AMD64 version) here: http://www.sbcl.org/platform-table.html |
18 | 46 | Marcus Pearce | # on MacOS make sure you have the Xcode developer tools installed from the DVD that came with your Mac (required for GNU make) |
19 | 49 | Marcus Pearce | # install SBCL by following the instructions here: http://www.sbcl.org/getting.html (Basically: unpack the downloaded tar.bz2 file, open a terminal window, change directory (<code>cd</code>) into the unpacked directory and type <code>sudo sh install.sh</code>). |
20 | 1 | Marcus Pearce | |
21 | 51 | Marcus Pearce | h2. 2. Download and install Emacs |
22 | 47 | Marcus Pearce | |
23 | 47 | Marcus Pearce | MacOS: Universal binaries available here: http://emacsformacosx.com/ |
24 | 47 | Marcus Pearce | Linux: <code>sudo apt-get install emacs</code> |
25 | 47 | Marcus Pearce | |
26 | 51 | Marcus Pearce | h2. 3. Install Quicklisp |
27 | 47 | Marcus Pearce | |
28 | 47 | Marcus Pearce | # make a new folder in your home directory called 'quicklisp' |
29 | 47 | Marcus Pearce | # download the file http://beta.quicklisp.org/quicklisp.lisp and put it into the new folder |
30 | 47 | Marcus Pearce | # open a terminal window and type 'sbcl' to start sbcl |
31 | 47 | Marcus Pearce | # type each of the following lines followed by enter, changing the path to match the location of your quicklisp folder: |
32 | 1 | Marcus Pearce | <pre> |
33 | 1 | Marcus Pearce | (load "/Users/marcusp/quicklisp/quicklisp.lisp") |
34 | 47 | Marcus Pearce | (quicklisp-quickstart:install :path "/Users/marcusp/quicklisp/") |
35 | 47 | Marcus Pearce | (ql:add-to-init-file) |
36 | 47 | Marcus Pearce | (ql:quickload "quicklisp-slime-helper") |
37 | 49 | Marcus Pearce | </pre> |
38 | 1 | Marcus Pearce | # Remember to follow the instructions given by each of these commands, *in particular* the final command, which prints some lines of code to copy and paste into the emacs configuration file called <code>.emacs</code> in your home directory (you must create this file in Emacs or another text editor). |
39 | 47 | Marcus Pearce | # open (or restart) Emacs, press Alt-x and type slime - you should now be running SBCL from within Emacs |
40 | 1 | Marcus Pearce | |
41 | 52 | Marcus Pearce | h2. 4. Install an SQL database |
42 | 1 | Marcus Pearce | |
43 | 52 | Marcus Pearce | MacOS: No action required, Sqlite is already installed (unless you prefer a different database system, see below). |
44 | 57 | Marcus Pearce | Linux: <code>sudo apt-get install sqlite</code> |
45 | 52 | Marcus Pearce | |
46 | 52 | Marcus Pearce | h2. 5. Install IDyOM |
47 | 52 | Marcus Pearce | |
48 | 58 | Marcus Pearce | # download the latest version of IDyOM from: https://code.soundsoftware.ac.uk/hg/idyom/archive/tip.zip |
49 | 47 | Marcus Pearce | # unzip the zip file into the folder 'local-projects' within the 'quicklisp' folder (e.g., '/Users/marcusp/quicklisp/local-projects/') |
50 | 47 | Marcus Pearce | # make a folder in your home directory called 'idyom'. Within that folder make two further folders, one called 'db', the other called 'data'. Within the 'data' folder make three further folders called 'cache', 'models' and 'resampling'. |
51 | 1 | Marcus Pearce | # using Emacs or another text editor open the file called '.sbclrc' in your home directory and add the following lines to the end of the file (the file should already have some lisp code in it), changing the paths to match the location of the 'idyom' folder you created in step 3: |
52 | 47 | Marcus Pearce | <pre> |
53 | 47 | Marcus Pearce | ;;; Load CLSQL by default |
54 | 47 | Marcus Pearce | (ql:quickload "clsql") |
55 | 1 | Marcus Pearce | |
56 | 47 | Marcus Pearce | ;;; IDyOM |
57 | 47 | Marcus Pearce | (defun start-idyom () |
58 | 47 | Marcus Pearce | (defvar *idyom-root* "/Users/marcusp/idyom/") |
59 | 47 | Marcus Pearce | (ql:quickload "idyom") |
60 | 47 | Marcus Pearce | (clsql:connect '("/Users/marcusp/idyom/db/database-cents.sqlite") :if-exists :old :database-type :sqlite3)) |
61 | 47 | Marcus Pearce | </pre> |
62 | 47 | Marcus Pearce | # Restart Emacs, run Slime again (<code>Alt-x slime</code>) and type <code>(start-idyom)</code> at the prompt, <code>CL-USER></code>, to load IDyOM. The first time you run this, it will also download all the required third-party lisp libraries. |
63 | 47 | Marcus Pearce | # The first time you run IDyOM, you must initialise the database by issuing the following command at the prompt (<code>CL-USER></code>): |
64 | 8 | Jeremy Gow | <pre> |
65 | 1 | Marcus Pearce | (mtp-admin:initialise-database) |
66 | 8 | Jeremy Gow | </pre> |
67 | 47 | Marcus Pearce | NB: if you run this command later it will delete all the contents of your database, so only run it once. |
68 | 8 | Jeremy Gow | |
69 | 47 | Marcus Pearce | h1. Starting IDyOM |
70 | 1 | Marcus Pearce | |
71 | 47 | Marcus Pearce | Having installed IDyOM as described above, you can start it by: |
72 | 47 | Marcus Pearce | |
73 | 50 | Marcus Pearce | # launching Emacs |
74 | 44 | Marcus Pearce | # typing <code>Alt-x slime</code> |
75 | 47 | Marcus Pearce | # entering <code>(start-idyom)</code> at the Lisp prompt, <code>CL-USER></code> |
76 | 44 | Marcus Pearce | |
77 | 44 | Marcus Pearce | h1. Troubleshooting |
78 | 1 | Marcus Pearce | |
79 | 52 | Marcus Pearce | h2. The lisp debugger |
80 | 52 | Marcus Pearce | |
81 | 52 | Marcus Pearce | If you find yourself with something like this: |
82 | 52 | Marcus Pearce | |
83 | 52 | Marcus Pearce | <pre> |
84 | 52 | Marcus Pearce | * (/ 1 0) |
85 | 52 | Marcus Pearce | |
86 | 52 | Marcus Pearce | debugger invoked on a DIVISION-BY-ZERO: |
87 | 52 | Marcus Pearce | arithmetic error DIVISION-BY-ZERO signalled |
88 | 52 | Marcus Pearce | Operation was SB-KERNEL::DIVISION, operands (1 0). |
89 | 52 | Marcus Pearce | |
90 | 52 | Marcus Pearce | Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. |
91 | 52 | Marcus Pearce | |
92 | 52 | Marcus Pearce | restarts (invokable by number or by possibly-abbreviated name): |
93 | 52 | Marcus Pearce | 0: [ABORT] Exit debugger, returning to top level. |
94 | 52 | Marcus Pearce | |
95 | 52 | Marcus Pearce | (SB-KERNEL::INTEGER-/-INTEGER 1 0) |
96 | 52 | Marcus Pearce | 0] |
97 | 52 | Marcus Pearce | </pre> |
98 | 52 | Marcus Pearce | |
99 | 52 | Marcus Pearce | Then you have typed something that lisp doesn't like. Be sure to read the information and the restart options and enter the appropriate restart number - usually this is the one labelled <code>[ABORT]</code> but, depending on the situation, <code>[CONTINUE]</code> may also be useful. |
100 | 52 | Marcus Pearce | |
101 | 53 | Marcus Pearce | h2. Reinstalling IDyOM |
102 | 47 | Marcus Pearce | |
103 | 1 | 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. |
104 | 47 | Marcus Pearce | |
105 | 52 | Marcus Pearce | h2. Using different SQL database systems |
106 | 47 | Marcus Pearce | |
107 | 47 | Marcus Pearce | You may use different kinds of databases. For example, to create an SQLite database called 'example.db' in directory <code>DIR</code>: |
108 | 47 | Marcus Pearce | |
109 | 44 | Marcus Pearce | <pre> |
110 | 44 | Marcus Pearce | (clsql:connect '("DIR/example.db") :if-exists :old :database-type :sqlite3) |
111 | 44 | Marcus Pearce | </pre> |
112 | 47 | Marcus Pearce | |
113 | 44 | Marcus Pearce | Alternatively, to connect to an existing local MySQL database: |
114 | 47 | Marcus Pearce | |
115 | 44 | Marcus Pearce | <pre> |
116 | 44 | Marcus Pearce | (clsql:connect '("localhost" "example-database" "username" "password") :if-exists :old :database-type :mysql) |
117 | 44 | Marcus Pearce | </pre> |
118 | 47 | Marcus Pearce | |
119 | 44 | Marcus Pearce | 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. |
120 | 44 | Marcus Pearce | |
121 | 47 | Marcus Pearce | h2. Problems loading foreign database libraries: |
122 | 44 | Marcus Pearce | |
123 | 44 | Marcus Pearce | Depending on how your system is configured, <code>clsql:connect</code> may give a "Couldn't load foreign libraries" error. In this case, you |
124 | 44 | Marcus Pearce | need to "tell CLSQL where it can find these libraries":http://clsql.b9.com/manual/appendix.html#foreignlibs, e.g. |
125 | 47 | Marcus Pearce | |
126 | 44 | Marcus Pearce | <pre> |
127 | 1 | Marcus Pearce | (clsql:push-library-path "/usr/local/mysql/lib/") |
128 | 1 | Marcus Pearce | </pre> |
129 | 1 | Marcus Pearce | |
130 | 47 | Marcus Pearce | 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. |