Contents

Introduction

To share your wonderful application with others you need to have package it up in a standard format. Packaging up Ruby applications for Linux distributions is something that is historically a bit of a controversial subject. One reason for this is that the Debian-based package management software in Kubuntu, apt, fills a similar role as rubygems, the package management software for Ruby across all Operating Systems. In Linux distros, the File Hierarchy Standards (FHS) mandates a layout for applications to adhere to so that an application's libraries, configs and documentation go in the right place. This is sometimes difficult for Ruby applications. However, fear not! Here's your guide to getting from developers Ruby app to a Debian package. We are going to build from scratch.

But first a special thanks...

... to Horst Jens for this wonderful video on packaging a simple Python application, which we've used as the basis for our Qt Ruby packaging efforts here Ubuntu: Making a .deb package out of a python program. It's highly recommended that you check out this video to help you understand what's going on. You can watch it before or after using this article. Or refer to it from time to time.

Our starting point

We will start with the application that we have left over as part of another article in the KDE Techbase Ruby series at Developing Qt4 Applications using Qt Designer and Ruby on Kubuntu. If you don't want to go to the hassle of running through that guide you can download the source code here as a tarred zip file ***PROVIDE LINK***.

Install the Appropriate Packages

Fortunately there's tools to help you out on your mission. The dh-make suite on Kubuntu contains utilities to help you build your Debian package. Install as follows

sudoaptitudeinstall dh-make

Get Your Application Structure into Shape

Ok, so as we said earlier the FHS mandates a particular structure for our application. We need to put our app on a diet and fit it into this structure! I'm not a 100% sure on this bit it works but will can flesh it out as this article matures. I have a simple app called benchmarksman and this is the structure I've used to try to be FHS compliant

TODO*** CHANGE THIS CODE SAMPLE TO USE THE APP FROM THE PREVIOUS ARTICLE