= How to Get Started with PostGIS 2.0 on Ubuntu 12.04 (''precise'') = UNDER CONSTRUCTION AS OF 5/5/12 2000 PT. This page is targeted at new users and will be written as simply as possible, with plenty of confirmation information. == Install PostGIS 2.0 == Installation requirements can be found at [wiki:UsersWikiPostgreSQLPostGIS PostGIS Support Matrix] Key libraries to focus on: GEOS, GDAL. Issues related to these two libraries will dictate the method you choose to use to install PostGIS 2.0. === Package-Based Installation using the existing Sharpie Oneiric PPA (Personal Package Archive) === '''The good news:''' following these steps *will* install PostGIS 2.0 successfully. Thanks, Sharpie!!! : ) {{{ sudo apt-get install python-software-properties sudo apt-add-repository ppa:sharpie/for-science sudo apt-add-repository ppa:sharpie/postgis-nightly sudo apt-get update sudo apt-get install postgresql-9.1-postgis }}} '''The bad news:''' it still installs older versions of libGDAL and libGEOS than are recommended in the [wiki:UsersWikiPostgreSQLPostGIS Support Matrix]. The packages above install will install libGDAL 1.7, instead of the recommended 1.9. First tricky thing: the existing Precise PPA for libGDAL 1.9 has been built to depend on libGEOS 3.3.2, and libGEOS 3.3.3 is listed as the preferred library in the Support Matrix. Second tricky thing: the way apt works, if you install everything from apt, you will still not be able to take advantage of these newer libraries. The only way to do that will be to install everything from source, which will make updating versions a little trickier down the road. This is your fork in the road: work with what you can get in the packaged install listed above, or move forward using the steps below. So, let's see if we can get all of the supporting libraries to the recommended versions. === Hack-ish Installation using a combination of packages and sources === ==== 1/4 Install PostgreSQL and other foundations ==== Several components are needed, which can either be built from source or installed from pre-built packages, as shown below. Install prerequisite packages using: {{{ sudo apt-get install build-essential postgresql-9.1 postgresql-server-dev-9.1 libxml2-dev proj libjson0-dev xsltproc docbook-xsl docbook-mathml gettext pgadmin3 }}} ==== 2/4 Build libGDAL1.9 ==== {{{ sudo apt-add-repository ppa:olivier-berten/geo sudo apt-get update sudo apt-get install libgdal-dev }}} Verify you have the latest version of libGDAL: {{{ $ gdal-config --version 1.9.0 }}} Looks good... what's up with libGEOS? {{{ $ geos-config --version 3.3.2 }}} Crud... not quite 3.3.3. On to the next step. ==== 3/4 Build GEOS 3.3.x ==== These are the instructions for building geos 3.3.3, based on instructions found elsewhere on trac.osgeo.org with some additions determined through trial and error: {{{ sudo apt-get install g++ ruby ruby1.8-dev swig swig2.0 ''--- added to other instructions, not installed by default in 12.04 & required for this make wget http://download.osgeo.org/geos/geos-3.3.3.tar.bz2 tar xvfj geos-3.3.3.tar.bz2 cd geos-3.3.3 ./configure make sudo make install cd .. }}} To confirm this works, do the following: {{{ $ geos-config --version 3.3.3 }}} ==== 4/4 Build PostGIS ==== {{{ wget http://postgis.refractions.net/download/postgis-2.0.0.tar.gz tar xfvz postgis-2.0.0.tar.gz cd postgis-2.0.0 ./configure --with-gui <--- not sure if the with-gui is required }}} The end of the configure processing should leave you with something that looks like this: {{{ }}} If this works, you should be ready to ready to finish your installation: {{{ make sudo make install sudo ldconfig sudo make comments-install }}} Lastly, enable the command-line tools to work from your shell: {{{ sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/shp2pgsql sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/pgsql2shp sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/raster2pgsql }}} == Connecting to your new database == There are two primary ways to connect to your new database from the localhost, one is to use the pgadmin tool, the other is to use the psql command line tool. Remote connections via IP are left as exercises for the more advanced user. In either case, you'll need to connect to the database using your 'postgres' user account, which was created during installation of PostgreSQL. What in the world is the password for this account? Who knows? I haven't been able to figure it out. Luckily, there are instructions on what to do at: https://help.ubuntu.com/community/PostgreSQL. An important distinction to make when getting started is that there are both a system user account named 'postgres' '''and''' a database account named 'postgres'. These are two separate accounts. The database allows psql-based command line connections from the localhost by system user accounts with the '''same username''' as the database account. Make sense? Bottom line is that you won't be able to do much at all until you set up the password for both of these accounts, separately. Note that some online documentation recommends setting up a system user account called 'postgres' with superuser privileges, but this is not a requirement for getting started. Next steps - start logged in as your user account {{{ $ sudo passwd postgres Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully $ sudo -s -u postgres postgres$ psql psql (9.1.3) Type "help" for help. postgres=# \password postgres Enter new password: Enter it again: postgres=# \q postgres$ }}} If you're going to want to connect to the PostgreSQL database using your own account (so you don't have to fool around with 'postgres'), you may want to do this: {{{ }}} Now, you should be able to If you connect through pgadmin, use the following attributes: * Name: this is an arbitrary name for your database server * Host: localhost * Port: 5432 [pre-filled as default] * Service: [leave this blank] * Maintenance DB: postgres [default] * Username: postgres * Password: whatever you set in the prior step * Store password: uncheck this (or not, based on your security paranoia level) * Colour: whatever suits your fancy * Group: Servers [default] == Spatially-enabling a database == With PostgreSQL 9.1, there are two methods to add PostGIS functionality to a database: using extensions, or using enabler scripts. === PostGIS Extension for PostgreSQL === Spatially enabling a database using extensions is a new feature of PostgreSQL 9.1. Connect to your database using pgAdmin or psql, and run the following commands. To add postgis with raster support: {{{ CREATE EXTENSION postgis; }}} To add topology support, a second extension can be created on the database: {{{ CREATE EXTENSION postgis_topology; }}} === Enabler Scripts / Template === Enabler scripts can be used to either build a template, or directly spatially enable a database. This method is older than the extension method, but is required if the raster support is not built. The following example creates a template, which can be re-used for creating multiple spatially-enabled databases. Or if you just want to make one spatially enabled database, you can modify the commands for your needs. PostGIS: {{{ sudo -u postgres createdb template_postgis sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis.sql sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/spatial_ref_sys.sql sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/postgis_comments.sql }}} with raster support: {{{ sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/rtpostgis.sql sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/raster_comments.sql }}} with topology support: {{{ sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/topology.sql sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/topology_comments.sql }}} == See also == * https://help.ubuntu.com/community/PostgreSQL * [wiki:UsersWikiPostGIS20Ubuntu1204 Install PostGIS 2.0 on Ubuntu 12.04 Precise Pangolin]