Upgrade to Debian Unstable
This post would attempt to chronicle the heartaches and the niceties of upgrading to Debian unstable.
It took me almost a week (spare-time) to do the upgrade right from Debian Squeeze to Debian unstable or Sid (Sid stands for Still in Development), the process is still ongoing but not as intensive as before. This is my /etc/apt/sources.list
#KDE Experimental package repository from Debian http://qt-kde.debian.net/
deb http://qt-kde.debian.net/debian experimental-snapshots main
deb-src http://qt-kde.debian.net/debian experimental-snapshots main
There are/were multiple reasons for having all of them. The QT-KDE because I wanted to use some parts of the KDE 4.6SC snapshots (even though 4.8SC is already out but not in any Debian repository that I know of) .
For the others, the best reason perhaps is that I am able to figure out what the version of a particular package is in all of them at any point in time.
For instance :-
$ apt-show-versions -a gnome-games
gnome-games 1:2.30.2-2 install ok installed
gnome-games 1:2.30.2-2 stable ftp.us.debian.org
gnome-games 1:2.30.2-2 testing ftp.us.debian.org
gnome-games 1:2.30.2-2 sid ftp.us.debian.org
gnome-games 1:2.91.5-2 experimental ftp.debian.org
gnome-games/stable uptodate 1:2.30.2-2
Isn’t that lovely output. It is telling me at a glance which version is in which channel.
The reason it took me almost a week is because there was quite few packages which I had pulled from experimental which now I now had to downgrade to Sid in order to have a functioning desktop. There are still something like 50 odd packages which are still stuck in dist-upgrade but I’m not updating/upgrading to them as they either have unfixed or grave bugs or are depending on other packages for successful installation (transitions).
An example of the same :-
$ sudo aptitude install openssh-client
The following packages will be upgraded:
1 packages upgraded, 0 newly installed, 0 to remove and 54 not upgraded.
Need to get 0 B/1,010 kB of archives. After unpacking 217 kB will be used.
Do you want to continue? [Y/n/?] Y
Reading package fields... Done
Reading package status... Done
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
grave bugs of openssh-client (1:5.5p1-6 -> 1:5.8p1-4)
#612607 - Connecting to older ssh version has cipher negotiation problem
Merged with: 613505 613649
Are you sure you want to install/upgrade the above packages? [Y/n/?/...] n
****** Exit with an error by force in order to stop the installation.**********************************************************************************
E: Sub-process /usr/sbin/apt-listbugs apt || exit 10 returned an error code (10)
E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
A package failed to install. Trying to recover:
As can be seen there is a grave bug in openssh-client. Similar grave and unfixed bugs are there in almost half of other packages. The other is of course are unfinished transitions.
An example of same :-
python-cairo python-glade2 python-gobject python-gtk2
4 packages upgraded, 0 newly installed, 0 to remove and 51 not upgraded.
Need to get 2,533 kB of archives. After unpacking 77.8 kB will be used.
The following packages have unmet dependencies:
python-gnome2: Depends: python2.5-gobject which is a virtual package.
Depends: python2.5-gtk2 which is a virtual package.
python-gtksourceview2: Depends: python2.5-gobject which is a virtual package.
Depends: python2.5-gtk2 which is a virtual package.
python-gconf: Depends: python2.5-gobject which is a virtual package.
The following actions will resolve these dependencies:
Remove the following packages:
Leave the following dependencies unresolved:
33) alacarte recommends gnome-panel
34) gnome-control-center recommends gnome-session
35) gedit-common recommends gedit
36) gedit recommends python-gnome2
37) gnome-applets recommends deskbar-applet
38) gnome-applets recommends python-gconf
39) gnome-applets recommends python-gnome2
40) gnome-applets recommends python-gnomeapplet
41) gnome-games-data recommends gnome-games
42) gnome-orca recommends gnome-mag (>= 0.12.5)
43) gnome-panel-data recommends gnome-panel
44) gnome-desktop-environment recommends gnome-accessibility
45) gnome-desktop-environment recommends gnome-games (>= 1:2.30)
46) gnome recommends update-notifier
47) software-center recommends update-notifier
48) totem recommends totem-plugins
49) update-manager-core recommends update-manager-gnome (= 0.200.5-1)
Accept this solution? [Y/n/q/?]
The answer perhaps would be to update dependencies to python2.6 or python2.7 (eventually)
Overall though I’m loving Debian Sid. One of the biggest benefits is being able to see the effects of font changes in GNOME-Terminal. I do not remember when was the last time where I was able to change the fonts and see the changes happening to the way they look. At least not in the last 3-4 years that I had been straddling on Ubuntu.
The reasons why I went to Squeeze is frankly I wanted to take part in the transition that is going to be GNOME 3 and Debian Testing is out because it tends to throw packages out (a lot) with no hopes of getting them back (at least in short to medium-term) . In those terms testing is whimsical. Also the fact there are quite a few people who use sid/unstable as their production machines so the question was why not I. Another factor that I used is the possibility to learn and discover is a bit more than you are in secure environments.
I have to say the transition would have been much more painful if the good people of debian forums hadn’t been able to help to figure out things. One command in particular made lot of my grief simplified.
apt-show-versions -a $(apt-show-versions |grep experiment|cut -d/ -f1)|grep -E "unstable|sid"|grep -v "No unstable version"
Now this was one told by a certain bugsbunny of Debian Forums and it certainly made me know which packages I can downgrade to Sid without causing an alarm. There are still packages which I have got from experimental which I hope to downgrade to Sid as well in the near future (as and when a package is there in Sid).
Incidentally the link I had given the link last time of GNOME Status in Debian is not of binary packages but of source packages. A source package may or may not be broken into several or single binary package/s depending on the complexity of the package and any benefits that might be breaking it into multiple packages/libraries which could in turn be used by other packages as well. I think that is/maybe the general idea.
Two examples of the source packages breaking into two or more binary packages are :-
a. Gstreamer :- Now you see the source package and see that it has been broken into 7 different packages and
b. atk which also is broken into 7 packages as well.
While I cannot say that all source packages would be in multiple binary packages, it does mean that something like in the range of 200-300 binary odd packages together will make the NEW GNOME 3 ecosystem. At the current rate I do see the whole thing settling in about 2 months or a little more time in Debian unstable/sid and then a bit more to make its home in testing.
In the short while, I have been tracking that page, package releases with new versions have been dicing between 1-2 packages every 2-3 days. Meanwhile, in another six months from now GNOME would have released GNOME 3.2 (at least that’s the idea).
While it would be fool-hardy to talk about that release now, one thing is for sure, that transition should be more easy (and less pain) than the change from GNOME 2.3 to GNOME 3.0 . There is also supposed to be a mid-point 2.80 to be released sometime soon whether Debian would also take that release or just go with GNOME 3.0 is only the Debian Developers can answer.
What would be fascinating is to see whether the goal-posts would be to have GNOME 3.0 or if found suitable to change it to GNOME 3.2 as they might have some modules/apps or something which were not ready for GNOME 3.0 release .
All in all, lots of interesting things happening both in Debian and GNOME worlds. Looking forward to see the new GNOME 3 when it finally lands all in Debian Unstable.
Update 17/02/12 :- Some more tips :-
a. What I have done in the past when doing something like this is not going all the way. What I usually do is take few packages which I know are not dependent on critical stuff. One thing to note though is that APT and its brethren need to be updated before going through the next phase. I just cannot stress this enough. This is there in the release notes but then many people do not read the release notes and it does come to bite you .
a1.which means Libreoffice,GNOME,package managers would be upgraded later and the kernel and its related stuff would be upgraded at the very last.
a2.The first things to upgrade would be almost all the optional components.After doing the upgrades and seeing that apt-listbugs haven’t reported any critical bugs, do the upgrade and reboot the system. One of the recommended ways is if you are going to be on the stable is to use the smallest installation media (have the smallest map) and then upgrade. That is a good way PROVIDED you are comfortable with having no desktop and can move in the xterm with impunity. If you are not or lazy like me/don’t want to lose beauty of the GUI whistles then can do the above.
b.Especially for laptop-users if you are using wi-fi to access Internet or to take updates to not touch the kernel that much more. I have seen and gone through where for some unknown reason during an update the wi-fi does not respond.Which brings another point.
c.Have a standby machine :- Sometimes when you are dist-upgrading (because that is what you are actually doing) its possible at times to lose the desktop, to lose networking or something else altogether. If you have a standby machine then you can probe to the machine and see what is the matter. One has to understand that SID is usually used by developers or people who like living in the fast lane. A paragraph from Debian’s reference puts the whole thing very succinctly.
I am by no means suggesting that your machine will break(metaphorically of course) but that it could, so prevention is better than cure.
Transitioning from stable to unstable is happening all the time (as well as vice-versa but that’s a topic for another day) so it’s a good chance that most of the transition related bugs (and user scenarios) may have been taken into account but you never know (as there are 35k packages and x number of packages in combinations along with the ever-expanding number of hardware port architecture so it tends to get difficult at times to say what will work or does not). In case if you do get bitten and you do have another machine running Debian then it is a good idea to report the issue on the Debian BTS and mark it critical and grave. Most of the developers on #debian-bugs and especially #debian-release would probably be interested in seeing the use-case.