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
installability)

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 
debian-ports.

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
EOF

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

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

Regards,
J.-H. Chatenet

Attachment: installable.py.gz
Description: Binary data

Attachment: dpo_ad_hoc.sh.gz
Description: Binary data

Reply via email to