Journey of a new GNOME 3 Debian packager

With all the buzz around GNOME 3, I really wanted to try it out for real on my main laptop. It usually runs Debian Unstable but that’s not enough in this case, GNOME 3 is not fully packaged yet and it’s only in experimental for now.

I asked Josselin Mouette (of the pkg-gnome team) when he expected it to be available and he could not really answer because there’s lots of work left. Instead Roland Mas gently answered me “Sooner if you help”. 🙂

First steps as a GNOME packager

This is pretty common in free software and for once I followed the advice, I spent most of sunday helping out with GNOME 3 packaging. I have no prior experience with GNOME packaging but I’m fairly proficient in Debian packaging in general so when I showed up on #debian-gnome ( on sunday morning, Josselin quickly added me to the team on

Still being a pkg-gnome rookie, I started by reading the documentation on This is enough to know where to find the code in the SVN repository, and how to do releases, but it doesn’t contain much information about what you need to know to be a good GNOME packager. It would have been great to have some words on introspection and what it changes in terms of packaging for instance.

Josselin suggested me to start with one of the modules that was not yet updated at all (most packages have a pre-release version—usually 2.91—in experimental, but some are still at 2.30).

Packages updated and problems encountered

(You can skip this section if you’re not into GNOME packaging)

So I picked up totem. I quickly updated totem-pl-parser as a required build-dependency and made my first mistake by uploading it to unstable (it turns out it’s not a problem for this specific package). Totem itself was more complicated even if some preliminary work was already in the subversion repository. It introduces a new library which required a new package and I spent a long time debugging why the package would not build in a minimalistic build environment.

Indeed while the package was building fine in my experimental chroot, I took care to build my test packages like the auto-builders would do with sbuild (in sid environment + the required build-dependencies from experimental) and there it was failing. In fact it turns out pkg-config was failing because libquvi-dev was missing (and it was required by totem-pl-parser.pc) but this did not leave any error message in config.log.

Next, I decided to take care of gnome-screensaver as it was not working for me (I could not unlock the screen once it was activated). When built in my experimental chroot, it was fine but when built in the minimalistic environment it was failing. Turns out /usr/lib/gnome-screensaver/gnome-screensaver-dialog was loading both libgtk2 and libgtk3 at the same time and was crashing. It’s not linked against libgtk2 but it was linked against the unstable version of libgnomekbdui which is still using libgtk2. Bumping the build-dependency on libgnomekbd-dev fixed the problem.

In the evening, I took care of mutter and gnome-shell, and did some preliminary work on gnome-menus.

Help is still welcome

There’s still lots of work to do, you’re welcome to do like me and join to help. Come on #debian-gnome on, read the documentation and try to update a package (and ask questions when you don’t know).

Installation of GNOME 3 from Debian experimental

You can also try GNOME 3 on your Debian machine, but at this point I would advise to do it only if you’re ready to invest some time in understanding the remaining problems. It’s difficult to cherry-pick just the required packages from experimental, I tried it and at the start I ended up with a bad user experience (important packages like gnome-themes-standard or gnome-icon-theme not installed/updated and similar issues).

To help you out with this, here’s a file that you can put in /etc/apt/preferences.d/gnome to allow APT to upgrade the most important GNOME 3 packages from experimental:

Package: gnome gnome-desktop-environment gnome-core alacarte brasero cheese ekiga empathy gdm3 gcalctool gconf-editor gnome-backgrounds gnome-bluetooth gnome-media gnome-netstatus-applet gnome-nettool gnome-system-monitor gnome-system-tools gnome-user-share baobab gnome-dictionary gnome-screenshot gnome-search-tool gnome-system-log gstreamer0.10-tools gucharmap gvfs-bin hamster-applet nautilus-sendto seahorse seahorse-plugins sound-juicer totem-plugins remmina vino gksu xdg-user-dirs-gtk gnome-shell gnome-panel dmz-cursor-theme eog epiphany-browser evince evolution evolution-data-server file-roller gedit gnome-about gnome-applets gnome-control-center gnome-disk-utility gnome-icon-theme gnome-keyring gnome-menus gnome-panel gnome-power-manager gnome-screensaver gnome-session gnome-settings-daemon gnome-terminal gnome-themes gnome-user-guide gvfs gvfs-backends metacity mutter nautilus policykit-1-gnome totem yelp gnome-themes-extras gnome-games libpam-gnome-keyring rhythmbox-plugins banshee rhythmbox-plugin-cdrecorder system-config-printer totem-mozilla epiphany-extensions gedit-plugins evolution-plugins evolution-exchange evolution-webcal gnome-codec-install transmission-gtk avahi-daemon tomboy network-manager-gnome gnome-games-extra-data gnome-office update-notifier shotwell liferea epiphany-browser-data empathy-common nautilus-sendto-empathy brasero-common
Pin: release experimental
Pin-Priority: 500

Package: *
Pin: release experimental
Pin-Priority: 150

The list might not be exhaustive and sometimes you will have to give supplementary hints to apt for the upgrade to succeed, but it’s better than nothing.

