System Requirements

FCM is intended to run on a Unix/Linux system. It is known to work on recent popular Linux distributions such as RHEL-6. See metomi-vms @ Github for information.

FCM releases can be downloaded from Github. Download the tar.gz file and un-pack it into an appropriate location on your system. Add the bin/ directory into your PATH environment variable. Enable the configuration files in etc/fcm/ directory and edit them to meet the your requirements. Once you have done this you should now have access to the FCM user utilities, assuming that you have met the requirements described below:


used by: fcm.

versions known to work: RHEL-6: 5.10.1

remark: We assume that all core Perl modules (as documented by of the known to work versions are installed on your system. (N.B. On platforms based on RHEL, you may need the perl-core RPM instead of just perl, see this discussion.)

Perl module Config::IniFiles

used by: the admin commands.

versions known to work: RHEL-6: 2.72.

Perl module DBD::SQLite

used by: the admin commands.

versions known to work: RHEL-6: 1.29.

Perl module SVN::Client

used by: the admin commands.

versions known to work: RHEL-6: 1.8.5 (RPM from

Perl module XML::Parser

used by: the code management commands.

versions known to work: RHEL-6: 2.36.

Perl module Tk

used by: fcm gui.

versions known to work: RHEL-6: 804.028.


used by: the code management commands, the extract system of fcm make, the deprecated fcm extract.

versions known to work:RHEL-6: 1.8.10.

remark: you can use the extract system to mirror code to a remote platform for building. Therefore it is only necessary to have Subversion installed on the platform where you do your code development. If you use other platforms purely for building and running then you do not need to have Subversion installed on these platforms.


used by: (optional, but highly recommended as a companion to Subversion)

versions known to work: RHEL-6: 1.0.5.


used by: fcm branch-diff --graphical, fcm conflicts, fcm diff --graphical.

versions known to work: RHEL-6: 3.2.

remark: The fcm branch-diff --graphical and fcm diff --graphical commands use xxdiff by default but can also use other graphical diff tools.

GNU diffutils: diff3

used by: the extract system of fcm make, the deprecated fcm extract.

versions known to work: RHEL-6: 2.8.1.

remark:: used to merge changes to source files modified by 2+ diff source trees (compared with the base).


used by: the mirror system of fcm make, the deprecated fcm extract.

versions known to work: RHEL-6: 3.0.6.

remark: used to mirror source file to another USER@HOST.

GNU make

used by: the deprecated fcm build.

versions known to work: RHEL-6: 3.81.

Content in the Distribution
Terms of use and project information.
Contains highlight and noteworthy changes since release 2-3-1.
Contains the fcm user utilities.
FCM documentation.
Contains this document.
Contains release notes prior to and including release 2-3-1.
Contains the FCM User Guide.
Miscellaneous items and example site configurations, including the fcm/keyword.cfg.example file. If you wish to define keywords for your site you will need to create the etc/fcm/keyword.cfg file. An example file, fcm/keyword.cfg.example, is provided which is a copy of the file currently used at the Met Office. For further details please refer to the section FCM keywords in the System Admin chapter of the User Guide.
Contains the Perl library of FCM.
Contains a basic manual page for fcm.
Contains a selection of useful admin utility commands.
An example of how you might set up a cron job to make use of the <repos>.latest file (see svn-hooks/post-commit-background).
Contains a selection of useful hook scripts for Subversion.
This script restricts write-access to the repository by checking the following:
  • It executes the Subversion utility if it, and the associated svnperms.conf file, exist. This utility checks whether the author of the current transaction has enough permission to write to particular paths in the repository.
  • It checks the disk space required by the current transaction. It fails the commit if it requires more than 10MB of disk space (or whatever is specified in the pre-commit-size-threshold.conf file.
This script runs post-commit-background in the background.
This script runs in the background after each commit.
  • It updates a <repos>.latest file with the latest revision number.
  • It creates a dump of the new revision.
  • It calls post-commit-background-custom if it exists.
This script only allows the modification of svn:log.
This script runs post-revprop-change-background in the background.
This script invokes the trac-admin command to resync the revision property cache stored in the corresponding Trac environment. If a user modifies the log message of a changeset and he/she is not the original author of the changeset, this script will e-mail the original author. If the file post-revprop-change-background-cc.list exits, the script will also e-mail those in the list.
Contains functional test for FCM.
Contains regression tests for FCM.
Contains simple test code to check how your chosen compilers handle include files.
Contains the files necessary to set up a Subversion repository for the FCM tutorial. This will allow you to follow the tutorial section in the User Guide. See tutorial/README on how to set it up.

Copyright © 2006-2021 British Crown (Met Office) & Contributors. Met Office. See Terms of Use.
This document is released under the British Open Government Licence.