diff --git a/INSTALL.md b/INSTALL.md index 335be54..ac0907f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,23 +1,11 @@ -Vervis is still in early development. These instructions may be incomplete -and/or slightly outdated. At the time of writing, you can get a running Vervis -instance if you follow the steps below. +Vervis is still in early development and the build process gets updates once in +a while, but this file tries to keep up and list the latest instructions for +running a Vervis instance. -Check the version of OpenSSL installed on your system. For example: +At the time of writing, you can get a running Vervis instance if you follow the +steps below. - $ apt show openssl - -Currently Vervis is using a slightly old software configuration, and until I -fix that, it doesn't build with OpenSSL 1.1 and needs the older 1.0 or 1.0.1 -version. If your distro has 1.1, see if you can grab 1.0 or 1.0.1 in some way, -either through the distro package or by downloading OpenSSL manually from its -website, or some alternative package manager such as GNU Guix. - -UPDATE: If you proceed with the steps below and `stack build` throws an error -while building `HsOpenSSL`, there's a chance you can still use OpenSSL 1.1 -successfully if you run these commands: - - $ stack build HsOpenSSL --flag HsOpenSSL:-fast-bignum - $ stack build +# (1) System libraries Install dependency library development packages. It's very likely you already have them all installed, and if you're missing some, the build process will @@ -27,14 +15,18 @@ building, and let me know. - PostgreSQL client library - ZLib +- libssl On Debian based distros, installation can be done like this: - $ sudo apt install libpq-dev zlib1g-dev + $ sudo apt install libpq-dev zlib1g-dev libssl-dev + +# (2) The Stack build tool Install stack. To install stack, go to its [website](https://haskellstack.org) -and follow the instructions. If you have some old version, such as one -installed from FPComplete's old debian repo, you may need to upgrade it. +and follow the instructions. + +# (3) Version control systems Darcs and Git Install Darcs. You can grab it from your distro, e.g.: @@ -45,45 +37,18 @@ can install it from a distro package too, e.g.: $ sudo apt install git +# (4) The Vervis source code + Clone the Vervis repo: $ darcs clone https://dev.angeley.es/s/fr33domlover/r/vervis $ cd vervis -Install GHC. Unless you prefer to use a distro package or PPA or some other -source, the easiest way is to install via stack: +Clone dependency libraries: - $ stack setup + $ ./clone-deps.sh -Some of the dependency libraries need to be manually downloaded. Either because -I've written them and haven't released yet, or because they have unreleased -changes, or because I'm using a patched version of some library and the patch -hasn't found its way upstream. - -In the `stack.yaml` file, under the `packages` field, there is a list of such -libraries. While `stack` supports fetching dependencies from Git repositories, -it doesn't support Darcs (if that changes and I haven't noticed, let me know!), -so we need to download them by ourselves. A line in the `packages` list that -looks like this needs manual download: - -` - '../some-library-name'` - -These details change often because of all the unreleased libraries and patches, -so until there are sane releases for everything, the instructions here aren't -always up to date. Basically it works like this: - -- Those extra repos should be found at the - [Vervis project page](https://dev.angeley.es/s/fr33domlover/p/vervis) -- If something is missing there, try my - [Darcs Hub page](https://hub.darcs.net/fr33domlover) -- Use `darcs clone` to grab the library source code - -As of May 24, 2018, you can grab these libraries by simply running the -[`clone-deps.sh`](./clone-deps.sh) script. - -Update `stack.yaml` to specify the paths in the `packages` section if needed: - - $ vim stack.yml +# (5) Configuration and database Generate a new SSH key with a blank password: @@ -118,10 +83,26 @@ settings. $ cp config/settings-default.yaml config/settings.yml $ vim config/settings.yml -Build. +# (6) GHC Haskell compiler + +`stack` can automatically install the correct GHC version for you, in an +isolated location that doesn't conflict with any system packages. Unless you +have a specific reason to get GHC in some other way, getting it through `stack` +is recommended. + +If you'd like to install GHC manually (from a distro package, from a PPA, +etc.), this is the time to do so. And I trust you to arrange things such that +`stack` uses your manually download GHC. Otherwise, simply proceed to the next +step. + +# (7) Build Vervis + +Build. This will also automatically install GHC. $ stack build +# (8) Development and deployment + For convenience, at least on actual deployments, you may wish to run the Vervis SSH server on port 22, so that people don't have to specify a custom port. For that to work, the user that runs the Vervis server needs to get permission to @@ -141,3 +122,7 @@ Browse to `http://localhost:3000` and have fun! `yesod devel` is another way to run the application, useful for rapid development, but I haven't been using it and I'm not sure it works, possibly I broke something along the way. But feel free to try! + +I have a little script for deploying Vervis on my server. I just haven't +published it yet and haven't explained how it works. If you're interested, ask +me about it, and it will motivate me to write about it sooner :)