X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/c93606387698109949990efd09e38f372349ff1a..cf462c15df14233e4ced9e1bad899c4a73903f37:/INSTALL.md?ds=sidebyside diff --git a/INSTALL.md b/INSTALL.md index 1215cc261..3d591c92d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,7 +24,6 @@ of packages required before you can get the various gems installed. * Ruby 2.7+ * PostgreSQL 9.1+ -* ImageMagick * Bundler (see note below about [developer Ruby setup](#rbenv)) * Javascript Runtime @@ -33,10 +32,10 @@ These can be installed on Ubuntu 20.04 or later with: ``` sudo apt-get update sudo apt-get install ruby2.7 libruby2.7 ruby2.7-dev \ - libmagickwand-dev libxml2-dev libxslt1-dev nodejs \ + libvips-dev libxml2-dev libxslt1-dev nodejs \ apache2 apache2-dev build-essential git-core firefox-geckodriver \ postgresql postgresql-contrib libpq-dev libsasl2-dev \ - imagemagick libffi-dev libgd-dev libarchive-dev libbz2-dev yarnpkg + libffi-dev libgd-dev libarchive-dev libbz2-dev yarnpkg sudo gem2.7 install bundler ``` @@ -48,11 +47,11 @@ For Fedora, you can install the minimum requirements with: ``` sudo dnf install ruby ruby-devel rubygem-rdoc rubygem-bundler rubygems \ - libxml2-devel js \ + libxml2-devel nodejs \ gcc gcc-c++ git \ - postgresql postgresql-server postgresql-contrib \ - perl-podlators ImageMagick libffi-devel gd-devel libarchive-devel \ - bzip2-devel nodejs-yarn + postgresql postgresql-server postgresql-contrib libpq-devel \ + perl-podlators libffi-devel gd-devel libarchive-devel \ + bzip2-devel nodejs-yarn vips-devel ``` If you didn't already have PostgreSQL installed then create a PostgreSQL instance and start the server: @@ -90,7 +89,7 @@ Installing other dependencies: * Install Homebrew from https://brew.sh/ * Install the latest version of Ruby: `brew install ruby` -* Install other dependencies: `brew install imagemagick libxml2 gd yarn pngcrush optipng pngquant jhead jpegoptim gifsicle svgo` +* Install other dependencies: `brew install libxml2 gd yarn pngcrush optipng pngquant jhead jpegoptim gifsicle svgo advancecomp vips` * Install Bundler: `gem install bundler` (you might need to `sudo gem install bundler` if you get an error about permissions - or see note below about [developer Ruby setup](#rbenv)) You will need to tell `bundler` that `libxml2` is installed in a Homebrew location. If it uses the system-installed one then you will get errors installing the `libxml-ruby` gem later on. @@ -102,8 +101,7 @@ bundle config build.libxml-ruby --with-xml2-config=/usr/local/opt/libxml2/bin/xm If you want to run the tests, you need `geckodriver` as well: ``` -brew tap homebrew/cask -brew cask install geckodriver +brew install geckodriver ``` Note that OS X does not have a /home directory by default, so if you are using the GPX functions, you will need to change the directories specified in config/application.yml. @@ -219,7 +217,7 @@ bundle exec rake db:migrate To ensure that everything is set up properly, you should now run: ``` -bundle exec rake test:db +bundle exec rails test:all ``` This test will take a few minutes, reporting tests run, assertions, and any errors. If you receive no errors, then your installation is successful. @@ -244,7 +242,7 @@ After installing this software, you may need to carry out some [configuration st # Installing compiled shared library database functions (optional) -There are special database functions required by a (little-used) API call, the migrations and diff replication. The former two are provided as *either* pure SQL functions or a compiled shared library. The SQL versions are installed as part of the recommended install procedure above and the shared library versions are recommended only if you are running a production server making a lot of `/changes` API calls or need the diff replication functionality. +There are special database functions required by a (little-used) API call, the migrations and diff replication. The former two are provided as *either* pure SQL functions or a compiled shared library. The SQL versions are installed as part of the recommended install procedure above and the shared library versions are recommended only if you are running a production server and need the diff replication functionality. If you aren't sure which you need, stick with the SQL versions. @@ -271,16 +269,13 @@ cd ../.. If you previously installed the SQL versions of these functions, we'll need to delete those before adding the new ones: ``` -psql -d openstreetmap -c "DROP FUNCTION IF EXISTS maptile_for_point" psql -d openstreetmap -c "DROP FUNCTION IF EXISTS tile_for_point" ``` Then we create the functions within each database. We're using `pwd` to substitute in the current working directory, since PostgreSQL needs the full path. ``` -psql -d openstreetmap -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'maptile_for_point' LANGUAGE C STRICT" psql -d openstreetmap -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '`pwd`/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT" -psql -d openstreetmap -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '`pwd`/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT" ``` # Ruby development install and versions (optional)