[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Progeny picax: Replacement for debian-cd

It's been brought to my attention that there's some dissatisfaction with debian-cd within Debian, that some reengineering may need to happen, and that such reengineering may not be able to happen soon. Given that, I thought it would be good to alert Debian to the presence of an alternative.

Progeny has had some struggles with debian-cd also. When we started work on Anaconda for Debian, we decided against using debian-cd for it, and begun work on an alternative. The result is called "picax" (for Progeny Install Creator and Archive eXtractor; if you think the name is horrid, you didn't hear some of the other suggestions). We've been using it to make our Anaconda CDs, and it's worked well for us so far.

Picax is written in Python. At its most basic level, it splits apt repositories into parts, either by number of parts or maximum part size. It can write installers to the parts via a modular extension mechanism; the mechanism works to the extent that we have placed all anaconda-specific logic in anaconda and kept it out of picax. It can create source media four ways: separate (completely separate source and binary parts, just like debian-cd), immediate (the last binary media is also the first source media), mixed (each of the media contains all the source for each binary on it), or none. Package ordering is handled via order files, debootstrap, and/or asking the installer for important packages; it is also apt-aware. As far as I can tell, it should be architecture-independent, and even cross-architecture, although this has not been tested.

Picax is still very new, and I expect that there will be problems should Debian decide to switch to it. But I expect these problems should be easy to solve. In particular, I've created aptable media for three different Debian-based distributions, and working Anaconda install media for two of those, including sarge.

To make picax useful for Debian, a debian-installer module would need to be written. Writing an installer module for picax shouldn't be too difficult; it amounts to a Python module with a particular API, which picax calls at the appropriate times. You can see a working example in anaconda; see http://platform.progeny.com/anaconda for details.

I haven't uploaded it yet because it lacked the source features until very recently, but I will be uploading it very soon now that those are done and tested. In the meantime, you can get picax from Progeny's Subversion server:

  svn checkout svn://svn.progeny.com/anaconda/picax/trunk

The package architecture is mature, so you should be able to build packages from the above in the usual way.

In none of this do I wish to impugn the good name of Raphael Hertzog or of his creation, which has served Debian well thus far. Nor do I wish to impose my preferred solution upon Debian. It may be that fixing debian-cd is the best course of action for Debian to take. But I think picax could be a very useful replacement, and I wanted to ensure it was considered. Whatever Debian decides, picax fills an important niche at Progeny, and will continue to be useful there.

Picax development is discussed on the anaconda-workers@lists.progeny.com list (see platform.progeny.com for more details), so please CC followup discussion there, at least. Suggestions and concerns are welcome.

Reply to: