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

debootstrap and debian-ports

Installation may fail because of missing dependencies. 
A consistent state of the archive (i.e. all required and important packages are compatible,
and all their recursive dependencies are built and available) is needed for success - a 
condition less frequently fulfilled than in the main Debian archive.

Diagnosis of installability

Let's download the package lists from unstable and unreleased, select the packages as
debootstrap would and then look for missing dependencies and package conflicts or
breakage (there is no need of a machine of the target architecture).

See the attached python script "installable.py" for an illustration. It depends on 
python-argparse and apt-utils. From the output of
./installable.py --arch alpha --ascending-versions
we conclude that an installation would succeed, but
./installable.py --arch alpha --ascending-versions --include locales
would not - a new version of libc6 is still building.

And m68k is currently installable, with or without locales.

(By the way, this might help to prioritize packages to build in order to ensure

How dependencies sometimes break

Buildd of some architectures are indeed not so fast as mainstream.

But the culprit is often an unfinished transition to a new version of a source package,
and the desynchronization of corresponding binary packages - as is the case with the 
above "locales" version mismatch on alpha. 
A new version 2.17-97 of source package "eglibc" appeared and new binary packages were built on 
mainstream buildd. "locales" and other "Architecture: all" binary packages were directly mirrored from 
the main Debian archive into debian-ports. As a result, the obsolete version 2.13-38 was kicked 
out of the debian-ports archive.
By contrast, libc6 (Architecture: alpha) needed a build on an alpha buildd - which happened to fail.
In the meantime, there are no compatible versions of libc6 and locales in the alpha archive on 

Every 6 hours, mini-dak mirrors "Architecture: all" packages from unstable and experimental in
the main Debian archive. Some "Architecture: all" packages disappeared from unstable and 
experimental in the main Debian archive in the last 6 hours : they are deleted from the 
debian-ports archive. 
(lines 67, 75 and 83 of archive-mirror-arch-all in mini-dak)

Custom mini-repositories for installation

One may download the missing packages from http://snapshot.debian.org/archive/debian-ports.
All needed packages may be put in a directory, and index files generated by apt-ftparchive.
Debootstrapping is then as simple as 
debootstrap --no-check-gpg unstable TARGET file://path_of_the_directory
There is no need for special provisions because of debian-ports (but don't forget to correct
etc/apt/sources.list after installation).

The attached script "dpo_ad_hoc.sh" intends to streamline this process (feel free to propose a
better name if you like !). It depends on apt-utils and bzip2. However, the choice of packages 
and versions on snapshot.debian.org is not automatized : one has to check that they suit one's 
needs and were not superseded because of some unwanted misfeature or vulnerability.

So we get a mini-repository in order to produce a chroot on alpha 
(including the non-free qlogic firmware from the main Debian archive) :
./installable.py --arch alpha --ascending-versions --package-filenames pkglist
./dpo_ad_hoc.sh -w some_scratch -a alpha -l pkglist -r "firmware-qlogic/0.40" -d my_repository -g -s 20130405T202311Z "locales/2.13-38"
(back on an alpha workstation : )
debootstrap --no-check-gpg --include=locales,firmware-qlogic,debian-ports-archive-keyring --components=main,non-free unstable my_chroot file://$(readlink -f ./my_repository)
cat > my_chroot/etc/apt/sources.list <<EOF
deb http://ftp.debian-ports.org/debian unstable main
deb http://ftp.debian-ports.org/debian unreleased main

(debian-ports-archive-keyring and bzip2 are installed both sides)

As usual, thanks in advance for comments, improvements and corrections - or a better solution...

J.-H. Chatenet

Attachment: installable.py.gz
Description: Binary data

Attachment: dpo_ad_hoc.sh.gz
Description: Binary data

Reply to: