Today I decided I had spare time to upgrade my server from 10.04 ubuntu to 11.04.
I remotely connected to the server through SSH using Putty in Win7 as I typically do, started the do-release-upgrade, and walked away.
This can be hazardous, for several reasons.
1) I had not turned on KeepAlives in putty, meaning if the release process needed user input for some reason, putty would timeout after a certain period of time because of inactivity, leaving my installation hanging and without any ability to resume.
2) If for some reason I lost internet connection (albeit I am on the same switch and this scenario is unlikely, had I been connecting to a remote machine, this scenario is highly probably)
3) I had not used ‘screen’ to keep my ssh session active and resume-able in case of a disconnect like #1 or #2.
Upon returning from watching ‘Takers’ (critic fodder for those who enjoy ripping everything apart instead of enjoying things for what they are, but nonetheless an entertaining movie and worth a watch) I saw indeed scenario #1 had occurred and I was presented with a dead ssh session and a partially completed do-release-upgrade.
Luckily the creators of Ubuntu were nice enough to have the do-release-upgrade process automatically create a screen under the root user (this is a tricky part because `screen -list` without sudo shows no screens to resume). Keep in mind I think this only works if the server has not rebooted since the `do-release-upgrade` process was started.
To resume my broken ssh connection I reconnected to the server (ssh was still active, if it was not, the `do-release-upgrade` process had also started a secondary ssh connection at port 1022 in case the primary sshd client was terminated in the upgrade process… pay attention to the installation when u first start the process, and Ubuntu clearly states which port the secondary ssh connection is created on — but fails to mention the resume-ability of `sudo screen -list`) and ran the following command `sudo screen -list` and indeed saw there was an existing screen to be resumed.. but how to resume it?
Thankfully I there is a way, `sudo screen -d -r`
This allowed the server to detach ‘-d’ from the previous connection, and then reconnect ‘-r’ using my current one.
The do-release-upgrade took off exactly where it left off (asking if I should allow php.ini to be upgrade, or to keep my existing version) making me, a very happy, and thankful Ubuntu 11.04 upgrader.
Thank you for this, whomever decided this was a good idea, Canonical Ltd..