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

ANNOUNCEMENT: debimg - debian-cd in Python



Dear Debian Developers (and other readers),

debimg will be a free alternative to debian-cd, written
in Python.

Attached are the file lenny.list, which is a "data file" (see comments in file),
and debimg.cfg which is the main configuration file.

Please tell me if you do not like one the listed things.


Short overview
--------------
1. dists/**/Packages files are created from the apt cache instead of scanning
the pool on the disk (faster)
2. The configuration which packages will be included is stored in one list per
debian release.
3. Packages can be included based on Priority, Task and name. This means that
there won't be statically generated task files anymore. You can restrict this to
specific architectures only, using 'pkgname [architectures]'.
4. debimg is GPL 3 and newer
5. debimg builds netinst disks in about 20 seconds
6. debimg uses apt for dependency solving and downloading

License
-------
Copyright (C) 2008 Julian Andres Klode <jak@jak-linux.org>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Current status
--------------
debimg can build complete disks, but can not split disks or build multi-arch
images. It is not released yet, because the code needs some cleanup first.

The next steps will be: disk splitting, multi-arch disks, source disks,
architectures other than i386 and amd64, gpg signing, etc.

Speed
-----
debimg should build netinst disks in about 10-15 seconds, but my current tree
does not add documentation to the image yet.

How does it work?
-----------------
debimg uses python-apt functions for downloading files, solving dependencies
and parsing the data files

Using python-apt to solve dependencies instead of writing an own dependency
solver is better, because python-apt's solver is the apt solver written in C.
This also leads to a problem, because the C parser does not ignore Conflicts,
but this is needed for building disks. At the moment, there is a workaround
which simply removes all Conflicts lines from the downloaded Packages files.

My wishlist
-------------
1) Automatically build additional (netinst + businesscard) images of testing
using debimg on a debian server - (after the release of debimg 0.1) - this
version should be able to build netinst + businesscard images without problems

Links
-----------------
Blog: http://juliank.wordpress.com/2008/02/25/debimg-debian-cd-in-python/

-- 
Julian Andres Klode, Fellow of the Free Software Foundation Europe
                     Ubuntu Member | Debian Maintainer | Developer

try Ubuntu: http://www.ubuntu.com/ | my site: http://jak-linux.org/
         mail: juliank@ubuntu.com  | IRC: juliank
            languages:     German  | English


# Configuration file for debimg
CODENAME       = lenny
MEDIATYPE      = netinst
MIRROR         = http://cdimage.debian.org/debian/
COMPONENTS     = main
NDISKS         = 1
DATA_PATH      = ../data/%(CODENAME)s.list
UDEB_INCLUDE   = netinst
UDEB_EXCLUDE   = netinst
ARCHITECTURE   = amd64
DI_GTK_ENABLED = True
DI_CODENAME    = %(CODENAME)s
OUTPATH        = debian-%(CODENAME)s-%(ARCHITECTURE)s-netinst.iso

# lenny.list - Package list for building Debian images
# ====================================================
#
# This format follows the RFC-822 specification, with the exception that lines
# starting with '#' are ignored. Also, everything after an # is ignored.
#
# This file contains all specifications previously contained in data/, but in a
# more simple and shorter way. Please keep all list sorted alphabetically.
#
# The control fields
# -------------------
#
# Package-List:
#    => The name of the list. Used to find the list
# Inherits:
#    => Include all options from the named list
# Priority / Task:
#    => Include packages based on their priority or task
# Depends, Recommends, Conflicts:
#    => They are parsed like Build-Depends in a source package. Build fails if
#       one package listed in depends is not available or one package in
#       conflicts is installed. No version operator supported yet.
# Include-Udeb, Exclude-Udeb:
#    => You may specify a list of regular expressions matching udeb names

Package-List: businesscard
Include-Udeb: ^.*$
Exclude-Udeb: ^.*$

# This list is used to build a classical netinst disk.
Package-List: netinst
Inherits: businesscard
Priority: required, important
Depends: acpid,
         aptitude,
         bpalogin,
         console-cyrillic,
         console-data,
         console-terminus,
         console-tools,
         cryptsetup,
         debconf-english,
         discover1 [i386 amd64], #Hardware detection 1.0 (Conflicts with discover)
         discover [i386 amd64], #Hardware detection 2.0 (Conflicts with discover1)
         eject,
         grub [i386 amd64],
         initramfs-tools [i386 amd64],
         installation-report,
         jfbterm,
         jfsutils,
         kbd,
         kbd-compat,
         libc6-i686 [i386],
         libdevmapper1.02,
         libdiscover1 [i386 amd64],
         libfribidi0,
         libsysfs2,
         lilo [i386 amd64],
		 # Start of Linux kernel stuff
         linux-headers-2.6-486 [i386],
         linux-headers-2.6-686 [i386],
         linux-headers-2.6-amd64 [amd64],
         linux-image-2.6-486 [i386],
         linux-image-2.6-686 [i386],
         linux-image-2.6-amd64 [amd64],
		 # End of Linux kernel stuff
         locales,
         localization-config,
         lvm2,
         lvm-common,
         mdadm,
         openssh-server,
         pcmcia-cs,
         pcmciautils,
         perl,
         ppp,
         pppoeconf,
         reiserfsprogs,
         sudo,
         udev,
         unifont,
         usbutils,
         wireless-tools,
         xfsprogs

Package-List: kde
Inherits: netinst
Tasks: desktop, kde-desktop

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: