How do people package internal software to their production servers?

We build .deb packages and host them in a local Debian APT Repository, which we then use Puppet to manage installs from.

However, there is surprisingly little written about building or managing an apt repository, so I fear we're overlooking some beautiful open-source solution. What do other startups use? Do they just scp the raw files from server to server? If so, how do they keep things tidy?

Or is this a question that Rails handles internally (e.g. as gems) so we're the only ones facing it? ;)


Solution 1:

I've worked at a number of startups and built a portage overlay for Gentoo, yum repo for CentOS, and most recently apt repo for Ubuntu. I too was surprised how much of a pain in the ass it was to build the apt repo and there was nearly nothing on the web about how to do it properly.

However in order to push website code we ultimately do some form of rsync and move the symlink. It's faster and easier to roll back in most cases.

Solution 2:

This page may be useful information about how to create an apt repository.

Also, have a look at this ServerFault thread linked in the comments.