Issue #10 August 2005

Focus on Fedora Extras

Fedora™ Extras consists of a large collection of packages, maintained by volunteers, to augment the basic operating system provided by Fedora Core. The collection includes all sorts of packages, and this article gives an overview of just three of them. See the the section called “Further reading” section to find out more about them.

A previous Red Hat Magazine article (Fedora Extras: Everything but the kitchen sink) explains more about how to use Fedora Extras as well as how to contribute your own packages.

Starting with Fedora Core 4, it is easy to install Fedora Extras packages: become the root user at the shell prompt using su -, then enter yum install package-name.

There are now over a thousand Fedora Extras packages to choose from. You can find the entire list at the Fedora Project Wiki.

GRAMPS: A family tree research tool

Package name: gramps
Fedora Extras maintainer: Brian Pepple

GRAMPS (Genealogical Research and Analysis Management Programming System) as shown in Figure 1, “GRAMPS” is an application for managing family tree information. It stores and retrieves information such as names, dates, relationships, marriages, places, and pictures.

Figure 1. GRAMPS

You can install GRAMPS using the command yum install gramps (as the root user), and it appears in the main menu under Accessories. After creating a new database, you can start entering information about people in your family. A good person to start with is yourself and, of course, then your close relatives. To add a new person to the database click the Add button.

Each time you enter a fact into the database you can record where this fact came from: its source. For example, for a date of birth the information might come from a birth certificate, from the person themselves, or from someone else in the family. As your research continues, it is easy to lose track of where different pieces of information originated, so it is a good idea to start recording sources at the beginning.

As an example of this, in the Edit Person dialog box click on the icon next to the Family name text field to bring up the Name Editor dialog box. Here you can enter your given and family names. Then switch to the Sources tab and click on the + icon to attribute this information to a particular source. The Source Information dialog box will appear. Click New... to create a new source and give it a title, for example "Mom's birth certificate." Click OK, and OK on the Source Information dialog box as well.

There are different views available in GRAMPS. You can switch between them using the icons on the left hand side of the main window. The People view shows a list of people's names, sorted by surname. The Family view is useful when entering new people into the database (see Figure 1, “GRAMPS”). In this view you can set up the relationships between people such as spouse, parent, or child.

To make it easier to distinguish between identically-named people, each individual is given a unique number. For example, in Figure 1, “GRAMPS” you can see that Edwin Michael Smith has the number I37.

As well as being able to export the database in GEDCOM format, which is the standard format for sharing genealogical data, GRAMPS can also generate some very useful reports. A good way of getting to grips with a large family tree is to print out a Relationship Graph. To use this report, install the graphviz package from Fedora Extras. Generations are shown right-to-left instead of top-to-bottom as in a pedigree tree. See Figure 2, “Detail of a Relationship Graph” as an example. The gender of each individual is signified by its color, and "family units" are represented by small ovals.

Detail of a Relationship Graph
Figure 2. Detail of a Relationship Graph

As well as graphical reports, a variety of textual reports can be generated. These can be created in format and later edited for style, if necessary. GRAMPS can add source notes to the reports, numbered in square brackets, so that it is clear where each piece of information comes from—a numbered list of sources is then put at the end of the report. An example of a textual report is shown in Figure 3, “Comprehensive Ancestors Report”.

Comprehensive Ancestors Report
Figure 3. Comprehensive Ancestors Report

bash-completion: Extremely clever command line completion for bash

Package name: bash-completion
Fedora Extras maintainer: Ville Skyttä

Figure 4. bash-completion

When typing a command at the shell prompt, it is possible to press the Tab key while typing in a filename to cause the filename to be completed. For example, to show information about a file called mydocument.pdf in the current directory, you might type in ls -l mydoc and press Tab. If that is the only filename starting with mydoc, the command line will change to this: ls -l mydocument.pdf and pressing Enter will run the command. This is a feature of the shell prompt program bash.

If there is more than one filename starting with mydoc in the above example, pressing Tab will cause the shell to beep, and pressing it once more will cause it to list the files that match, like this:

[tim@cyberelk ~]$ ls -l mydoc<tab><tab>
mydocument.pdf  mydocbookfiles/
[tim@cyberelk ~]$ ls -l mydoc

A more advanced use of this filename completion feature is command completion. If you type in the beginning of a command name and press Tab twice, it will list all of the commands that match, like this:

[tim@cyberelk ~]$ system-config-<tab><tab>
system-config-authentication     system-config-packages
system-config-date               system-config-printer
system-config-display            system-config-printer-gui
system-config-httpd              system-config-printer-tui
system-config-keyboard           system-config-rootpassword
system-config-language           system-config-samba
system-config-lvm                system-config-securitylevel
system-config-mouse              system-config-securitylevel-tui
system-config-network            system-config-services
system-config-network-cmd        system-config-soundcard
system-config-network-druid      system-config-time
system-config-nfs                system-config-users
[tim@cyberelk ~]$ system-config-

It is very useful to be able to do this, but even better, bash provides a way of modifying this behavior. Depending on what the command line looks like, programmable completion can be made to act in all sorts of useful ways.

The bash-completion package provides a huge number of different completion functions, and it is extremely easy to use. Once the package is installed using yum install bash-completion, there is nothing more to do. New logins will automatically pick up the new completion functions.

There are far too many individual pieces of functionality in this package to list them all. Half the fun is finding them out while using the shell prompt. As an example, take the find command used to search for files. It has several options and they are sometimes hard to remember. The bash-completion package provides option completion for lots of the commonly-used commands, and find is one of them (see Figure 4, “bash-completion”).

Most things work exactly as you would expect: su completes with usernames, service completes with initscripts, man completes with manual pages, and so on.

Even the make command gets the special treatment. This command takes instructions from a Makefile and is often used to compile packages from source code. With the bash-completion package, make has Makefile-target completion! Here is an example using the Fedora Core anonymous CVS Makefile:

[tim@hoopoe ~]$ cd grep/devel
[tim@hoopoe devel]$ make <tab><tab>
all            compile        gimmespec      patch          sources
check          compile-short  help           prep           srpm
clean          export         install-short  prep-%         verrel
clog           FORCE          new            rediff

Firestarter: A graphical firewall configuration tool

Package name: firestarter
Fedora Extras maintainer: Phillip Compton

Firestarter, as shown in Figure 5, “Firestarter”, is a very useful tool for configuring firewall rules. It provides a system tray icon to show whether the firewall is running or stopped. It can also show disallowed incoming connection attempts as they happen.

Figure 5. Firestarter

After installing Firestarter using yum install firestarter (as root) it will appear in the main menu under System Tools. When you first start the application, the Firewall Wizard asks a few questions about how the computer network is used, and then the firewall is activated.

A system tray icon appears (see Figure 6, “System tray icon”) to show that the firewall is running. It displays a blue "play" symbol when running and a red "stop" symbol when stopped. It is also possible to prevent any network traffic traveling through the firewall at all—when doing this a padlock icon is shown.

System tray icon
Figure 6. System tray icon

The main Firestarter window is shown in Figure 5, “Firestarter”, with the Status tab active. There are two parts to this Status tab: the status of the firewall and the status of the network. Currently active network connections (both inbound and outbound) are displayed in the network status section.

The Events tab shows any network traffic that has been blocked by the firewall. In Figure 7, “Events” several connection attempts to different ports have been made from another computer. To allow future connections to that port (or from that computer) right-click on the event (see Figure 7, “Events”).

Figure 7. Events

The firewall rules are set up on the Policy tab. There is a section for inbound traffic rules and a separate section for outbound rules. On computers with several network connections it can also set up connection forwarding for specific services. The rules for inbound traffic are formulated as a set of allowed types of connection: firstly, a list of IP addresses from which all connections are allowed; secondly, a list of ports to which anyone (or a particular IP address) can connect. With Firestarter, no distinction is made between UDP and TCP. When a particular port number is listed in the allowed list, both UDP and TCP traffic on that port number will be allowed in.

The rules for outbound traffic are slightly more complicated. They can either be restrictive, as with the inbound rules, or permissive—meaning that everything not explicitly disallowed is let through.

When the outbound rules are restrictive, the blocked outbound connections are listed in the Events tab. Just as with inbound connections, right-click on a blocked outbound connection attempt to allow it in the future.

When a connection attempt has been blocked, it is added to the Events list. However, that is not all. The system tray icon, previously a calm blue "play" button, turns into a pulsing red lightning bolt. It is almost enough to make you hope for a break-in attempt!

Further reading

About the author

Tim Waugh is a Systems Engineer at Red Hat, primarily responsible for packages relating to printing, DocBook, VNC, and some shell utilities. He has been using Linux since 1995. He lives with his wife in Surrey (England).