Skip to content
Ruby gem for crafting debian packages
Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
example
lib
test
.gitignore
README.md
Rakefile
debstep.gemspec

README.md

debstep

Ruby gem and DSL (API?) to assist with the scripted creation of Debian packages. The tool makes it easy to use Debian artifacts for your own software in automated systems. Here is an example build script that will create a Debian package called 'my-essentials':

require 'debstep'
version = '1.0'

Debstep::Package.new 'my-essentials', :workspace => './build' do
  self.Version = version
  self.Maintainer = 'me@example.com'
  self.Description = 'Contains the software I consider to be a necessity.'
  self.Architecture = 'all'

  self.Depends = %w(vim).join(',')

  self.Section = 'misc'
  self.Priority = 'standard'

  preinst do
    run 'path/to/preinst1.sh'    # adds to preinst
    template './preinst2.sh.erb' # renders with ERB and adds to preinst
  end

  prerm do
    run 'path/to/prerm.sh'       # adds to prerm
  end

  postrm do
    run 'path/to/postrm1.sh'     # adds to postrm
    run 'path/to/postrm2.sh'
  end

  postinst do
    run 'path/to/postinst1.sh'   # adds to postinst
  end

  install '/usr/bin/local' do
    folder './to/install/bin'    # installs all files in folder to /usr/bin/local
    file   './other.bin'         # installs file to /usr/bin/local/other.bin
  end

  install '/etc/config.conf' do
    template './config.conf.erb' # renders with ERB and installs to /etc/config.conf
  end
end

Running the script will generate a .deb file, which you can install directly with dpkg -i <debfile>.deb (not recommended) or add to a Debian repository using reprepro (recommended). You do not get automatic dependency resolution unless you use the Debian repository approach and some kind of dpkg front-end like aptitude.

I use my CI server to host a Debian repository. Whenever a commit is made, the CI server builds new packages using debstep and installs them locally using reprepro. Clients use apt-get to download packages from the server, assuming they have configured /etc/apt/sources.list (or sources.list.d) correctly.

Together with awsome and Jenkins, you can have automated package building and deployments up and running in AWS in no time.

You can’t perform that action at this time.