Step-By-Step Guide To Upgrade Ubuntu 8.04 To 8.10 With Screenshots - Hardy Heron To Intrepid Ibex


Ubuntu LogoThis guide will help you to upgrade from Ubuntu 8.04 Hardy Heron To Ubuntu 8.10 Intrepid. This tutorial has total of 14 steps with appropriate screen shots.

Step 1. Check the Ubuntu Version before Upgrade.

How to check the current version of Ubuntu? You have the following three options:

Option 1: Check the /etc/issue file for Ubuntu version.

$ cat /etc/issue
Ubuntu 8.04.1 \n \l

Option 2: Execute the lsb_release -a command to identify Ubuntu version.

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 8.04.1
Release:    8.04
Codename:    hardy

Option 3: View the /etc/lsb-release file directly to identify the Ubuntu version.

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"

Step 2: Set the “Show new distribution releases” to “Normal releases” in Software Sources.

Click on System Menu -> Administrator -> Software Source -> Click on Updates TAB ->, which will display the Software Source dialogue box.

Set the value in the “Show new distribution releases” drop-down list to “Normal releases” as shown below.

Ubuntu Software Resources

Fig: Ubuntu Software Sources

Step 3: Launch “Update Manager” To Upgrade from Ubuntu 8.04 to Ubuntu 8.10. Upgrade Hardy Heron To Intrepid Ibex

Click on System Menu -> Administrator -> Update Manager, which will now display “New distribution release 8.10 is available” message along with a ‘Upgrade’ button as shown below.

Ubuntu Update Manager

Fig: Ubuntu Update Manager

Step 4: Start the Upgrade Process and Read the Release Notes.

Click on the ‘Upgrade’ button from the “Update Manager”, which will display the release notes dialogue. Click on Upgrade in the release notes dialogue.

Ubuntu Upgrade Release Notes

Fig: Ubuntu Upgrade Release Notes Screen

Step 5: Downloading the Upgrade Tool

Upgrade tool download notification will be displayed.

Ubuntu - Download Upgrade Tool

Fig: Ubuntu Upgrade - Downloading the Upgrade Tool Screen

Step 6: Preparing to Upgrade.

Distribution Upgrade message window with the heading “Upgrading Ubuntu to version 8.10″ will be displayed, indicating exactly what step is currently executed by the upgrade process.

Ubuntu - Preparing to Upgrade

Fig: Ubuntu - “Preparing to Upgrade” Message

Step 7: Setting New Software Channels.

The following screen will indicate that currently it is setting new software channels.

Ubuntu - Setting new Software Channels

Fig: Ubuntu - “Setting new Software Channels” Message

Step 8: Do you want to start the Upgrade.

This window will give a summary on how many package will be removed, installed and upgraded. This also will indicate how long will it take for the system to download all the packages for upgrade based on your connection speed.

Click on the ‘Start Upgrade’ button to start the upgrade process.

Ubuntu - Upgrade Confirmation

Fig: Ubuntu Upgrade Confirmation Message

Step 9: Getting new packages.

This window will provide the following information:

  • Total number of packages downloaded.
  • Total number of packages that needs to be downloaded.
  • Approximate remaining time to download all the packages.
  • Current download speed.
Ubuntu - Getting New Packages

Fig: Ubuntu - “Getting new packages” Message

Step 10: Installing the Upgrades.

At this stage, system will start installing all the packages that was downloaded from the previous steps.

Ubuntu - Installing the upgrades

Fig: Ubuntu - “Installing the upgrades” Message

Step 11: Replace /etc/update-manager/release-upgrades file?

This is because we’ve set the new distribution releases to Normal releases in Software Sources dialog as part of the Step 2.

Click on ‘Keep’.

Ubuntu - Replace release-upgrades file

Fig: Ubuntu - Replace /etc/update-manager/release-upgrades?

Step 12: Cleaning Up.

As part of the Cleaning up step, it will display the option to delete obsolete packages? Click on “Remove” for the “Remove obsolute packages” question.

Ubuntu Upgrade - Cleaning Up

Fig: Ubuntu Upgrade - “Cleaning Up” Message

Ubuntu - Remove Obsolete Packages

Fig: Ubuntu Upgrade - Remove obsolte packages?

Step 13: Restart the System to complete the Ubuntu Upgrade.

Click on Restart Now.

Ubuntu - Restart after Upgrade

Fig: Restart System after Ubuntu Upgrade

Step 14. Check the Ubuntu Version After Upgrade. This should be 8.10.

After the upgrade, use one of the Options mentioned below to make sure it shows Ubuntu 8.10.

How to check the current version of Ubuntu? You have the following three options.

Option 1: Check the /etc/issue file for Ubuntu version.

$ cat /etc/issue
Ubuntu 8.10 \n \l

Option 2: Execute the lsb_release -a command to identify Ubuntu version.

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 8.10
Release:    8.10
Codename:    intrepid

Option 3: View the /etc/lsb-release file directly to view the Ubuntu version.

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.10
DISTRIB_CODENAME=intrepid
DISTRIB_DESCRIPTION="Ubuntu 8.10"

Post from: The Geek Stuff

Step-By-Step Guide To Upgrade Ubuntu 8.04 To 8.10 With Screenshots - Hardy Heron To Intrepid Ibex

How not to write documentation.


I've grown accustomed to ruby having poorly accessible documentation. What I mean by 'poorly accessible' is the fact that ri Array gives me a list of things Array can do (which is nice), but to actually find out about Array.delete I have to run ri Array.delete. I got used to Python's often-helpful ways of pydoc showing you what appears to be "as much as possible" when you pydoc a class, module, or method.

Maybe I'm doing it wrong. Either way, the following is annoying and unhelpful. While it tells me the arguments that should be passed, and what is returned, it doesn't help me really know more about the function. Luckly, I'm already familiar with select from other languages.

snack(~) % ri IO.select
------------------------------------------------------------- IO::select
     IO.select(read_array 
     [, write_array 
     [, error_array 
     [, timeout]]] ) =>  array  or  nil
------------------------------------------------------------------------
     See +Kernel#select+.
Ok, fine... Let's look at Kernel#select.
snack(~) % ri Kernel#select
---------------------------------------------------------- Kernel#select
     IO.select(read_array 
     [, write_array 
     [, error_array 
     [, timeout]]] ) =>  array  or  nil
------------------------------------------------------------------------
     See +Kernel#select+.
*sigh*

Fedora 11 Release Name - Vote For It

Fedora board has approved following names as potential candidates for the Fedora 11 Release.

  • Blarney
  • Brasília
  • Claypool
  • Duchess
  • Euryalus
  • Indomitable
  • Leonidas
  • Zampone


I like Indomitable. (It sounds really cool). Even if you don’t vote, please leave a comment and let us know which name you liked from the above list?


To learn more about how Fedora project choose these different suggestions, click here. The final release name for Fedora 11 will be announced on Jan 10th. I hope it is Indomitable.

To vote, click here and login with your Fedora account uid/pwd.  You should’ve signed The Fedora Project Individual Contributor License Agreement (CLA) and should belong to a non-CLA group.

Following are the names for previous Fedora releases.

  • Fedora 10 (Cambridge)
  • Fedora 9 (Sulphur)
  • Fedora 8 (Werewolf)
  • Fedora 7 (Moonshine)
  • Fedora Core 6 (Zod)
  • Fedora Core 5 (Bordeaux)
  • Fedora Core 4 (Stentz)
  • Fedora Core 3 (Heidelberg)
  • Fedora Core 2 (Tettnang)
  • Fedora Core 1 (Yarrow)

Post from: The Geek Stuff

Fedora 11 Release Name - Vote For It

Make Vim as Your Perl IDE Using perl-support.vim Plugin

Perl Vim LogoThis is a guest post written by SathiyaMoorthy.

This article is part of the ongoing Vi / Vim Tips and Tricks Series. As a programmer, you may do lot of repetitive tasks while coding such as:

  • Adding file header
  • Adding function/frame comment
  • Including default code snippet
  • Performing syntax check
  • Reading documentation about a function
  • Converting a code block to comment, and vice versa

The Perl-Support Vim Plugin - Perl-IDE offers easiest way to do all of the above, saving lot of time and keystrokes.

The plugin was written by Fritz Mehner, who explains the purpose of the plugin as: “Write and run Perl-scripts using menus and hot keys”.

This article explains how to install the plugin in 3 easy steps and 7 powerful features of the plugin.

3 Steps to Install the Perl-Support Vim Plugin

Step 1: Download Perl-Support Vim Plugin

Download the plugin from vim.org website.

$ cd /usr/src
$ wget http://www.vim.org/scripts/download_script.php?src_id=9701

Step 2: Install the Perl-Support Vim Plugin

$ mkdir ~/.vim
$ cd ~/.vim
$ unzip /usr/src/perl-support.zip

Step 3: Enable the plugin in the ~/.vimrc

Add the following line to the ~/.vimrc to enable the plugin for Vim editor.

$ vim ~/.vimrc
filetype plugin on

7 Powerful Features of Perl-Support Vim Plugin

Feature 1: Add Automatic Header to *.pl file

When you open a file with the extension .pl it opens the file with header as shown below. This will also place the cursor in the Description field in Insert mode.

$ vim myprogram.pl
#!/usr/bin/perl
#===================================================
#
#         FILE:  myprogram.pl
#
#        USAGE:  ./myprogram.pl
#
#  DESCRIPTION:
#
#      OPTIONS:  ---
# REQUIREMENTS:  ---
#         BUGS:  ---
#        NOTES:  ---
#       AUTHOR:  Dr. Fritz Mehner (mn), mehner@fh-swf.de
#      COMPANY:  FH Südwestfalen, Iserlohn
#      VERSION:  1.0
#      CREATED:  12/23/2008 03:47:07 PM
#     REVISION:  ---
#===================================================

use strict;
use warnings;


To change the default value of the AUTHOR and COMPANY, modify the default value in ~/.vim/perl-support/templates/Templates

$ vim ~/.vim/perl-support/templates/Templates
|AUTHOR|    = SathiyaMoorthy
|AUTHORREF| = sm
|EMAIL|     = test@test.com
|COMPANY|   = mycompany


Now, when you create a new perl file, it will show the modified values for AUTHOR and COMPANY as shown below.

$ vim myprogram.pl
#!/usr/bin/perl
#===================================================
#
#         FILE:  myprogram.pl
#
#        USAGE:  ./myprogram.pl
#
#  DESCRIPTION:
#
#      OPTIONS:  ---
# REQUIREMENTS:  ---
#         BUGS:  ---
#        NOTES:  ---
#       AUTHOR:  SathiyaMoorthy (sm), test@test.com
#      COMPANY:  mycompany
#      VERSION:  1.0
#      CREATED:  12/23/2008 04:09:23 PM
#     REVISION:  ---
#===================================================

use strict;
use warnings;


Note: To add custom fields to the header, modify the ~/.vim/perl-support/templates/file-description.template file and add your own custom field.

Feature 2: Adding Perl Subroutine using \isu

For writing a subroutine, type \isu in normal mode, which will prompt for the subroutine name (as shown in Fig1 below) and inserts the subroutine with default function content (as shown in Fig2 below).

Perl Support Insert Sub-Routine
Fig 1: Prompt User For Sub-Routine Name


Perl Support Plugin Insert Sub-Routine
Fig 2: Insert Sub-Routine Automatically to the Perl Code

Feature 3: Insert a Function Header using \cfu

For inserting a function header, type \cfu in normal mode, which will add the comment as shown below.

Perl Support Add Function Comment
Fig 3: Insert Function Comment to the Perl Code

Feature 4: Add a Frame comment using \cfr

To add a frame comment, type \cfr in normal mode, which will give the following formatted comment.

Perl Support Frame Comment
Fig 4: Insert Frame Comment to the Perl Code

Feature 5: Save the file and execute it immediately using \rr

Type \rr in the normal mode, which will save the file and execute it immediately.

Feature 6: Comment a block of code using \cc

To change a entire code block to comment, select the code in visual mode and type \cc.

Feature 7: Insert pre-defined code-snippet to the Perl code using \nr

The plugin comes with few pre-defined code snippets that you can insert into your code. Following are the default code snippets that comes with the plugin.

$ ls ~/.vim/perl-support/codesnippets/
dot.SmallProf                print-data-structure-with-Dumper.pl
free-software-comment        print-hash.pl
inside-out-class.pl          print-hash-sorted.pl
module-interface.pl          process-all-files-in-a-directory-recursively.pl
new.pl                       slurp-file.pl
pod-template-application.pl  SmallProf-variables.pl
pod-template-module.pl


For example, if you want to create a function that will print the hash values, you can re-use it from the existing code snippets. Following is the content of the print-hash.pl pre-defined code snippets.

$ cat ~/.vim/perl-support/codesnippets/print-hash.pl

#----------------------------------------------------------------------
#  subroutine : print_hash
#----------------------------------------------------------------------
sub print_hash {
  my  $hashref  = shift;      # 1. parameter : hash reference
  print "\n";
  while ( my ( $key, $value ) = each %$hashref ) {
    print "'$key'\t=>\t'$value'\n";
  }       # -----  end while  -----
} # ----------  end of subroutine print_hash_sorted  ----------


To insert this into your working perl program, type \nr from the normal mode inside vim, which will prompt “read snippet /home/rnatarajan/.vim/perl-support/codesnippets/”, type print-hash.pl at the end and press enter, which will insert the content of the ~/.vim/perl-support/codesnippets/print-hash.pl to your working file automatically.

Note: You can define your own code snippets and place it under ~/.vim/perl-support/codesnippets/. You can also build your own code snippets from the existing code - select the part of code need to be made as code snippet, press \nw, and give a file-name to it. From next time, type \nr and the file-name to get your custom code snippet.


There are lot of powerful features in the PerlSupport Vim Plugin. Read the documentation for more information. The documentation is located in the following location on your system.


This article is part of the ongoing Vi / Vim Tips and Tricks series. Please subscribe to TheGeekStuff and don’t miss any future Vi and Vim editor tips and tricks.


This article was written by SathiyaMoorthy, developer of EPQA. Sathiya got impressed by the 15 Examples To Master Linux Command Line History article on this blog and became a regular reader and contributor. The Geek Stuff welcomes your tips and guest articles.

Post from: The Geek Stuff

Make Vim as Your Perl IDE Using perl-support.vim Plugin

Site design refresher / CSS overflow property on IE 7

I updated some of this site's design. The most obvious changes are cosmetic (new banner logo at the top, slight color/layout differences). The least obvious change (hopefully) is that this site is now layed out purely with CSS, not tables.

