OCaml 3.12 with Debian Sid right now!
By gildor on Wednesday, September 1 2010, 19:07 - Permalink
Some careful readers of Planet OCamlCore should wonder why the OCaml packages in Debian has not yet been upgraded to 3.12.0. For the Planet Debian readers, this is the latest version of the Objective Caml programming language.
The answer is simple: Debian Squeeze froze on 6th August. This means that Debian folks focus on fixing release critical bugs and avoid doing big transitions in unstable (Sid). In particular, the Debian OCaml maintainers has decided to keep OCaml 3.11.2 for Squeeze, because the delay was really too short: OCaml 3.12 was out on 2nd August.
A great work has already been done by S. Glondu and the rest of the Debian OCaml maintainers to spot possible problems. The result was a series of bugs submitted to the Debian BTS. This effort has started quite early and have been updated with various OCaml release candidates.
S. Glondu has also built an unofficial Debian repository of OCaml 3.12.0 packages here.
Let's use it to experiment with OCaml 3.12.0.
schroot setup
Following my last post about schroot and CentOS, we will use a schroot to isolate our installation of unofficial OCaml 3.12.0 packages.
approx
approx is a debian caching proxy server for Debian archive files. It is very effective and simple to setup. It is already on my server (Debian Lenny, approx v3.3.0). I just have to add a single line to create a proxy for ocaml 3.12 packages:
$ echo "ocaml-312 http://ocaml.debian.net/debian/ocaml-3.12.0" >> /etc/approx/approx.conf $ invoke-rc.d approx restart
approx is written in OCaml, if you want to know how I come to it.
debootstrap and schroot
We create a chroot environment with Debian Sid:
# PROXY = host where approx is installed, debian/ points to official Debian repository of # your choice. $ debootstrap sid sid-amd64-ocaml312 http://PROXY:9999/debian
We create a section for sid-amd64-ocaml312 in /etc/schroot/schroot.conf (Debian Lenny):
[sid-amd64-ocaml312] description=Debian sid/amd64 with OCaml 3.12.0 type=directory location=/srv/chroot/sid-amd64-ocaml312 priority=3 users=XXX root-groups=root run-setup-scripts=true run-exec-scripts=true
Replace XXX by your login.
And we install additional softwares:
$ schroot -c sid-amd64-ocaml312 apt-get update $ schroot -c sid-amd64-ocaml312 apt-get install vim-nox sudo
OCaml 3.12 packages
Now we can start the setup to access OCaml 3.12.0 packages.
The repository is signed by S. Glondu GPG key (see here). We need to get it and inject it into apt:
$ gpg --recv-key 49881AD3 gpg: requête de la clé 49881AD3 du serveur hkp keys.gnupg.net gpg: clé 49881AD3: « Stéphane Glondu <steph@glondu.net> » n'a pas changé gpg: Quantité totale traitée: 1 gpg: inchangée: 1 $ gpg -a --export 49881AD3 > glondu.gpg $ schroot -c sid-amd64-ocaml312 apt-key add glondu.gpg
The following part is done in the schroot:
$ schroot -c sid-amd64-ocaml312 # PROXY = host where approx is installed (sid-amd64-ocaml312)$ echo "deb http://PROXY:9999/ocaml-312 sid main" >> /etc/apt/sources.list (sid-amd64-ocaml312)$ cat <<EOF >> /etc/apt/preferences Package: * Pin: release l=ocaml Pin-Priority: 1001 EOF (sid-amd64-ocaml312)$ apt-get update ... (sid-amd64-ocaml312)$ apt-cache policy ocaml Installé : (aucun) Candidat : 3.12.0-1~38 Table de version : 3.12.0-1~38 0 1001 http://atto/ocaml-312/ sid/main amd64 Packages 3.11.2-1 0 500 http://atto/debian/ sid/main amd64 Packages
(sid-amd64-ocaml312)$ apt-get install ocaml-nox libtype-conv-camlp4-dev libounit-ocaml-dev...
That's it. The apt-policy command shows that OCaml 3.12 for the ocaml-312 repository has an higher priority for installation.
Good luck playing with OCaml 3.12.0.