Xastir on Fedora

From Carc-wiki
Jump to: navigation, search
Logo fedoralogo.png

Xastir on Fedora - a "HowTo"

My distro of choice is Fedora - so naturally that's what I'm familiar with and will write about for this "HowTo". However, this "HowTo" may well apply to other distributions.

Distribution packages

Xastir is included in Fedora! If you want, you can use Fedora's package management tools to download and install a pre-compiled package. This will ensure what you have works. But it may not be the most current available or have the features/functions you want. For that, you'll have to get the Xastir source code and compile it yourself. The rest of this "HowTo" will give you step by step how to accomplish that.

The easiest way to get Xastir is to install it from the repositories. The Fedora Hams Interest Group has done a very good job getting making many ham applications available for Fedora - not just Xastir.

To install from the repositories - with root privileges - just run:

yum install xastir

All pre-requisites and dependencies will automagically be taken care of for you. This also ensures that your nightly yum updates will include Xastir as new versions become available.

For many new Linux users, this is the preferred installation method

Compilling from Source

NOTE: All of the commands and directions in this 'HowTo' assume you're using a terminal.
Yes, command line (CLI). Even though Xastir is a GUI application, to install from source, you *must* install from a command line. If you'll be using the Xastir RPM from the Fedora repositories, you can use your preferred graphical tools to install it. But, if you were doing that, you'd already have that done and not be reading this far down the page <g>.

A note about root privileges

Many of the commands used to compile, install or check for software packages require 'root' privileges. There are commonly 3 ways to gain such permissions.

  1. Log in as root
  2. Elevate yourself to root
  3. Use root privileges for a single command
  • First is done by, obviously, logging in as and being root. This is the least desireable method. It's possible to - inadvertently - really screw up your system. If you were to say, run rpm -fr * you'd delete everything in the current directory and below - with no recourse or recovery. Do this in your root '/' or '/bin' directory and you've just destroyed your installed system. It also opens up an opportunity (even if slight) for evil-hacker-doods to use your root access for their own nefarious purposes.
  • Second is by using the su command. First you log into your system as a user, then execute 'su' to elevate yourself to root. This is basically the same as logging in as root - but when you're done doing 'root things', you can type exit and return to a normal user. It's considered a 'bit' safer, but those with an opinion say it's not much better.
  • Third is by using 'sudo' (see man sudo for details). This takes a bit of configuration. First you need to add your user to the 'wheel' group (edit /etc/groups) and edit the file /etc/sudoers. Once this is done, you can be logged in as a regular user and give 'sudo' as a prefix to any command. That command will be executed with root privileges and when it's done, you're immediately returned to 'normal' user status. Advantage of this is you don't have to 'exit' to get back to a normal user. But, you do have to add it to every command you want to run with root privileges.

For example, you can run:
sudo rm -fr /
And achieve the same level of system destruction as in the first method. DO NOT DO THIS!

Using sudo is the method suggested by most. In fact, on many modern distributions - it's the only way to do it as they essentially hide the root user.
Like so many things FOSS and Linux - what you use is up to you. It's your choice. One of the beauty's of FOSS is you HAVE a choice!

For this "HowTo", I'll assume you have sudo configured. Configuring sudo is a bit beyond what I've planned here.
If you don't have it ready, you can just use:

su -

Followed by your root password and voila - you're running as root, with root's environment (that's what the - does). When you're done doing "root things", don't forget to type 'exit' and return to normal user status! For the combined CLI commands below - just break them up into individual commands.

And yes - doing normal user type things as root really is a bad idea.

Is your system ready?

This "HowTo" assumes your system has a working Internet connection.

Development Tools

You should first ensure your Fedora installation includes the basic tools required to compile applications from source. You can determine if your system has these tools by running:

yum grouplist

This will list what's available and what's been installed on your system. You're looking for:

# Development Libraries
# Development Tools
# X Software Development

If you find you're missing any of these groups, just install them with

yum groupinstall "<group name>"

So, to install the X Software Development group, you'd run

yum groupinstall "X Software Development"

Yes - you need the quotes.

Getting the source and your working directory

The Xastir Group uses the Concurant Versioning System (CVS) on the Sourceforge servers to store and maintain the Xastir code tree. We'll use the cvs command to retrieve the most recent Xastir code from Sourceforge.
You can just 'copy and paste' the commands below into a terminal window.

First, decide where in your file system you want to store your Xastir code tree. Many users just use a sub-dir in their home directory. But there are other places different traditions suggest. Where you store your code tree is relatively un-important and is up to personal choice.

I use my home directory: /home/<user>
those "less than" and "greater than" symbols are often used to show a command variable.
In this case <user> is whatever user I'm currently logged in as.

Since I'm using my own, home directory, I'll give the command:

cd ~

that "~" is called a "tilde" and is the symbol for "my home directory" This ensures I'm in my home directory and I'll then run:

cvs -d:pserver:anonymous@xastir.cvs.sourceforge.net:/cvsroot/xastir login 

When asked for a 'password', just hit the enter key. There is no password. Then run:

cvs -z3 -d:pserver:anonymous@xastir.cvs.sourceforge.net:/cvsroot/xastir co -P xastir

This will create a /home/<user>/xastir directory and copy the current code tree there from the CVS host.
In the future, to update your Xastir code tree, just run:

cd ~/xastir

and then

cvs update -d

This will compare your current source tree with what's in the CVS host and update your tree to match. Of course, if your code tree is updated, you'll need to recompile and re-install Xastir to take advantage of those changes. Easy enough to do and if you look, there are cron scripts available that'll do it all for you while you sleep.


The INSTALL file included with the Xastir source includes this blurb:

Short summary of libraries Xastir can use:
Motif or OpenMotif or LessTiff  Required  The GUI widget set
pthreads                        Required  Threading capability
Shapelib                        Recommended ESRI Shapefile maps and WX alerts
pcre                            Recommended used with Shapefile maps
Xpm                             Optional  XPM images + Snapshots + Printing
ImageMagick                     Optional  MANY graphics images
libtiff/libgeotiff/libproj      Optional  geoTIFF maps (USGS topos)
AX.25                           Optional  Kernel AX.25 networking support
festival                        Optional  Speaking alerts
libcurl or wget                 Optional  Internet images as maps
GPSMan/gpsmanshp                Optional  Converts GPS data to Shapefiles
GDAL/OGR                        Optional  Many formats (coming soon)
libdb (4.0 or newer)            Optional  Internet map caching (fast!)

Following my "HowTo" here will result in an Xastir installation that includes (output from ./configure):

  ShapeLib (Vector maps) ................. : yes

  GraphicsMagick/ImageMagick (Raster maps) : yes (GraphicsMagick)
  pcre (Shapefile customization) ......... : yes
  dbfawk (Shapefile customization) ....... : yes
  rtree indexing (Shapefile speedups) .... : yes
  map caching (Raster map speedups) ...... : yes
  internet map retrieval ................. : yes (libcurl)

  AX25 (Linux Kernel I/O Drivers) ........ : no
  libproj (USGS Topos & Aerial Photos) ... : yes
  GeoTiff (USGS Topos & Aerial Photos) ... : yes
  Festival (Text-to-speech) .............. : yes
  GDAL/OGR (Obtuse map formats) .......... : no
  GPSMan/gpsmanshp (GPS downloads) ....... : no

As you see, I'll be leaving out the AX25, GDAL and GPSMan functions. After reading through this 'HowTo', you should have no problem adding in any of those 3 if you choose. I've left these out as configuring those functions to be useful requires a bit more effort - outside Xastir.

The easy bits - RPMs

You can check to see if you've an RPM package installed by running:

rpm -q <package name>

so, to see if I have lestiff installed, I'd run:

rpm -q lesstif

I get this back:
That's all fine and dandy - good even. But, to make lesstif useful to Xastir I must also have the 'devel' package installed. Otherwise I can't compile the Xastir code 'against' that library.

rpm -q lesstif-devel

package lesstif-devel is not installed
No biggy - just have to install it. Yum makes it easy.

yum install lesstif-devel

If there are any other, supporting packages that are needed - yum gets them and installs them as well.
Yum really does do a nice job, usually.

Yum also allows for packages to be 'stacked'. So, if I find I don't have libtiff installed, I know I don't have libtiff-devel. I can install both at the same time.

yum install libtiff libtiff-devel

You can stack quite a few packages this way.

So, for Xastir - we need to see if we have:

  • lesstif
  • lesstif-devel
  • libtiff
  • libtiff-devel
  • GraphicsMagick
  • GraphicsMagick-devel
  • db4
  • db4-devel
  • curl
  • curl-devel
  • pcre
  • pcre-devel
  • festival
  • festival-devel

note the number of 'f's! lesstif has one 'f' - libtiff has two 'f's.

If you don't want to check for each one - and you really don't need to - you can 'shotgun' the whole pile and ask yum to install them all. If a package is already installed, yum will simply 'skip' it.

yum install lesstif lesstif-devel libtiff libtiff-devel GraphicsMagick GraphicsMagick-devel\
db4 db4-devel curl curl-devel pcre pcre-devel festival festival-devel

note: the "\" character means "continue to the next line"

The not as easy bits - packages


NOTE: You must install libproj BEFORE compiling libgeotiff.
libgeotiff uses libproj to do the datum translations. If you install libgeotiff first, datum translations won't work.

Again, you can just copy the following commands, verbatum, into your terminal and execute them.

Start by changing to a working directory. I use /tmp, but use whatever you're comfortable with. Once you're done installing these libraries, you can safely delete their directories from your working directory.

cd /tmp

Get libproj

wget http://download.osgeo.org/proj/proj-4.6.1.tar.gz

Then decompress it

tar xzvf proj-4.6.1.tar.gz

Now, cd into the 'nad' directory

cd proj-4.6.1.tar.gz/nad

And from here, download the North American Datum code

wget http://download.osgeo.org/proj/proj-datumgrid-1.4.zip

Then unzip it

unzip proj-datumgrid-1.4.zip

Now, move back up to the proj source root and compile it.

cd ../
make install

Remember the 'root' discussion? If you're using 'sudo' - change that last command to sudo make install.
Here's another "Linux trick" - you can 'stack' commands by using ";" to separate them. You can accomplish all the above:

cd ../; ./configure; make; sudo make install

Yes - if you're going to stack commands at the CLI - do use sudo. You'll thank yourself someday.

Clean up on isle /tmp!

cd /tmp; rm -fr proj-4.6.1*

That will remove the origional tarball and the directory created when you 'blew' it up and compiled it. Now that the library is installed, you won't need these anymore.


After you've installed any new library from source - your system doesn't yet know it's there. You'll have to edit the file /etc/ld.so.conf and add the line: "/usr/local/lib" and as root, run /sbin/ldconfig. See section 3a of the INSTALL file.
You can run /sbin/ldconfig after each source compiled library is installed or after all of them are installed. Makes no real difference.


Back into your favorite working directory

cd /tmp

Then get the libgeotiff 'tarballs'

wget http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-1.2.5.tar.gz

"blow up" the tarball

tar xzvf libgeotiff-1.2.5.tar.gz

Change into it's directory, configure, compile and install

cd libgeotiff-1.2.5; ./configure; make; sudo make install

Don't forget ldconfig!


And clean up after

cd../; rm -fr libgeotiff-1.2.5*


shapelib is included with the Xastir source tree, so unless you also need it for other applications you're ready to compile Xastir!
If you do need shapelib for other applications - see section 4 of the INSTALL file.

Build and install Xastir

Change back into your Xastir source tree - if you did it the way I do, just run

cd ~/xastir

Now, you'll have to first 'bootstrap' things, then configure, then make and install. So - again using 'sudo' and doing it all in one line

./bootstrap.sh; ./configure; make; sudo make install


NOTE: You only need to run ./bootstrap.sh the first time you build Xastir or if you change something on your system.
Roughly, ./bootstrap.sh builds the ./configure script. It should "just work" after you've got it done the first time.

Running Xastir

To run Xastir make sure you're not operating with root privileges first, then just enter


and have fun!



This was put together rather quickly and may well contain errors. Use At Your Own Risk (UAYOR). I've completed each step on my own Fedora 10 laptop. But, it already had Xastir on it so I may have inadvertently left out a step - hope not! If you've any questions - please use either the discussion page for this entry, the APRS email reflector hosted by TAPR or contact me direct KA7O.


APRS is a registered trademark of APRS Software and Bob Bruninga, WB4APR.