After refreshing my rotting CSS braincells, I got a layout working properly and was quite happy. Then I tested in IE, and saw my <pre> tags being displayed incorrectly (according to my desire, not necessarily the code, which don't always align):

The above should have been two lines of text with a horizontal scroll bar. I want to say use scroll-bar for text that's too wide but expand vertically without a scroll bar: Never a vertical scroll bar, only ever a horizontal one.

I've spent a bit today scouring the web with not much help. I've randomly permuted css values for overflow, overflow-x, overflow-y, min-height, etc. Having failed that, I read everything I could find from randomly permuted search queries, one of which lead me to a depressingly long detail about IE6's expanding box problems. The page claims (and several others do, also) that IE7 fixes several box expansion problems.

I created a very small demo with minimal CSS to show the problem here: Click here to view the demo. It includes the solution I found, detailed below.

After some other random permutation, I gave up and tried wrapping the pre in a div and applying the overflow properties to the div. It worked. It's 2009 and I still have to deal with weird and obscure browser rendering inconsistencies. I came up with this:

<style>
  .scroll-wide {
    height: auto;
    overflow-x: auto;
    overflow-y: hidden;
    max-width: 500px;
  }

  /* On firefox, pre tags have a top and bottom margin > 0, which makes your 
   * scrolling div have a blank top line, which isn't what
   * we want. Fix one weirdness to find another? I didn't fully investigate.
   * Here's the fix: */
  div pre {
    margin-top: 0;
    margin-bottom: auto;
  }
</style>

...

<div class="scroll-wide">
  <pre>
    stuff
  </pre>
</div>

Solving this with wrap-pre-in-a-div can be automated with jQuery and a CSS definition:

// javascript
$("pre").wrap("<div class='pre-wrap'></div>");

// In CSS
div.pre-wrap {
  /* overflow/height/whatever options */
}
It's still possible I was doing something wrong and that this hack isn't necessary, but I don't know. I'm just glad to have it working now.

PS: If you use Meyer's reset.css, you'll want to include pre { margin-bottom: auto; } , or IE will again clip the bottom of the pre contents with the scrollbar.

RAID is not a backup techology.

I spent some time yesterday making backups of things I care about (code, content here, etc) in two remote places, in case anything should happen. Now two places are copying down data for me every few days. Backups are easy to ignore, but critical when you lose data.

Today, I heard about journalspace going down because it lost data and didn't have backups. While I don't use the service, so it doesn't affect me, the failure they experienced makes for a great case study in false data security and backups. From the front page of journalspace.com:

Here is what happened: the server which held the journalspace data had two large drives in a RAID configuration. As data is written (such as saving an item to the database), it's automatically copied to both drives, as a backup mechanism.

The value of such a setup is that if one drive fails, the server keeps running, using the remaining drive. Since the remaining drive has a copy of the data on the other drive, the data is intact. The administrator simply replaces the drive that's gone bad, and the server is back to operating with two redundant drives.
RAID is not a backup solution. RAID can get you, depending on the configuration, better throughput and/or better data reliability. If you lose a drive in some raid configurations, the system can continue working normally without that drive. Backups should copy data somewhere other than the machine hosting the original data. The page goes on:
So, after nearly six years, journalspace is no more.
After almost 6 years nobody had a cron job that backed up data to somewhere offsite (or a more complex backup system)? Ouch! My condolences to journalspace and its users on the loss.

Losing important data unexpectedly will sting you bad if you don't have appropriate backups. The only thing to do is learn from this mistake and move on, accepting the consequences of the loss.

This isn't the first website I've heard of having to shutdown because they permanently lost data. Learn from their mistakes, keep backups of your stuff!

Found some old presentations

While doing backups of my important personal stuff (this website, my code, etc), I found some presentations I'd done in school: I also removed a pile of comments that were spam or people testing the comment system. Some comments had unicode characters in them causing python to barf (I have a python cgi script that helps me search/delete comments), but doing .encode("latin-1") fixed it.

There were only a few spams that got past my scripts. I might add word filtering to the pyblosxom comment plugin so crap mentioning viagra and cialis won't even be permitted. Still seeing these happily in my logs:

REJECT: Comment attempt by 193.203.99.31 rejected. Reason: expired secret, referer: http://www.semicomplete.com/blog/articles/week-of-unix-tools/day-1-sed.html
REJECT: Comment attempt by 78.110.175.18 rejected. Reason: javascript test failed (expiration ok), referer: http://www.semicomplete.com/projects/xdotool/

Happy New Year 2009 - From Geek and The Doll

Happy New Year 2009
Photo Courtesy: Dekuwa


Happy New Year to all TGS readers. I Wish You and Your Family a Happy and Healthy New Year 2009.


Happy New Year from me and my daughter

2008 was a fantastic year for my blog. I started this blog on May 2008 and currently it has 800+ subscribers and a Google Page Rank 4. I could have not achieved this without your tremendous support. I sincerely appreciate your support from my heart.

Visit the Best of the Blog section for the most popular article of 2008 on The Geek Stuff.

Post from: The Geek Stuff

Happy New Year 2009 - From Geek and The Doll