Apache CouchDB README.Windows ============================== For a high-level guide to Microsoft Windows. Troubleshooting --------------- There is a troubleshooting guide: http://wiki.apache.org/couchdb/Troubleshooting There is a wiki for general documentation: http://wiki.apache.org/couchdb/ And some Windows-specific tips: http://wiki.apache.org/couchdb/Quirks_on_Windows There are collection of friendly mailing lists: http://couchdb.apache.org/community/lists.html Please work through these in order if you experience any problems. Dependencies ------------ You will need the following installed: * Erlang OTP (>=14B01, =4.*) (http://icu-project.org/) * OpenSSL (>=0.9.8r) (http://www.openssl.org/) * Mozilla SpiderMonkey (=1.8.5) (http://www.mozilla.org/js/spidermonkey/) * libcurl (>=7.20) (http://curl.haxx.se/libcurl/) * Cygwin (http://www.cygwin.com/) * Microsoft SDK 7.0 or 7.1 (http://www.microsoft.com/en-us/download/details.aspx?id=8279) * Python (>= 2.68) for docs (http://python.org/) * Python Sphinx (>=1.1.3) (http://pypi.python.org/pypi/Sphinx) General Notes ------------- * When installing Cygwin, be sure to select all the `development` tools. * When installing Erlang, you must build it from source. * The CouchDB build requires a number of the Erlang build scripts. * All dependent libraries should be built with the same version of microsoft SDK. * Do not try to link against libraries built with, or included in, Cygwin or MingW. They are not compatible with the Erlang/OTP or CouchDB build scripts. * ICU version 4.6 and later will build cleanly using MSBuild. * Python and Sphinx are optional for building the online documentation. Use cygwin-provided Python and install Sphinx via easy_install or pip. Further information is here http://pypi.python.org/pypi/setuptools#id4 Setting Up Cygwin ----------------- Before starting any Cygwin terminals, run: set CYGWIN=nontsec To set up your environment, run: [VS_BIN]/vcvars32.bat Replace [VS_BIN] with the path to your Visual Studio `bin` directory. You must check that: * The `which link` command points to the Microsoft linker. * The `which cl` command points to the Microsoft compiler. * The `which mc` command points to the Microsoft message compiler. * The `which mt` command points to the Microsoft manifest tool. * The `which nmake` command points to the Microsoft make tool. If you do not do this, the build may fail due to Cygwin ones found in `/usr/bin` being used instead. Building Erlang --------------- You must include Win32 OpenSSL, built statically from source. Use exactly the same version as required by the Erlang/OTP build process. However, you can skip the GUI tools by running: echo "skipping gs" > lib/gs/SKIP echo "skipping ic" > lib/ic/SKIP echo "skipping jinterface" > lib/jinterface/SKIP Follow the rest of the Erlang instructions as described. After running: ./otp_build release -a You should run: ./release/win32/Install.exe -s This will set up the release/win32/bin directory correctly. The CouchDB installation scripts currently write their data directly into this location. To set up your environment for building CouchDB, run: eval `./otp_build env_win32` To set up the `ERL_TOP` environment variable, run: export ERL_TOP=[ERL_TOP] Replace `[ERL_TOP]` with the Erlang source directory name. Remember to use `/cygdrive/c/` instead of `c:/` as the directory prefix. To set up your path, run: export PATH=$ERL_TOP/release/win32/erts-5.8.5/bin:$PATH If everything was successful, you should be ready to build CouchDB. Relax. Building CouchDB ---------------- Note that `win32-curl` is only required if you wish to run the developer tests. The documentation step may be skipped using `--disable-docs` if you wish. Once you have satisfied the dependencies you should run: ./configure \ --with-js-include=/cygdrive/c/path_to_spidermonkey_include \ --with-js-lib=/cygdrive/c/path_to_spidermonkey_lib \ --with-win32-icu-binaries=/cygdrive/c/path_to_icu_binaries_root \ --with-erlang=$ERL_TOP/release/win32/usr/include \ --with-win32-curl=/cygdrive/c/path/to/curl/root/directory \ --with-openssl-bin-dir=/cygdrive/c/openssl/bin \ --with-msvc-redist-dir=/cygdrive/c/dir/with/vcredist_platform_executable \ --disable-init \ --disable-launchd \ --prefix=$ERL_TOP/release/win32 This command could take a while to complete. If everything was successful you should see the following message: You have configured Apache CouchDB, time to relax. Relax. To install CouchDB you should run: make install If everything was successful you should see the following message: You have installed Apache CouchDB, time to relax. Relax. To build the .exe installer package, you should run: make dist Alternatively, you may run CouchDB directly from the build tree, but to avoid any contamination do not run `make dist` after this. First Run --------- You can start the CouchDB server by running: $ERL_TOP/release/win32/bin/couchdb.bat When CouchDB starts it should eventually display the following message: Apache CouchDB has started, time to relax. Relax. To check that everything has worked, point your web browser to: http://127.0.0.1:5984/_utils/index.html From here you should run the verification tests in Firefox.