First pratical lesson

Fri, 05 Jun 2009 22:57:39 -0000
debian, eng, etiopia, pdo, ubuntu

Notes after today's training session.

Small index of most used shell commands:

ls - list directory contents

cp - copy files and directories

mv - move (rename) files

rm - remove files or directories

find - search for files in a directory hierarchy

cat - concatenate files and print on the standard output

more - file perusal filter for crt viewing

less - opposite of more (quit with 'q')

cd - Change the current directory to DIR. (use "help cd" instead of "man cd")

mkdir - make directories

rmdir - remove empty directories

Small index of commands useful for combining in pipelines:

grep, egrep, fgrep, rgrep - print lines matching a pattern

tail - output the last part of files

head - output the first part of files

sort - sort lines of text files

uniq - report or omit repeated lines

sed - stream editor

wc - print the number of newlines, words, and bytes in files

Problems found during the lesson:

You set the system default locale to Amharic, and the gdm login will be in Amharic input mode. We didn't find out how to switch it back to input roman characters. Right click on the input field to set the input method doesn't work. Since usernames are not in Amharic, you're locked out.

So you CTRL+ALT+F1, login and try dpkg-reconfigure locales. On Ubuntu Dapper, it does not work anymore.

So you dig and dig and dig and finally find that you can force a locale in /etc/default/gdm (but not in /etc/gdm/locale.conf, nor in /etc/gdm/gdm.conf).

Then the internet works for a bit and you look up how to reconfigure locales in Ubuntu. Turns out you have to use localeconf, which is not installed by default, is not in universe and thus not on the CDs, and needs to be downloaded from the Internet.

The Ubuntu wiki is all on https, which defeats any attempt of proxy caching.

An Internet proxy needs to be configured 3 times: in Gnome, in Firefox and in Synaptic (well, apt). This is especially tricky when you forgot to setup the proxy in Synaptic and seemingly unrelated applications fail, like the Ubuntu language selector, which internally invokes the package manager to download missing langpacks.

Some short descriptions in the NAME section of manpages are hard to understand, or wrong. Noted on apt-get, apt-cache and less. Top prize goes to apt-cache:

NAME
       apt-cache - APT package handling utility -- cache manipulator
DESCRIPTION
       [...] apt-cache does not manipulate the state of the system but
       does provide operations to search and generate interesting output
       from the package metadata. [...]

So apt-cache is a manipulator that doesn't manipulate. A possible improvement can be "query the APT package cache". * The language selector in Ubuntu Breezy doesn't really exit and keeps the package database locked. This seems to be fixed in Dapper, and probably had been fixed in some Breezy update. System updates here are a problem: my Dapper (with some Universe things in it) wanted to download more than 120Mb of data, and the Uni network was giving me 14Kbps. It's been a nice opportunity to teach about fuser -uva and kill. * dict, squid and many other packages from 'main' are not on the normal Ubuntu CDs: is there an easy way to build a CD with them? Or do Ubuntu CDs with extra packages already exist? I'll have to find out. * cupsys has documentation outside of /usr/share/doc, in /usr/share/cups/doc-root. * man works on all commands, except cd, which is an internal shell command and thus needs help instead of man. I should remember to ponder about autogenerating manpages from help output. * Is there an index-like manpage with a list of the core Unix commands and their short descriptions? It there's not, it's easy to generate:

    #!/bin/sh
    DIR=${1:-"/bin"}
    (
    find $DIR | while read FILE
    do
        if [ -x $FILE ] && ! [ -d $FILE ]
        then
            LANG=C COLUMNS=2000 man `basename $FILE` | \
                     grep ^SYNOPSIS -B 100 | grep ^NAME -A 100 | \
                     tail -n +2 | head -n +2 | \
                     grep -v '^[ \t]*$'
        fi
    done
    ) | sort | uniq | sed 's/^ \+//'

Try running it on /bin and /sbin: it's great!. Also, since it doesn't redirect stderr, it nicely exposes a number of manpage problems.

Lots of bugs to report when I come home: from here it'll take ages, and lots of money on the hotel internet connection, and some are Ubuntu-specific so I'd need to do everything online with Malone.

As usual, teaching is one of the best ways to find bugs.

I propose an Etch training session a month before release.

Other things to do:

Find more info about that Wikipedia live CD with Wikipedia browsable without the Internet.

Make a collection of Free technical E-books: even those Indian low-cost book editions are too expensive here, so E-books mean a lot.

Update: Matt Zimmerman writes:

I read your blog entry at http://www.enricozini.org/blog/eng/second-day-in-addis and wanted to respond as follows:

localeconf is not the standard way to configure locales in Ubuntu; what documentation told you that? It's an unsupported package from Progeny. If what you wanted was to set the system default locale from the command line, editing /etc/environment is probably the best way.

I suggest filing a bug report at https://launchpad.net/products/ubuntu-website about the HTTPS issue; I don't think it's necessary for the entire wiki to be HTTPS, only authentication.

Synaptic may be able to use the GNOME proxy settings without introducing undesirable dependencies; please file a wishlist bug

dict, squid and other packages from main are not on the Ubuntu CDs because there is no space. The DVD contains these packages.

The cupsys documentation bug was quite likely inherited from Debian and should be reported there

You can file bugs in Malone via email; this has been possible for a long time now. Please don't reinforce this misconception.

https://help.launchpad.net/UsingMaloneEmail

Update:

I filed a bug about the website on https problem: https://launchpad.net/products/ubuntu-website/+bug/54364

I filed a bug about having to setup proxy in synaptic as well: https://launchpad.net/products/synaptic/+bug/54365

The cups documentation is outside of /usr/share/doc, but there actually is a link /usr/share/doc/cupsys/online-docs that points to the documentation. We checked the output of dpkg -L and did not notice the symlink.