I hope you find this useful. I’m enjoying my shiny new GNOME 3 desktop and it’s off for a good start. My main complaint is that hamster-applet (time tracker) has not yet been integrated in the shell.


    • says

      True enough, but why not doing the work in Debian from the start? The packaging was in preparation in experimental for several months already… then it’s easy to upload the resulting source packages in a PPA. The opposite is more cumbersome.

      Furthermore while we have a quick view in the PTS of Ubuntu changes, this is not the case when the packaging is done in a PPA.

      • says

        The reasons why we don’t push directly into the experimental branches:
        – We’re generally not running Debian so we can’t test them properly.
        – It would more than double the amount of time to do a packaging update.
        – We want the packages to hit the PPA asap so they get tested, waiting for them to go into experimental would be too slow.

        We do of course pull changes when Debian is ahead in version (as far as I could tell we have been ahead in most packages).

        It’s been a bit odd this cycle as normally we wouldn’t expect the packages to be in a PPA. So the PPA packages are invisible to your PTS and the svn branches are invisible to our tracker:

        • says

          The test part is certainly the most troublesome but something that can be mitigated, I mean it’s not about you doing everything… it’s about _cooperating_. If you’re the first doing the packaging, I’m sure some DD will be pleased to do the build, test and to upload.

          I don’t know why you believe that it would double the amount of time to do the packaging… I don’t think it would. And it would certainly reduce over time as the delta would me smaller.

          You can still upload to the PPA even before the package made it to experimental (although note that it’s quick to make it to experimental… the archive is updated 4 times a day).

          BTW I am a Debian developer and have a natty virtualbox, you can do the same in the opposite direction 🙂

          • says

            It just doesn’t sound like co-operation to me where both sides do packaging updates, but only one side is expected to push those changes into the other distribution (at a non-trivial cost in time). The correct module in my opinion is to collaborate on packaging standards and pull changes where this gives value for each project.

            Ubuntu is not just “built on top” of Debian. Both projects have different requirements and release schedules and that means there will always be packaging differences (even if only in upstream version). The distributions are in a sibling relationship, not a parent child one.

          • says

            Robert, you are entitled to your opinion, but I don’t share it. While I have respect for the work you do in Ubuntu, I don’t consider Ubuntu a sibling to Debian in terms of packaging.

            The automatic flow of packages is from Debian to Ubuntu… that makes it clear enough IMO.

            I know that for GNOME you’re always ahead of Debian and you’re way more agressive to push newer version but that doesn’t mean that the relationship needs to be inverted. In fact, I would really like to see more Ubuntu people involved in preparing the latest GNOME in Debian experimental and sync packages from there in Ubuntu.

  1. says

    Launchpad PPA in Debian – incorrect, very much bugs and instability (as in Ubuntu)
    Yesterday I installed Gnome 3 from experimental. Bugs:
    – dont work gnome-shell(delay of 20-30s and many other errors) Maybe my videocard NVidia 5500(128Mb,2000 fps) is too slow?
    – I disabled gnome-shell of 10 attempts.(fallback mode) Gnome Control Center need dconf?
    – don`t work flashplugin in epiphany 3
    – don`t change theme gtk-3. I did it this way:
    mkdir ~/.gtk-3.0
    gtk-theme-name = Adwaita
    gtk-fallback-icon-theme = gnome

    P.S. /etc/apt/preferences.d/gnome not working in aptitude: update to experimental.

  2. Ana says

    Very interesting post. Unfortunately I don’t feel atracted at all neither by Unity nor GNOME 3 so in the short-medium term I think I will throw myself into KDE waters … maybe Kubuntu … maybe OpenSUSE (and its very interesting Tumbleweed aproach) … I guess Debian also has a KDE branch … It’s not decided the ‘flavour’ yet, but the KDE jump is a closed issue. Either way … the post was very interesting.


    • says

      You can run any desktop you want with Debian, of course.

      apt-get install kde

      And Tumbleweed is somewhat similar to “testing” in that it’s a rolling distribution.

  3. dileks says

    I enjoyed reading this article, category “worth reading”.

    Why did you use 150 as pin-priority?
    Does this update/upgrade automatically to new available packages on apt-get?
    I was used to 200 as value (IIRC from backports packages).

    • says

      150 or 200 doesn’t matter, it just needs to be a value > 100 (the priority of installed packages) and < 500 (the default priority of non-installed packages).

  4. dileks says

    This week GNOME-3 made an enermous progress in the Debian repos (sid + exp).
    Can you comment on the recent updates – especially on your “Package: …” line?

    • says

      The pinning in still required (as long as the packages are in experimental) so the Package line doesn’t change really. But we have apt 0.8.14 now so it can be simplified… replace all packages where gnome appears with “/gnome/”.

      Package: /gnome/ alacarte brasero cheese ekiga empathy gdm3 gcalctool gconf-editor ….

  5. says

    Gnome3 is pretty.
    But still no evolution and evince’s deb package for i386 in debian,
    gnome-session is still 2.91 version
    Just waiting .

    • says

      evolution is fixed since monday, it was a trivial packaging error, and for evince it’s the same, Frédéric Peters will fix it today.

      gnome-session 2.91 instead of 3.0 is not a big deal, it probably hasn’t changed much.

      • says

        So what happens to users who are using a rolling Testing? Will all the desktop settings get migrated to GNOME3 and GNOME 2 packages be removed once it hits?

        • says

          Most packages will be just “upgraded” as usual. Very few packages will be removed as a consequence of the switch to GNOME 3.

          For the settings, it depends. I guess most of them will be preserved but glitches are to be expected given that many software have switched from gconf to dconf (via gsettings) and also because of infrastructural changes…

  6. says

    Hi there. I’m running Debian Unstable/Sid amd64. With and without the pinning I can’t seem to hop on over to Gnome 3. Any tips? Thanks!

  7. says

    When I initially commented I clicked the -Notify me when new responses are added- checkbox and now every single time a comment is added I get 4 emails with all the identical comment. Is there any indicates you possibly can remove me from that services? Many thanks!

    [WORDPRESS HASHCASH] The poster sent us ‘107152335 which is not a hashcash value.

    • says

      Delfina, I verified but the email you used is not (no longer?) subscribed. Maybe you found the link in the mail that allows you to unsubscribe by yourself. If that’s not the case, please forward me to the unwanted mails that you get.