The first part of this series discussed why you might use Theon as a Schema Management Tool for your PostgreSQL database. The second part part covered the necessary packages and installation. This final part is an introductory tutorial.
In the first part of this tutorial we created a database and started to manage it in Theon. In the second part we configured TheonCoupler to load data automatically into the database. In the third part we configured TheonUI to allow access to the database and made a custom desktop. In this fourth and final part we will package and distribute the result.
The Theon toolkit has some commands to build and package a ModelLibrary for distribution. The resulting distribution will then have the toolkit as a pre-requisite.
We need to do some work with Git first, as the ModelLibrary is held as a Git repository.
rm -fr derived git add factory schemat git commit --message "first pass"
Now we can build a release (which will have version number 1.1 by default).
ttkm release
Check the result.
ttkm display * > Establishing UnitArchive - Checking for UnitArchive in Folder[CWD] - Found Unit[packages] in Folder[CWD] - This[packages] * packages[CWD] > History of Unit[packages] - Release Directory: CWD::.release - Release Directory Index: CWD::.release/index - Release SpecFile: CWD::packages.spec - Current Release Version: packages-1.1 - Current Release Revision: 07f1a86d37bc74a6b5a2bd0c5157650c60501b3a
Now build a source and binary package for the current release above and list the results.
ttkm package rebuild ls package packages-1.1-1.src.rpm packages-theon-library-devel-1.1-1.noarch.rpm packages-theon-library-1.1-1.noarch.rpm packages-theon-library-ui-1.1-1.noarch.rpm
Install the packages.
rpm -U package/*.noarch.rpm
Now we can test the installation, first drop our existing live database, change directory and install from distribution.
dropdb packages cd ~/ ttkm packages install
Feed in the data in the same way but using the coupler configuration in the distribution.
rpm -qa --qf '"%{NAME}","%{VERSION}","%{RELEASE}","%{ARCH}","%{BUILDTIME}"\n'| ttkm packages stream agent rpm refresh rpm -qa --qf '["%{NAME}","%{ARCH}","%{REQUIRENAME}","%{REQUIREVERSION}"\n]'| ttkm packages stream agent rpm refresh to packdep couple packdep
Finally start up TheonUI to access the content using the configuration and metadata in the distribution.
ttkm packages server ui
Note that the server configuration is built for the distribution using the LiveProfile attached to the ModelLibrary at build time. It is more than likely that in most distributions that this would ultimately be separately configured.
There is more extensive documentation on Theon, TheonCoupler, TheonToolkit and TheonUI in the The Theon Book.