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 trydpkg-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 onapt-get
,apt-cache
andless
. Top prize goes toapt-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.
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 ofdpkg -L
and did not notice the symlink.