So you want to build a distro...

Justin M. Forbes

rPath, Inc.

NTLUG

December 17, 2005

So you want to...

create a purpose built distro...

An audio server

A firewall

Your HPC cluster

A showcase for new software

So you want to...

Base it on...

RPM

dpkg

portage

So why would you want to...

What's wrong with these options?

Hard to maintain

Version Collisions

An example

Why we need rich versioning: An example from Ubuntu

<jdub> why would you want to install patched software?

<desrt> i have all sorts of patches against gnome that didn't make it into the release

<jdub> keep in mind that you will have versioning issues

<jdub> you are insane

<desrt> versioning issues?

<jdub> get them upstream

<desrt> jdub; they're blocked by the freeze

<jdub> if you don't change the version of the package (correctly!), it will be replaced

<jdub> and/or don't be so anal retentive about what you run that's packaged

....

An example

<desrt> so it should be installed

<desrt> jdub; something strange happened. the ubuntu-update thingy popped open and told me that there are new versions available of the packages that i just installed from source

<jdub> desrt: you didn't change the version number :(

<desrt> jdub; right. i kept it the same

<desrt> i'd have expected that it would have installed over the existing package and been considered to be the same version

<desrt> jdub; so before i try this again, what -should- i have done? (keeping in mind that when the new vesrion comes out i'd like it to properly upgrade, even blowing away my patch)

<jdub> desrt: either modify the version at the top of debian/changelog (hamfisted)

<jdub> desrt: or run dch -i to increment it

<jdub> desrt: ideally you'd add "desrt1" to the version, rather than really incrementing it

<jdub> desrt: see all the packages with ubuntuX added

What?

It's not insane

to use specially patched software

to try to maintain one pkg on your own

Given these options...

you just might not do it.

An rBuilder demo

http://www.rpath.com

So, whats cool about that?

Low barrier of entry

Maintain only what you care about

ISOs very customizable

Easy to upgrade

rBuilder: Future developments

Live CDs and QEMU images (soon)

Next challenges

Track issues and features

Testing builds

Part II

Conary is REALLY COOL.

An Introduction to Conary...

Designed By

Erik Troan

Michael K. Johnson

Matt Wilson

Worked to create a package management system that would encourage both collaboration and responsible branching

Inspired from real-world problems discovered at Red Hat.

Conary: Key Concepts

Merges concepts from Source Control Management (SCM) into the package management space

Rich Versioning Scheme to avoid namespace/version collisions

Make Packaging Simpler

Conary: SCM

Use Source Control Management ideas in package management

A source control system works by comparing patches, conary uses changesets.

Conary: SCM

Download upgrades as patches

openoffice.org: 220M vs. 52M

Respect local modifications

What you do, stays done

Diff your system against original packages

Store revision history

Older versions stick around

Roll back changes

Conary: Rich Versioning

We don't all have to get along

But we can if we want to

Create package namespaces

/<host>@<namespace>:<branch>/<originalver>-<sourcecount>-<buildcount>

Example

autoconf:

/conary.rpath.com@rpl:devel/2.13-6-1

hosted on conary.rpath.com

for use with @rpl:devel

upstream version: 2.13

6 source changes

built once

Conary: Rich Versioning

Use timestamps for version comparison

Don't depend on intelligent original versioning

how does v.099a compare to v. 20051024?

how does mdk compare to fc1?

desrt1 vs. ubuntu2

Conary: Rich Versioning

Incorporate upstream changes

Branches – divergent development

/conary.rpath.com@rpl:1/1.0/foresight.rpath.org@fdl:devel/1.0

stores info about where branch was made

shadows – development that tracks upstream

/conary.rpath.com@rpl:1//foresight.rpath.org@fdl:devel/1.0-1

allows merging of upstream changes

Conary: Make Packaging Simpler

Embed Developer Knowledge

Avoid copy + paste mistakes

Check for common errors

Uniformity among packages

As a result, conary recipes are easy

Conary: Make Packaging Simpler

sed

Error prone

superclasses

Write common operations once

Conary: Make Packaging Simpler

Policy

Find errors

Dangling Symlinks

Missing Build Requirements

Create common components

Componentization

Conary

There's so much more cool stuff

Signed Packages

Flavors

Groups

Filesets

Contexts

Ask me for demos of Conary

Summary:

rPath makes it easy:

to make and maintain your own distro

to build your own packages

to maintain your own system

And we're just getting started...

Summary:

We need your help!

Create your own project

Install conary based systems

Send in your resume (www.rpath.com)

But...

Summary:

Please be patient!

rPath Linux and Conary are still Beta

Better documentation is coming

Join us on IRC at #conary on freenode.net

Questions?

ISOs available

rPath Linux 0.99.2

Foresight

LAMP

Port 25

Asterisk

Matthew Wilson

2005-06-07T19:27:54

Matthew Wilson