FreeBSD Custom Package Server

Maxim Khitrov mkhitrov at gmail.com
Sat Apr 5 01:36:07 UTC 2008


Hi all,

I maintain several FreeBSD servers all of which currently use the
ports system to install and update the needed software. I don't like
using packages since I often need customizations made during the build
process. For instance, my remote VPS has only 2 GB of disk space, so I
need to build everything with the "-Os -s" optimization to make
executables as small as possible. At the same time, some of the
systems are also very limited in memory or processing power, so
rebuilding certain ports (even with the help of ccache) is often a
slow process.

I'd like to help myself with a deployment of my own package server. It
would work in a similar manner to the official FreeBSD servers, but
there should be a dynamic component to it such that the client could
request any number of customizations to the resulting packages.
Basically, I don't want to sacrifice any of the flexibility of the
ports system, only offload the actual build process to another
dedicated machine.

First question I have is if anyone is aware of software that already
does this sort of thing? How well does it work? If not, I plan try to
write this on my own.

Ideally, I'd like to have a web interface using which I can submit a
request to the server for any valid port. The request would contain
information such as what version of FreeBSD the resulting package will
be installed on, what CFLAGS and CPUTYPE to use, any WITH[OUT]_*
knobs, whether dependencies should be included, and whatever else the
port needs. The server would of course have a caching layer to avoid
rebuilding packages with matching configurations. For any package that
isn't cached, the server will build it and place it into a directory
from which it can be downloaded by the client machine. The user who
made the request would be notified by e-mail when all the needed
packages are ready to be installed. An xml-rpc or similar interface
may also be added, so requests could be submitted using a specialized
program from within the client system.

Those are my initial thoughts on how something like this should work.
If there are no current tools for it, do you guys think that it's a
useful project to attempt? Would anyone actually be interested in
something like this making it into the ports tree so you can quickly
deploy package servers of your own? What other features should this
software have to make it a good hybrid between the pure ports and
package systems that are currently being used?

- Max

P.S. If there is genuine interest in such functionality, I could
consider making it an application for Google Summer of Code this year.
I was a participant last year, but I only have until the 7th of April
to submit a proposal. It was one of those spontaneous ideas that I
didn't think much about previously, so I'm looking for some feedback
from the community.


More information about the freebsd-ports mailing list