BuildingQuantumGisFromSource
Differences between revisions 15 and 17 (spanning 2 versions)
|
Size: 17661
Comment:
|
Size: 72
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| [[TableOfContents]] = Intro = /!\ '''Note''' If you find any errors in this document please feel free to change it or email your corrections to tim [at] linfiniti.com These notes are for if you want to build QGIS from source. One of the major aims here is to show how this can be done using binary packages for '''all''' dependencies - building only the core QGIS stuff from source. Currently the gdal grass raster driver needs to be built from source too - Ill revise these notes when a suitable package is available. I prefer this approach because it means we can leave the business of managing system packages to apt and only concern ourselves with coding QGIS! Note they are still under construction...and are continually evolving. /!\ '''Note:''' As of QGIS 0.8, Qt4.1 will be required to build QGIS. For now I am going to double up these notes to include this procedure. Once the 0.8 release is out I will remove legacy notes on building QGIS < 0.8. (TS) = QGIS 7.x and below = == QGIS Specific Requirements == Need to be running breezy... The packages qgis depends on to build are available in the "universe" component of Ubuntu. This is not activated by default, so you need to activate it: 1. Edit your /etc/apt/sources.list file. 2. Uncomment the all the lines starting with "deb" Now update your local sources database: {{{ sudo apt-get update }}} === Install package dependencies. === Even if you dont plan to code using kdevelop, its worth installing first because it will make sure you have the dependencies for a useable c++ compilation environment. Not all these packages are strictly needed for QGIS to build, but I find them convenient to have. If you are short on disk space or bandwidth, you may wish to be a little more selective. If you are unsure, just install them all, they cant cause any harm. {{{ sudo apt-get install kdevelop3 autoconf2.13 autobook autoconf-archive gnu-standards libqt3-mt-dev qt3-doc kdbg libarts1-dev kdelibs4-doc htdig doxygen kdoc sgmltools-lite linuxdoc-tools a2ps gv qt3-designer qt3-dev-tools kbabel graphviz c-cpp-reference g++ libtool flex bison automake1.8 checkinstall ccache libtool proj sqlite3 libsqlite3-dev libsqlite3-0 gsl-bin libgsl0 libgsl0-dev cvs }}} /!\ '''Note:''' This will prompt to install a whole heap of additional packages....go ahead its ok. Now you can install all the packages qgis requires to build: {{{ sudo apt-get build-dep qgis }}} === Setup ccache === You should also setup ccache to speed up compile times: {{{ cd /usr/local/bin sudo ln -s /usr/bin/ccache gcc sudo ln -s /usr/bin/ccache g++ }}} === Make sure the correct version of automake is being used === /!\ NOTE: If you installed kdevelop using the step above, ubuntu will have installed automake-1.4. This causes a problem when running the autogen.sh command below as it picks up the wrong copy of aclocal and automake. To circumvent this while still keeping both installed on your system do the following: {{{ sudo update-alternatives --config automake }}} Which will present you with something like: {{{ There are 4 alternatives which provide `automake'. Selection Alternative ----------------------------------------------- 1 /usr/bin/automake-1.6 2 /usr/bin/automake-1.8 *+ 3 /usr/bin/automake-1.4 4 /usr/bin/automake-1.9 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/automake-1.8' to provide `automake'. }}} == GRASS Specific Steps == === Install GRASS === /!\ If you don't need to build with GRASS support, you can skip this section. Now you can install grass from breezy: {{{ sudo apt-get install grass libgrass-dev }}} === Install GRASS raster driver for gdal === The apt package for this is currently not in ubuntu repositories. Here is one way to install it : {{{ cd /tmp wget http://ftp.uk.debian.org/debian/pool/main/libg/libgdal-grass/libgdal1-grass_1.2.6-1+b1_i386.deb sudo dpkg -i libgdal1-grass_1.2.6-1+b1_i386.deb }}} == Starting the compile == The qt files are not in the expected place, so you need to tell configure where to look for them. Or you can {{{export QTDIR=/usr/share/qt3}}}. Now you can proceed to the initial configure step: {{{ ./autogen.sh --enable-debug --prefix=/usr --with-qtdir=/usr/share/qt3 --with-grass=/usr/lib/grass }}} At the end of the autogen / configure process above you should see output like below, indicating that qgis is going to be built with all its bells & whistles... {{{ ========================================== qgis 0.6.0devel22 ------------------------------------------ GDAL/OGR : yes (Version 1.2.6) GEOS : yes (Version 2.0.1) PostgreSQL : yes (Version 7.4.7) GRASS : yes <-- may be no if you skipped grass step above! SPIT : yes Georeferencer : yes GPS/GPX : yes PROJ4 : yes SQLITE3 : yes Debug : yes Plugin dir : ${exec_prefix}/lib/qgis The binary will be installed in /usr/bin The build is using Qt in /usr/share/qt3 ------------------------------------------ Configure finished, type 'make' to build. }}} Now we go on to the compilation step. I like to time the build so I can get an idea of how long it takes in general. THe first time you build will take substantially longer as ccache will not receive many hits. Subsequent builds should be much faster! {{{ echo `date` > /tmp/qgis_compile.txt ; make ; echo `date` >> /tmp/qgis_compile.txt }}} Now install as a package for easy removal later: {{{ sudo ./doCheckInstall.sh }}} Using doCheckinstall.sh will do the equivalent of make install, but it will also make a debian package of QGIS, making it easy to compile on one machine and install on many... == Installing PostGIS to set up a GeoDatabase == /!\ '''Note''' this is not the most efficient way, just the way that I ended up doing it: {{{ sudo apt-get update sudo apt-get install postgresql-8.0 }}} Add the following two lines to your /etc/apt/sources.list: {{{ deb http://www.orcaware.com/packages/ubuntu/ breezy/ deb-src http://www.orcaware.com/packages/ubuntu/ breezy/ }}} Now install the postgis packages: {{{ sudo apt-get update sudo apt-get install postgresql-postgis-8.1 libpostgis1-pg8.1 libpostgis-common libpostgis-doc libpostgis-java libpostgis-utils-pg8.1 libpostgis1-examples libgeos2c2a }}} === Setting up a simple GeoDatabase === /!\ '''Disclaimer:''' These instructions are not to be considered a full security solution. They are probably ok for a desktop user who runs their own pc behind a firewall, but they are no substitute for a proper secure multiuser deployment of QGIS!!! Use at your own risk! /!\ '''Note:''' There are many ways to set up a database, this is not neccessarily the best, but it works for me. /!\ '''Note:''' These notes rely on features found in PostgreSQL 8.1. Using an older version will require modification of this procedure. {{{ sudo su - postgres createuser -s -d -r -l -i -P -E }}} You will be prompted to answer some simple questions: {{{ Enter name of role to add: foouser <-- use your normal user acct name here! Enter password for new role: Enter it again: CREATE ROLE }}} Now exit the postgres user (you should never need to use that account again as your new account has full admin rights over the database). {{{ exit }}} Now you should be back at your normal user account and you can create your first database: {{{ createdb -E UNICODE gis }}} You can verify your new database exists by using psql -l e.g.: {{{ psql -l List of databases Name | Owner | Encoding -----------+----------+---------- gis | foouser | UTF8 <-- thats our new db we just created postgres | postgres | LATIN1 template0 | postgres | LATIN1 template1 | postgres | LATIN1 (4 rows) }}} Now we need to install the PostGIS functions and so on into our new database: /!\ To be added {{{ }}} = Building QGIS Head on Qt4.1 = As I write this QGIS 0.8 is undergoing major changes and is very unstable. It is being ported to Qt4. Because of this I will describe how to install it alongside your existing QGIS 0.7.4 install (which you can install using the procedure described above. When 0.8 is released the above instructions will be removed. /!\ '''Note:''' /!\ '''Note: This part of the document is still under construction. ''' /!\ '''Note:''' == QGIS Specific Requirements == The packages qgis depends on to build are available in the "universe" component of Ubuntu. This is not activated by default, so you need to activate it: 1. Edit your /etc/apt/sources.list file. 2. Uncomment the all the lines starting with "deb" Also you will need to be running (K)Ubuntu 'dapper' in order for all dependencies to be met. Now update your local sources database: {{{ sudo apt-get update }}} === Install package dependencies. === Even if you dont plan to code using kdevelop, its worth installing first because it will make sure you have the dependencies for a useable c++ compilation environment. Not all these packages are strictly needed for QGIS to build, but I find them convenient to have. If you are short on disk space or bandwidth, you may wish to be a little more selective. If you are unsure, just install them all, they cant cause any harm. {{{ sudo apt-get install kdevelop3 autoconf2.13 autobook autoconf-archive gnu-standards libqt3-mt-dev qt3-doc kdbg libarts1-dev kdelibs4-doc htdig doxygen kdoc sgmltools-lite linuxdoc-tools a2ps gv qt3-designer qt3-dev-tools kbabel graphviz c-cpp-reference g++ libtool flex bison automake1.8 checkinstall ccache libtool proj sqlite3 libsqlite3-dev libsqlite3-0 gsl-bin libgsl0 libgsl0-dev cvs }}} /!\ '''Note:''' This will prompt to install a whole heap of additional packages....go ahead its ok. Now you can install all the packages qgis requires to build: {{{ sudo apt-get build-dep qgis }}} Install Qt4.1 from apt {{{ sudo apt-get install libqt4-core libqt4-debug libqt4-debug-dev libqt4-dev libqt4-gui libqt4-qt3support libqt4-sql qt4-designer qt4-designer qt4-dev-tools qt4-doc qt4-qtconfig uim-qt }}} Qt4 and Qt3 packages are designed to live alongside each other. This means that for example if you have them both installed you will have three qmake exe's: {{{ /usr/bin/qmake -> /etc/alternatives/qmake /usr/bin/qmake-qt3 /usr/bin/qmake-qt4 }}} The same applies to all other qt binaries. You will notice that the canonical 'qmake' is managed by apt alternatives, so before we start to build QGIS, we need to make Qt4 the default. To return Qt3 to default later you can use this same process: {{{ sudo update-alternatives --config qmake There are 2 alternatives which provide `qmake'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/qmake-qt3 2 /usr/bin/qmake-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/qmake-qt4' to provide `qmake'. sudo update-alternatives --config uic There are 2 alternatives which provide `uic'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/uic-qt3 2 /usr/bin/uic-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/uic-qt4' to provide `uic'. sudo update-alternatives --config designer There are 2 alternatives which provide `designer'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/designer-qt3 2 /usr/bin/designer-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/designer-qt4' to provide `designer'. sudo update-alternatives --config assistant There are 2 alternatives which provide `assistant'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/assistant-qt3 2 /usr/bin/assistant-qt4 sudo update-alternatives --config qtconfig There are 2 alternatives which provide `qtconfig'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/qtconfig-qt3 2 /usr/bin/qtconfig-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/qtconfig-qt4' to provide `qtconfig'. sudo update-alternatives --config moc There are 2 alternatives which provide `moc'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/moc-qt3 2 /usr/bin/moc-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/moc-qt4' to provide `moc'. sudo update-alternatives --config lupdate There are 2 alternatives which provide `lupdate'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/lupdate-qt3 2 /usr/bin/lupdate-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/lupdate-qt4' to provide `lupdate'. sudo update-alternatives --config lrelease There are 2 alternatives which provide `lrelease'. Selection Alternative ----------------------------------------------- *+ 1 /usr/bin/lrelease-qt3 2 /usr/bin/lrelease-qt4 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/lrelease-qt4' to provide `lrelease'. sudo update-alternatives --config linguist }}} === Setup ccache === You should also setup ccache to speed up compile times: {{{ cd /usr/local/bin sudo ln -s /usr/bin/ccache gcc sudo ln -s /usr/bin/ccache g++ }}} === Make sure the correct version of automake is being used === /!\ NOTE: If you installed kdevelop using the step above, ubuntu will have installed automake-1.4. This causes a problem when running the autogen.sh command below as it picks up the wrong copy of aclocal and automake. To circumvent this while still keeping both installed on your system do the following: {{{ sudo update-alternatives --config automake }}} Which will present you with something like: {{{ There are 4 alternatives which provide `automake'. Selection Alternative ----------------------------------------------- 1 /usr/bin/automake-1.6 2 /usr/bin/automake-1.8 *+ 3 /usr/bin/automake-1.4 4 /usr/bin/automake-1.9 Press enter to keep the default[*], or type selection number: 2 Using `/usr/bin/automake-1.8' to provide `automake'. }}} == GRASS Specific Steps == === Install GRASS === /!\ If you don't need to build with GRASS support, you can skip this section. Now you can install grass from breezy: {{{ sudo apt-get install grass libgrass-dev }}} === Install GRASS raster driver for gdal === The apt package for this is currently not in ubuntu repositories. Here is one way to install it : {{{ cd /tmp wget http://ftp.uk.debian.org/debian/pool/main/libg/libgdal-grass/libgdal1-grass_1.2.6-1_i386.deb sudo dpkg -i libgdal1-grass_1.2.6-1_i386.deb }}} == Starting the compile == The qt files are not in the expected place, so you need to tell configure where to look for them. Or you can {{{export QTDIR=/usr/share/qt3}}}. Now you can proceed to the initial configure step: {{{ ./autogen.sh --enable-debug --prefix=/usr --with-qtdir=/usr/share/qt3 --with-grass=/usr/lib/grass }}} At the end of the autogen / configure process above you should see output like below, indicating that qgis is going to be built with all its bells & whistles... {{{ ========================================== qgis 0.6.0devel22 ------------------------------------------ GDAL/OGR : yes (Version 1.2.6) GEOS : yes (Version 2.0.1) PostgreSQL : yes (Version 7.4.7) GRASS : yes <-- may be no if you skipped grass step above! SPIT : yes Georeferencer : yes GPS/GPX : yes PROJ4 : yes SQLITE3 : yes Debug : yes Plugin dir : ${exec_prefix}/lib/qgis The binary will be installed in /usr/bin The build is using Qt in /usr/share/qt3 ------------------------------------------ Configure finished, type 'make' to build. }}} Now we go on to the compilation step. I like to time the build so I can get an idea of how long it takes in general. THe first time you build will take substantially longer as ccache will not receive many hits. Subsequent builds should be much faster! {{{ echo `date` > /tmp/qgis_compile.txt ; make ; echo `date` >> /tmp/qgis_compile.txt }}} {{{ export QTDIR=/usr/local/Trolltech/Qt-4.0.1/ export PATH=$QTDIR/bin/:$PATH }}} {{{ ========================================== qgis 0.7.9devel2 ------------------------------------------ GDAL/OGR : yes (Version 1.2.6) GEOS : yes (Version 2.1.1) PostgreSQL : yes (Version 8.0.3) GRASS : yes SPIT : yes Georeferencer : yes GPS/GPX : yes PROJ4 : yes SQLITE3 : yes Python : no Debug : yes Plugin dir : ${exec_prefix}/lib/qgis The binary will be installed in /home/aps02ts/apps//bin }}} {{{ mkdir $HOME/apps ./autogen.sh --enable-debug --prefix=$HOME/apps/ --with-qtdir=/usr/local/Trolltech/Qt-4.0.1/ --with-grass=/usr/lib/grass && make && sudo make install }}} |
#REFRESH 0 http://help.ubuntu.com/community/BuildingQuantumGisFromSource |
BuildingQuantumGisFromSource (last edited 2008-08-06 16:21:21 by localhost)