
Falcon Repository Manager
Documentation - Download - Code - Launchpad
If you want to distribute source and/or binary packages for Ubuntu or any other distribution using .deb packages, Falcon is the tool for you. Creating a simple repository takes almost no configuration, you can get started in a matter of minutes. But Falcon also allows you to support the more advanced functionality in APT, such as integrating your packages with the excellent app-install system or support for apt-file, allowing people to search for files in your repository without installing packages.
The latest released version of falcon is beta 2 of 2.0 -- this document talks about the soon to be released beta 3 version.
Simple usage
Using Falcon is very simple. The interactive configuration editor makes configuring a breeze, scanning and updating the repository is an easy process. With the new autobuilder it's even possible to automat the whole process from source upload to installing the package in your repository. Of course you don't need to worry about the things you don't want to use.
Support for all the basics
All functionality needed by any repository are supported:
Support for multiple distribution versions
Support for multiple architectures
gpg-signed archive data
Simple synchronization with mirrors (also supports partial mirrors!)
Using only these features, your repository will already be completely usable, but there's so much more you can do to make it more attractive to use.
More advanced features
- apt-file support
The apt-file command allows your users to search for files in the packages of a repository without downloading or installing these packages. Falcon allows you to support apt-file with no effort at all.
- HTML indices
Falcon can create HTML pages for your repository, containing all the information about the packages included in them. Now people can browse your repository and see useful information instad of just filenames. The HTML pages are fully themeable using the excellent django templating engine.
- app-install support
Falcon can automatically create a package containing app-install data for your repository. This makes installing packages from your repository even easier, since they will appear in adept-installer or gnome-app-install (Applications -> Add/Remove in Ubuntu) if users install this package. This feature is unique to Falcon, no other free or commercial repository manager can do this!
Building packages and installing them into the repository
Adding new packages to a repository is as easy as you want it to be. The easiest is manually copying/moving the source and binary packages into the pool and running 'falcon scan'. Oh wait, no it's easier! Don't move things manually, just run 'falcon install filename.dsc' and it will do the moving of all package related files for you!
But it can be more advanced of course. If you set up an FTP server (or HTTP, or SCP), you can use dput to upload a source package and let falcon do the building and installing for you. Falcon has an integrated build management system, supporting multiple build daemons so packages can be built on many architctures.
Repository maintenance
Falcon makes maintaining your repository a breeze, installing packages is as easy as you want it to be (see above), but removing obsolete packages is even easier: if non-package files are found, falcon will ask you whether it should get rid of them. Same goes for older versions of packages. "Getting rid", means moving to a specific morgue directory, which serves as an archive for you.
Pluggable
Falcon has a plugin system, allowing anyone to implement functionality for it. Plugins are easy to install, enable and disable.
Technical details

Falcon is written in python, using many 3rd party libraries. Most importantly, django is used as ORM for the internal data models and as templating engine. The database backend is sqlite (support for mysql and postgresql is planned) python-apt is used for retreiving information from packages. The interactive configuration editor uses the newt library. The chardet library is used to make data encoding consistent.