Skip to content

Instantly share code, notes, and snippets.

@springmeyer
Last active April 7, 2022 20:00
Show Gist options
  • Star 15 You must be signed in to star a gist
  • Fork 8 You must be signed in to fork a gist
  • Save springmeyer/2164897 to your computer and use it in GitHub Desktop.
Save springmeyer/2164897 to your computer and use it in GitHub Desktop.
install bleeding edge tilemill, nodejs, and mapnik
# First, clear out any old mapnik or node.js installs that might conflict
sudo apt-get purge libmapnik libmapnik-dev mapnik-utils nodejs
# Also clear out any old ppa's that might conflict
sudo rm /etc/apt/sources.list.d/*mapnik*
sudo rm /etc/apt/sources.list.d/*developmentseed*
sudo rm /etc/apt/sources.list.d/*chris-lea*
# add new ppa's
echo 'yes' | sudo apt-add-repository ppa:chris-lea/node.js
echo 'yes' | sudo apt-add-repository ppa:mapnik/v2.2.0
# update
sudo apt-get -y update
sudo apt-get -y upgrade
# install nodejs latest and a few tilemill deps
sudo apt-get install -y nodejs git build-essential libgtk2.0-dev \
libwebkitgtk-dev protobuf-compiler libprotobuf-lite7 libprotobuf-dev \
libgdal1-dev
# Now, either install mapnik latest from packages
# Or see file below for installing mapnik from source
# and skip this line
sudo apt-get install -y libmapnik-dev mapnik-utils
# set up postgres
POSTGRES_VERSION=9.1 # you may need to change this depending on ubuntu version
POSTGIS_VERSION="1.5" # you may need to change this depending on ubuntu version
sudo apt-get install -y postgresql postgresql-server-dev-$POSTGRES_VERSION postgresql-$POSTGRES_VERSION-postgis
sudo su postgres
# we lost variables, reset them
POSTGRES_VERSION=9.1 # you may need to change this
POSTGIS_VERSION="1.5" # you may need to change this
createuser <your user> # yes to super
createdb template_postgis
createlang -d template_postgis plpgsql # you may not need this
POSTGIS_PATH=`pg_config --sharedir`/contrib/postgis-$POSTGIS_VERSION
psql -d template_postgis -f $POSTGIS_PATH/postgis.sql
psql -d template_postgis -f $POSTGIS_PATH/spatial_ref_sys.sql
exit
# build tilemill
git clone https://github.com/mapbox/tilemill.git
cd tilemill
npm install
# then start it...
# if you are running a desktop server then just boot using all the defaults
./index.js # should open a window automatically, but you can also view at http://localhost:20009
# if you are running a headless/remote server then you can connect either
# by ssh connection forwarding or by opening up public access to the machine.
# for details on ssh forwarding see http://www.mapbox.com/tilemill/docs/guides/ubuntu-service/#ssh_connection_forwarding
# for details on viewing via the remote ip see http://www.mapbox.com/tilemill/docs/guides/ubuntu-service/#configuring_to_listen_for_public_traffic
# Installing Mapnik from source
# See https://github.com/mapnik/mapnik/wiki/UbuntuInstallation for more details
# Or, install proj4 latest and then mapnik from source:
wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip
# we use trunk instead for better threading support
svn co http://svn.osgeo.org/metacrs/proj/trunk/proj proj-trunk # at the time pre-release 4.8.0
cd proj-trunk/nad
unzip -o ../../proj-datumgrid-1.5.zip
cd ../
./configure
make
make install
# grab boost PPA for recent enough version
sudo add-apt-repository ppa:mapnik/boost
sudo apt-get update
sudo apt-get install -y libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libboost-thread-dev
# mapnik dev deps
sudo apt-get install -y g++ cpp \
libicu-dev \
libboost-filesystem-dev \
libboost-program-options-dev \
libboost-python-dev libboost-regex-dev \
libboost-system-dev libboost-thread-dev \
python-dev libxml2 libxml2-dev \
libfreetype6 libfreetype6-dev \
libjpeg-dev \
libltdl7 libltdl-dev \
libpng-dev \
libproj-dev \
libgeotiff-dev libtiff-dev libtiffxx0c2 \
libcairo2 libcairo2-dev python-cairo python-cairo-dev \
libcairomm-1.0-1 libcairomm-1.0-dev \
ttf-unifont ttf-dejavu ttf-dejavu-core ttf-dejavu-extra \
git build-essential python-nose clang \
libgdal1-dev python-gdal \
postgresql-9.1 postgresql-server-dev-9.1 postgresql-contrib-9.1 postgresql-9.1-postgis \
libsqlite3-dev
# mapnik sources
git clone http://github.com/mapnik/mapnik
cd mapnik
git checkout 2.3.x
./configure
make && sudo make install
@znseaman
Copy link

znseaman commented Aug 9, 2013

I have a few questions about installing the development version of TileMill on Ubuntu Precise 12.04. I'd like to color rasters using TileMill like blog post. There's a lot of TileMill dependencies, information on source install for Ubuntu Linux, packaging on Ubuntu, and nodejs versions. I'm fairly new to builds, source installs, and nodejs in general so a lot this is inherently intimidating.

With Postgres, if I already have Postgres 9.2 and PostGIS 2.0 installed, is it a matter of getting the database connected to the the template_postgis (POSTGIS_PATH=pg_config --sharedir/contrib/postgis-$POSTGIS_VERSION)? I'm mainly wondering if 9.2 with 2.0 is supported for TileMill.

When I run npm install (after installing mapnik from the latest packages), I receive this output:

zach@zach-HP-ENVY-14-Notebook-PC:~/tilemill$ npm install
npm http GET https://github.com/creationix/topcube/tarball/master
npm http GET https://github.com/mapbox/tilelive-mapnik/tarball/master
npm http GET https://registry.npmjs.org/generic-pool
npm http GET https://registry.npmjs.org/tilelive
npm http GET https://registry.npmjs.org/glob
npm http GET https://registry.npmjs.org/mbtiles
npm http GET https://registry.npmjs.org/bones
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/backbone-dirty
npm http GET https://registry.npmjs.org/JSV
npm http GET https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/sqlite3
npm http GET https://registry.npmjs.org/sphericalmercator
npm http GET https://registry.npmjs.org/passport-oauth
npm http GET https://registry.npmjs.org/wax/6.4.2
npm http GET https://registry.npmjs.org/passport
npm http GET https://github.com/mapbox/carto/tarball/master
npm http GET https://registry.npmjs.org/npm
npm http GET https://github.com/mapbox/millstone/tarball/master
npm http GET https://registry.npmjs.org/chrono
npm http GET https://registry.npmjs.org/step
npm http GET https://registry.npmjs.org/node-markdown
npm http GET https://registry.npmjs.org/modestmaps/3.3.5
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/semver
npm http GET https://registry.npmjs.org/jshint
npm http GET https://registry.npmjs.org/mocha
npm http GET https://registry.npmjs.org/difflet
npm http GET https://registry.npmjs.org/mapnik
npm http 304 https://registry.npmjs.org/mbtiles
npm http 304 https://registry.npmjs.org/generic-pool
npm http 304 https://registry.npmjs.org/tilelive
npm http 304 https://registry.npmjs.org/bones
npm http 304 https://registry.npmjs.org/backbone-dirty
npm http 304 https://registry.npmjs.org/JSV
npm http 304 https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/sphericalmercator
npm http 304 https://registry.npmjs.org/glob
npm http 304 https://registry.npmjs.org/passport-oauth
npm http 304 https://registry.npmjs.org/wax/6.4.2
npm http 304 https://registry.npmjs.org/chrono
npm http 304 https://registry.npmjs.org/step
npm http 200 https://registry.npmjs.org/sqlite3
npm http 200 https://registry.npmjs.org/passport
npm http 304 https://registry.npmjs.org/node-markdown
npm WARN deprecated node-markdown@0.1.1: highlight is deprecated in favor of "highliht.js"
npm http GET https://registry.npmjs.org/sqlite3/-/sqlite3-2.1.15.tgz
npm http 304 https://registry.npmjs.org/modestmaps/3.3.5
npm http 304 https://registry.npmjs.org/mkdirp
npm http 304 https://registry.npmjs.org/semver
npm http 200 https://github.com/creationix/topcube/tarball/master
npm http 200 https://registry.npmjs.org/optimist
npm http 200 https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/difflet
npm http 304 https://registry.npmjs.org/mapnik
npm http 200 https://registry.npmjs.org/mocha
npm http 200 https://registry.npmjs.org/sqlite3/-/sqlite3-2.1.15.tgz
npm http 200 https://registry.npmjs.org/jshint
npm http 200 https://github.com/mapbox/tilelive-mapnik/tarball/master
npm http 200 https://github.com/mapbox/carto/tarball/master
npm http 200 https://github.com/mapbox/millstone/tarball/master
npm http 200 https://registry.npmjs.org/npm
npm http GET https://registry.npmjs.org/npm/-/npm-1.3.7.tgz
npm http 200 https://registry.npmjs.org/npm/-/npm-1.3.7.tgz
npm WARN engine bones@1.3.27: wanted: {"node":"0.4 || 0.6 || 0.8"} (current: {"node":"v0.10.15","npm":"1.3.5"})
npm WARN engine tilelive@4.5.0: wanted: {"node":">= 0.6.0 && < 0.9.0"} (current: {"node":"v0.10.15","npm":"1.3.5"})
npm WARN engine mapnik@1.1.2: wanted: {"node":">= 0.6.13 && < 0.13.0"} (current: {"node":"v0.10.15","npm":"1.3.5"})
npm WARN engine sqlite3@2.1.15: wanted: {"node":">= 0.6.13 && < 0.11.0"} (current: {"node":"v0.10.15","npm":"1.3.5"})
npm WARN engine tilelive-mapnik@0.5.0: wanted: {"node":">= 0.6.13 && < 0.13.0"} (current: {"node":"v0.10.15","npm":"1.3.5"})
npm http GET https://registry.npmjs.org/underscore
npm http GET https://registry.npmjs.org/dirty
npm http GET https://registry.npmjs.org/deep-is
npm http GET https://registry.npmjs.org/pkginfo
npm http GET https://registry.npmjs.org/oauth
npm http GET https://registry.npmjs.org/charm
npm http GET https://registry.npmjs.org/traverse
npm http GET https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/dirty
npm http 304 https://registry.npmjs.org/charm
npm http 304 https://registry.npmjs.org/traverse
npm http 304 https://registry.npmjs.org/pause/0.0.1
npm http 304 https://registry.npmjs.org/pkginfo
npm http 304 https://registry.npmjs.org/deep-is
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/oauth

topcube@0.2.0 install /home/zach/tilemill/node_modules/topcube
node-gyp rebuild

npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/argsparser
npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/inherits
npm http 304 https://registry.npmjs.org/argsparser
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/lru-cache
npm http GET https://github.com/mapnik/mapnik-reference/archive/master.tar.gz
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/xml2js
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http GET https://registry.npmjs.org/aws-sign
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/cookie-jar
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/hawk
make: Entering directory `/home/zach/tilemill/node_modules/topcube/build'
CXX(target) Release/obj.target/topcube/src/topcube.o
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/optimist
npm http 304 https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/aws-sign
npm http 200 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/cookie-jar
npm http 304 https://registry.npmjs.org/node-uuid
npm http 304 https://registry.npmjs.org/xml2js
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/hawk
npm http 200 https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/jquery
npm http GET https://registry.npmjs.org/mirror
npm http GET https://registry.npmjs.org/backbone/0.3.3
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/jquery
npm http 304 https://registry.npmjs.org/mirror
npm http 304 https://registry.npmjs.org/backbone/0.3.3
npm http GET https://registry.npmjs.org/combined-stream
npm http 200 https://github.com/mapnik/mapnik-reference/archive/master.tar.gz
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/growl
npm http GET https://registry.npmjs.org/glob/3.2.1
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/diff/1.0.2
npm http GET https://registry.npmjs.org/ms/0.3.0
npm http GET https://registry.npmjs.org/jade/0.26.3
npm http GET https://registry.npmjs.org/async
npm http 304 https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/assert-plus/0.1.2
npm http GET https://registry.npmjs.org/ctype/0.5.2
npm http GET https://registry.npmjs.org/asn1/0.1.11
npm http 200 https://registry.npmjs.org/debug
npm http 200 https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/diff/1.0.2
npm http 304 https://registry.npmjs.org/ms/0.3.0
npm http 304 https://registry.npmjs.org/jade/0.26.3
npm http 304 https://registry.npmjs.org/growl
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/glob/3.2.1
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http 304 https://registry.npmjs.org/assert-plus/0.1.2
npm http 304 https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/uglify-js/1.0.2
npm http GET https://registry.npmjs.org/cryptiles
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/sntp
npm http 200 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/uglify-js/1.0.2
npm http 304 https://registry.npmjs.org/hoek
npm http GET https://registry.npmjs.org/mime/1.2.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.0
npm http GET https://registry.npmjs.org/connect
npm http 304 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/mkdirp/0.3.0
npm http 304 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/htmlparser
npm http GET https://registry.npmjs.org/jsdom
npm http 200 https://registry.npmjs.org/mime/1.2.4
npm http GET https://registry.npmjs.org/mime/-/mime-1.2.4.tgz
npm http 200 https://registry.npmjs.org/connect
npm http 200 https://registry.npmjs.org/htmlparser
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http 200 https://registry.npmjs.org/mime/-/mime-1.2.4.tgz
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
npm http 200 https://registry.npmjs.org/jsdom
npm http GET https://registry.npmjs.org/jsdom/-/jsdom-0.8.3.tgz
npm http 200 https://registry.npmjs.org/jsdom/-/jsdom-0.8.3.tgz
npm http GET https://registry.npmjs.org/formidable
npm http GET https://registry.npmjs.org/minimist
npm http GET https://registry.npmjs.org/eio
npm http 304 https://registry.npmjs.org/minimist
npm http 200 https://registry.npmjs.org/formidable
npm http 304 https://registry.npmjs.org/eio
npm WARN engine eio@0.2.1: wanted: {"node":">= 0.6.13 && < 0.11.0"} (current: {"node":"v0.10.15","npm":"1.3.5"})
LINK(target) Release/topcube

eio@0.2.1 install /home/zach/tilemill/node_modules/tilelive-mapnik/node_modules/eio
node-gyp rebuild

sqlite3@2.1.15 install /home/zach/tilemill/node_modules/sqlite3
node-gyp rebuild

npm http GET https://registry.npmjs.org/mapnik-vector-tile
LINK(target) Release/topcube: Finished
ACTION binding_gyp_action_after_build_target_move_topcube bin/topcube
TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory /home/zach/tilemill/node_modules/topcube/build' make: Entering directory/home/zach/tilemill/node_modules/tilelive-mapnik/node_modules/eio/build'
CXX(target) Release/obj.target/eio/src/eio.o
npm http 304 https://registry.npmjs.org/mapnik-vector-tile
make: Entering directory `/home/zach/tilemill/node_modules/sqlite3/build'
ACTION deps_sqlite3_gyp_action_before_build_target_unpack_sqlite_dep Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c
TOUCH Release/obj.target/deps/action_before_build.stamp
CC(target) Release/obj.target/sqlite3/gen/sqlite-autoconf-3071700/sqlite3.o
npm http GET https://registry.npmjs.org/htmlparser2
npm http GET https://registry.npmjs.org/nwmatcher
npm http GET https://registry.npmjs.org/cssstyle
npm http GET https://registry.npmjs.org/xmlhttprequest
npm http GET https://registry.npmjs.org/contextify
npm http GET https://registry.npmjs.org/cssom

mapnik-vector-tile@0.3.2 install /home/zach/tilemill/node_modules/mapnik/node_modules/mapnik-vector-tile
protoc -Iproto/ --cpp_out=./src/ ./proto/vector_tile.proto

mapnik@1.1.2 install /home/zach/tilemill/node_modules/mapnik
node-gyp rebuild

npm http 304 https://registry.npmjs.org/xmlhttprequest
npm http 304 https://registry.npmjs.org/cssstyle
npm http 304 https://registry.npmjs.org/nwmatcher
npm http 304 https://registry.npmjs.org/contextify
npm http 304 https://registry.npmjs.org/cssom
npm http 200 https://registry.npmjs.org/htmlparser2
npm http GET https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.1.6.tgz
make: Entering directory /home/zach/tilemill/node_modules/mapnik/build' CXX(target) Release/obj.target/_mapnik/src/node_mapnik.o npm http 200 https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.1.6.tgz SOLINK_MODULE(target) Release/obj.target/eio.node SOLINK_MODULE(target) Release/obj.target/eio.node: Finished COPY Release/eio.node ACTION binding_gyp_action_after_build_target_move_node_module lib/eio.node TOUCH Release/obj.target/action_after_build.stamp make: Leaving directory/home/zach/tilemill/node_modules/tilelive-mapnik/node_modules/eio/build'
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/domhandler
npm http GET https://registry.npmjs.org/domutils
npm http GET https://registry.npmjs.org/domelementtype
npm http GET https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/bindings
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c: In function ‘porter_stemmer’:
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127208:41: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127212:39: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127225:35: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127230:39: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127236:41: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127241:39: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127250:38: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127257:37: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127300:39: warning: value computed is not used [-Wunused-value]
Release/obj/gen/sqlite-autoconf-3071700/sqlite3.c:127320:34: warning: value computed is not used [-Wunused-value]
npm http GET https://registry.npmjs.org/srs
npm http GET https://registry.npmjs.org/underscore
npm http GET https://github.com/springmeyer/node-zipfile/tarball/adm-zip
npm http GET https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/domhandler
npm http 304 https://registry.npmjs.org/domutils
npm http 304 https://registry.npmjs.org/domelementtype
npm http 304 https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/request

contextify@0.1.6 install /home/zach/tilemill/node_modules/bones/node_modules/jquery/node_modules/jsdom/node_modules/contextify
node-gyp rebuild

npm http 200 https://registry.npmjs.org/readable-stream
npm http 200 https://registry.npmjs.org/srs
npm http GET https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.15.tgz
make: Entering directory /home/zach/tilemill/node_modules/bones/node_modules/jquery/node_modules/jsdom/node_modules/contextify/build' CXX(target) Release/obj.target/contextify/src/contextify.o npm http 200 https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.15.tgz npm http 200 https://github.com/springmeyer/node-zipfile/tarball/adm-zip SOLINK_MODULE(target) Release/obj.target/contextify.node SOLINK_MODULE(target) Release/obj.target/contextify.node: Finished COPY Release/contextify.node make: Leaving directory/home/zach/tilemill/node_modules/bones/node_modules/jquery/node_modules/jsdom/node_modules/contextify/build'
npm http GET https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/adm-zip

srs@0.3.0 install /home/zach/tilemill/node_modules/millstone/node_modules/srs
node-gyp rebuild

npm http 304 https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/adm-zip
make: Entering directory /home/zach/tilemill/node_modules/millstone/node_modules/srs/build' CXX(target) Release/obj.target/_srs/src/_srs.o SOLINK_MODULE(target) Release/obj.target/_srs.node /usr/bin/ld: cannot find -lepsilon collect2: ld returned 1 exit status make: *** [Release/obj.target/_srs.node] Error 1 make: Leaving directory/home/zach/tilemill/node_modules/millstone/node_modules/srs/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Linux 3.5.0-37-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/zach/tilemill/node_modules/millstone/node_modules/srs
gyp ERR! node -v v0.10.15
gyp ERR! node-gyp -v v0.10.6
gyp ERR! not ok
npm ERR! weird error 1
CXX(target) Release/obj.target/_mapnik/src/mapnik_map.o
CXX(target) Release/obj.target/_mapnik/src/mapnik_color.o
CXX(target) Release/obj.target/_mapnik/src/mapnik_geometry.o
AR(target) Release/obj.target/deps/sqlite3.a
COPY Release/sqlite3.a
CXX(target) Release/obj.target/node_sqlite3/src/database.o
CXX(target) Release/obj.target/node_sqlite3/src/node_sqlite3.o
CXX(target) Release/obj.target/node_sqlite3/src/statement.o
SOLINK_MODULE(target) Release/obj.target/node_sqlite3.node
SOLINK_MODULE(target) Release/obj.target/node_sqlite3.node: Finished
COPY Release/node_sqlite3.node
ACTION binding_gyp_action_after_build_target_move_node_module lib/node_sqlite3.node
TOUCH Release/obj.target/action_after_build.stamp
make: Leaving directory /home/zach/tilemill/node_modules/sqlite3/build' CXX(target) Release/obj.target/_mapnik/src/mapnik_feature.o CXX(target) Release/obj.target/_mapnik/src/mapnik_image.o CXX(target) Release/obj.target/_mapnik/src/mapnik_image_view.o CXX(target) Release/obj.target/_mapnik/src/mapnik_grid.o CXX(target) Release/obj.target/_mapnik/src/mapnik_grid_view.o CXX(target) Release/obj.target/_mapnik/src/mapnik_js_datasource.o CXX(target) Release/obj.target/_mapnik/src/mapnik_memory_datasource.o CXX(target) Release/obj.target/_mapnik/src/mapnik_palette.o CXX(target) Release/obj.target/_mapnik/src/mapnik_projection.o CXX(target) Release/obj.target/_mapnik/src/mapnik_proj_transform.o CXX(target) Release/obj.target/_mapnik/src/mapnik_layer.o CXX(target) Release/obj.target/_mapnik/src/mapnik_datasource.o CXX(target) Release/obj.target/_mapnik/src/mapnik_featureset.o CXX(target) Release/obj.target/_mapnik/src/mapnik_expression.o CXX(target) Release/obj.target/_mapnik/src/mapnik_query.o CXX(target) Release/obj.target/_mapnik/src/mapnik_cairo_surface.o CXX(target) Release/obj.target/_mapnik/src/mapnik_vector_tile.o CXX(target) Release/obj.target/_mapnik/node_modules/mapnik-vector-tile/src/vector_tile.pb.o SOLINK_MODULE(target) Release/obj.target/_mapnik.node SOLINK_MODULE(target) Release/obj.target/_mapnik.node: Finished COPY Release/_mapnik.node ACTION binding_gyp_action_after_build_target_generate_setting lib/mapnik_settings.js ACTION binding_gyp_action_after_build_target_move_node_module lib/_mapnik.node TOUCH Release/obj.target/action_after_build.stamp make: Leaving directory/home/zach/tilemill/node_modules/mapnik/build'
npm ERR! not ok code 0

This error message implies there's something wrong with node-gyp but I'm less sure what to do after several Google searches later. I'm willing to bet my version of nodejs isn't compatible but this is just an idea.

How would go about solving this issue? What would you suggest to be the best method for installing the development version of TileMill in Ubuntu Precise 12.04?

Cheers from Mexico City,

Zach

@EvanMisshula
Copy link

I am having trouble with mapnik from sources.

src/libmapnik.so: undefined reference to pj_ctx_alloc' src/libmapnik.so: undefined reference topj_ctx_free'
src/libmapnik.so: undefined reference to `pj_init_plus_ctx'
collect2: error: ld returned 1 exit status
scons: *** [demo/c++/rundemo] Error 1
scons: building terminated because of errors.
make: *** [mapnik] Error 2

I will update this Gist when I fix it.

@GeoTimber
Copy link

Just tried this on a new ubuntu 12.04 server and works like a charm, I skipped all the mapnik packages as they seem to come as a node now ( I read somewhere :) ).

@stevage
Copy link

stevage commented Jul 29, 2014

Building on Trusty this mostly still seems to work. Two minor changes:

  1. Replace 'nodejs' with 'nodejs-legacy'. (Installing 'nodejs' now gives an executable called 'nodejs' which probably breaks everything, whereas nodejs-legacy gives one called 'node').
  2. Remove libprotobuf-lite7. I don't understand why, but apt-get couldn't find it for me. Installed fine without it.

@bertbalcaen
Copy link

Got this working on Ubuntu 10.14 with these modifications:

  • nodejs-legacy instead of node (requires uninstalling node)
  • so don't add the ppa:chris-lea/node.js, use nodejs-legacy
  • using Postgress 9.4-rc1

Haven't got topcube working yet, but that's not strictly required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment