Configuration HOWTO
 By Guido Gonzato, [email protected]
 v1.2.2, 10 April 1998

 This HOWTO aims at making the fine--tuning of your newly installed
 Linux box quicker and easier. Here you will find a set of configura�
 tions for the most common applications, so you can start to work with
 a well-usable system.
 ______________________________________________________________________

 Table of Contents


 1. Introduction

    1.1 Why This HOWTO
    1.2 What We Will Be Configuring

 2. General System Setup

    2.1 Keyboard
    2.2 Kernel Matters
    2.3 (TT
    2.4 Hard Disk Performance
    2.5 Parallel Port Zip Drive
    2.6 Device Drivers
    2.7 Bootup Messages
    2.8 Hostname
    2.9 Mouse
    2.10 Mount Points
    2.11 (TT
       2.11.1 Security Tip
    2.12 Printer Configuration

 3. Software Configuration

    3.1 (TT
    3.2 (TT
    3.3 (TT
    3.4 (TT
    3.5 (TT
    3.6 (TT
    3.7 (TT
    3.8 TeX and Friends
    3.9 PPP
    3.10 POP Client
    3.11 X Window System
    3.12 Fortran
    3.13 Users' Configurations
    3.14 Upgrading

 4. The End

    4.1 Copyright
    4.2 Feedback
    4.3 Disclaimer


 ______________________________________________________________________

 1.  Introduction





 1.1.  Why This HOWTO


 I have installed Linux on many PCs and noted that current
 distributions are terrific but, annoyingly, lack some basic
 configuration. Most applications will work out of the box, but some
 won't. Moreover, I have noted that the same questions crop up on
 c.o.l.setup over and over again.

 To try and remedy this situation, and to have a memorandum for fresh
 installations, I wrote a do--this--and--that list that I later
 expanded to become this HOWTO. Here you will find a handful of
 configuration examples for the most common applications, programs, and
 services, which should save you a fair amount of time and work.

 A few of the examples outlined in this HOWTO are somewhat distribution
 dependent. I only have access to Red Hat and Caldera OpenLinux
 machines, so don't take any of my tips as gospel if you have
 Slackware, Debian or other distributions. In any case, reading
 documentation and the HOWTOs always pays off, so you're advised to do
 so anyway.



 1.2.  What We Will Be Configuring


 There can be endless hardware configurations for a PC, but in my
 experience one is quite common: a PC fitted with a large HD split into
 three partitions (one for DOS/Windows, one for Linux, one for the
 swap), sound card, modem, CD--ROM drive, printer, mouse. A parallel
 port Zip Drive is also becoming commonplace.

 This is the hardware I'll assume you want to configure, but it's easy
 to adapt the following tips to different configurations. It's
 implicitly assumed that you'll be root when editing/fixing/hacking.

 And now, lads, sleeves up.



 2.  General System Setup




 2.1.  Keyboard


 First of all, how to configure the keyboard. If you missed this step
 during installation or have changed your keyboard, you'll have to:


 �  choose a suitable key table from /usr/lib/kbd/keytables/; for
    example, it.map selects the Italian keyboard;

 �  edit the file /etc/sysconfig/keyboard so as it reads:
    KEYTABLE="/usr/lib/kbd/keytables/it.map";

 �  to set up the keyboard repeat rate and delay time, add this line to
    /etc/rc.d/rc.sysinit or, if you have Caldera, /etc/rc.d/rc.boot:



      /sbin/kbdrate -s -r 16 -d 500  # or whatever you like

 Upon the next reboot, the keyboard will work fine. To avoid rebooting
 and load the key table only, cd to /etc/rc.d/init.d and issue the
 command ./keytable start.



 2.2.  Kernel Matters


 IMHO, the first thing to do next is build a kernel that best suits
 your system. It's very simple to do but, in any case, refer to the
 README file in /usr/src/linux/ or the Kernel HOWTO. Hints:


 �  consider carefully your needs. Choosing a kernel configuration,
    applying the patches, and compiling it once and for all is more
    productive than reconfiguring and recompiling each month; this is
    especially true if your Linux box is a server. Don't forget to
    include support for all the hardware you might likely add in the
    future (e.g. SCSI, Zip, net cards, etc);

 �  if your PC is based on a Cyrix CPU, apply appropriate patches to
    improve performance. Information on
    <http://www.linuxhq.com/patch/20-p0591.html> ;

 �  notebook users will want to improve their LCD screen legibility by
    applying the Noblink patch. The latest version is called noblink-
    X.X.tar.gz and is available on
    <ftp://sunsite.unc.edu/pub/Linux/kernel/patches/console> .  Install
    the package, then add to your /etc/profile the line



      /usr/local/bin/cursor bgreen  # or other colour





 �  again for notebook users, if you plan to use a PCMCIA modem/fax
    don't compile serial support as a module; compile it in the kernel,
    otherwise your PCMCIA modem won't work;

 �  remember, Linux won't see your sound card unless you configure it
    properly. It's easy in most cases, but remember to enable all
    options (don't forget /dev/dsp and /dev/sound);

 �  if you get those pesky messages from modprobe indicating that some
    modules can't be located, that means that your /etc/conf.modules
    needs mending. If you don't use the ipx and appletalk modules, add
    these lines:



      alias net-pf-4 off
      alias net-pf-5 off





 �  to save time the next time you reconfigure and recompile the
    kernel, it's a good idea to save your configuration on a file and
    keep it in a safe place.


 2.3.  sendmail  Lock


 On some systems, sendmail locks the machine at boot time. Quick fix:
 make sure your /etc/hosts contains a line that reads



      127.0.0.1 localhost




 See also Section ``Hostname''.



 2.4.  Hard Disk Performance


 Your hard disk's performance can be greatly enhanced by carefully
 using hdparm(8). If your Linux distribution doesn't include it, you'll
 find on   <ftp://sunsite.unc.edu/pub/Linux/system/hardware> ; look for
 a file called hdparm-X.Y.tar.gz.

 I can't give you a general recipe, as many details depend on your hard
 disk and HD controller. Since you risk to toast your filesystem,
 please read the man page carefully before using some options. At its
 simplest, you could add the following line to /etc/rc.d/rc.sysinit:



      /sbin/hdparm -c1 /dev/hda  # first IDE drive assumed




 which enables (E)IDE 32-bit I/O support. As for the `-m' option, this
 is what hdparm author Mark Lord emailed me:

      (...) if your system uses components from the past couple of
      years, it will be fine.  Older than that, there *may* be a
      problem (unlikely).  The really buggy chips were the CMD0646
      and RZ1000 chips, used *extensively* on 486 and (early) 586
      motherboards about 2-3 years ago.



 2.5.  Parallel Port Zip Drive


 To use the parallel port version of the Zip drive you can use the
 default driver that comes with recent (2.x.x) kernels. During kernel
 configuration, make sure that SCSI support and SCSI disk support are
 enabled (either in the kernel or as a module). Remember, there can be
 conflicts between the printer and the Zip drive on the same parallel
 port.

 Zip disks are sold preformatted on partition /dev/sda4. To enable the
 Zip, all you have to do is issue



      #~ chmod 666 /dev/sda4  # everyone can access the Zip Drive
      #~ insmod ppa

 and the Zip can now be mounted as usual (better write the last line in
 /etc/rc.d/rc.sysinit). You also access the Zip drive via mtools adding
 this line to your /etc/mtools.conf:



      drive z: file="/dev/sda4" exclusive




 There's a better ppa driver than the standard one, though: have a look
 at   <http://www.torque.net/~campbell> .



 2.6.  Device Drivers


 Devices in /dev (or better, links to the actual device drivers) may be
 missing. Check what devices your mouse, modem, and CD--ROM drive
 correspond to, then do what follows:



      ~# cd /dev
      /dev# ln -s /dev/cua0 mouse
      /dev# ln -s /dev/cua1 modem
      /dev# ln -s /dev/hdb cdrom




 and, if you want, do chmod 666 to these devices (not the links, the
 actual devices!) to make them fully accessible by every user. Tip: in
 some laptops the mouse device is /dev/psaux: take this into account
 when configuring X11.

 In addition, you'll want to make the floppy accessible by non-root
 users with chmod 666 /dev/fd*. This is bound to cause security
 problems, but I don't know the details. Comments are welcome.



 2.7.  Bootup Messages


 If you want to customise the bootup messages, check whether your
 /etc/rc.d/rc.local overwrites /etc/issue and /etc/motd. If so, fire up
 your editor and go ahead.



 2.8.  Hostname


 Issuing the command hostname new_host_name may not be enough. To avoid
 the dreaded sendmail lock, follow these steps:


 �  edit /etc/sysconfig/network and change the hostname therein (e.g.
    new_host_name.localdomain);

 �  edit /etc/HOSTNAME appropriately;


 �  append the new hostname in the line in /etc/hosts:


      127.0.0.1       localhost  new_host_name.locadomain







 2.9.  Mouse


 gpm mouse services are useful to perform cut and paste in tty mode,
 and to use the mouse in some applications. Check that you have a file
 called /etc/sysconfig/mouse and that it reads:



      MOUSETYPE="Microsoft"
      XEMU3=yes




 Moreover, you must have a file /etc/rc.d/init.d/gpm. Of course, make
 sure this configuration is right for your mouse type. Tip: in some
 laptops, MOUSETYPE is ``PS/2''.

 For Caldera, all you have to do is append this line to
 /etc/rc.d/rc.boot:



      /usr/bin/gpm






 2.10.  Mount Points


 It's handy to have mount points for the floppy and other devices. For
 example, you can do the following:



      ~# cd /mnt
      /# mkdir a: ; mkdir floppy ; mkdir cdrom ; mkdir win ; mkdir zip




 This creates mount points for an MS-DOS floppy, an ext2 floppy, the
 CD-ROM, the DOS partition, and the parallel port Zip drive.

 Now edit the file /etc/fstab and add the following entries:






 /dev/fd0        /mnt/a:         msdos           user,noauto 0 1
 /dev/fd0        /mnt/floppy     ext2            user,noauto 0 1
 /dev/cdrom      /mnt/cdrom      iso9660         ro,user,noauto 0 1
 /dev/sda4       /mnt/zip        vfat            user,noauto 0 1
 /dev/hda1       /mnt/win        vfat            user,noauto 0 1




 Obviously, you must use the correct device in the first field. To
 access fat32 partitions, there's a kernel patch and information on
 <http://bmrc.berkeley.edu/people/chaffee/fat32.html> .



 2.11.  lilo (8) and LOADLIN


 Many users run both Linux and DOS/Windows on their PC, and want to
 choose at boot time which os to use. Let's suppose that /dev/hda1
 contains DOS/Windows and that /dev/hda2 contains Linux.

 Do what follows:



      ~# fdisk
      Using /dev/hda as default device!

      Command (m for help):a
      Partition number (1-4): 2

      Command (m for help):w
      ~#




 This makes the Linux partition bootable; this step ought to be carried
 out by activate when running LILO's QuickInst, but it won't work with
 my Red Hat.

 Write this basic /etc/lilo.conf file:



      boot = /dev/hda2
      compact
      delay = 50
      # message = /boot/bootmesg.txt  # write your own
      root = current
      image = /boot/vmlinuz  # boot linux by default as this entry comes first
        label = linux
      other = /dev/hda1
        table = /dev/hda
        label = dos




 Now issue /sbin/lilo and you're set. Being lilo a crucial part of your
 installation, you're strongly advised to read its documentation
 anyway.

 To boot Linux from DOS/Windows without resetting, put LOADLIN.EXE in a
 directory (in the DOS partition!) included in the DOS path; then copy
 your kernel to, say, C:\DOS\VMLINUZ. The following .BAT file will boot
 Linux:



      rem   linux.bat
      smartdrv /C
      loadlin c:\dos\vmlinuz root=/dev/hda2 r




 If you use Windows 95, set the properties of this .BAT so as it starts
 in MS-DOS mode.


 2.11.1.  Security Tip


 Making a backup copy of your MBR before installing Linux could save
 your bacon. Use restorrb (included in the FIPS package) before
 installation, or you can use a Linux rescue floppy and issue this
 command:



      rescue:~# dd if=/dev/hda of=MBR bs=512 count=1




 then make at least two copies of the file MBR on floppies. Should
 disaster strike, you'll be able to restore your old MBR by issuing:



      rescue:~# dd if=/mnt/MBR of=/dev/hda bs=446 count=1




 assuming that a floppy containing MBR is mounted under /mnt.
 Alternatively, use a DOS rescue floppy to issue FDISK /MBR.



 2.12.  Printer Configuration


 Red Hat and Caldera have a fine configuration tool, printtool; if you
 don't use these distributions, manual configuration follows.

 Let's suppose you have a non-PostScript printer you want to use to
 print raw text (e.g., C source files) and PostScript files via
 Ghostscript, which is assumed to be already installed.

 Setting up the printer involves a few steps:


 �  find out which one the parallel print device is: try



      ~# echo "hello, world" > /dev/lp0
      ~# echo "hello, world" > /dev/lp1

 and take note which one works.

 �  make two spool directories:



      ~# cd /var/spool/lpd
      /var/spool/lpd/# mkdir raw ; mkdir postscript





 �  if your printer exibits the ``staircase effect'' (most inkjets do),
    you'll need a filter. Try to print two lines with



      ~# echo "first line" > /dev/lp1 ; echo "second line" > /dev/lp1





 if the output is like this:



      first line
                second line





 then save this script as /var/spool/lpd/raw/filter:



      #!/bin/sh
      # This filter does away with the "staircase effect"
      awk '{print $0, "\r"}'





 and make it executable with chmod 755 /var/spool/lpd/raw/filter.

 �  make a filter for PostScript emulation. Write the following filter
    as /var/spool/lpd/postscript/filter:















 #!/bin/sh

 DEVICE=djet500
 RESOLUTION=300x300
 PAPERSIZE=a4
 SENDEOF=

 nenscript -TUS -ZB -p- |
 if [ "$DEVICE" = "PostScript" ]; then
         cat -
 else
         gs -q -sDEVICE=$DEVICE \
                 -r$RESOLUTION \
                 -sPAPERSIZE=$PAPERSIZE \
                 -dNOPAUSE \
                 -dSAFER \
                 -sOutputFile=- -
 fi

 if [ "$SENDEOF" != "" ]; then
         printf "\004"
 fi





 (in this example an HP DeskJet printer is assumed. Fix it to suit your
 printer).

 �  finally, add the following entries in /etc/printcap:



      # /etc/printcap
      lp|ps|PS|PostScript|djps:\
              :sd=/var/spool/lpd/postscript:\
              :mx#0:\
              :lp=/dev/lp1:\
              :if=/var/spool/lpd/postscript/filter:\
              :sh:
      raw:\
              :sd=/var/spool/lpd/raw:\
              :mx#0:\
              :lp=/dev/lp1:\
              :if=/var/spool/lpd/raw/filter:\
              :sh:





 For more complex or exotic printing configurations, the Printing-HOWTO
 awaits you.

 If you use printtool, be aware that the GSDEVICE chosen by Printtool
 will work, but not necessarily at its best for your printer. You may
 consider fiddling a bit with the file postscript.cfg; for instance, I
 changed GSDEVICE from cdj500 to djet500 and now my prints come out
 much quicker.






 3.  Software Configuration


 These are the the configuration files we are going to custimise:
 /etc/profile /etc/bashrc .bashrc .bash_profile .inputrc .less .lessrc
 .xinitrc .fvwmrc .fvwm2rc95 .Xmodmap .Xdefaults .jedrc. .abbrevs.sl
 .joerc .emacs . Don't add users until you have completed your system
 configuration; you'll put the dot files in /etc/skel.



 3.1.  bash (1)


 To tailor bash's behaviour, these are the main files to edit:


 �  /etc/bashrc contains system wide aliases and functions;

 �  /etc/profile contains system wide environment stuff and startup
    programs;

 �  $HOME/.bashrc contains user aliases and functions;

 �  $HOME/.bash_profile contains user environment stuff and startup
    programs;

 �  $HOME/.inputrc contains key bindings and other bits.

 Examples of these files are shown below. First, the most important:
 /etc/profile. It's used to configure a lot of features in your Linux
 box, as you will see in the following sections.


































 ______________________________________________________________________
 # /etc/profile

 # System wide environment and startup programs
 # Functions and aliases go in /etc/bashrc

 # This file sets up the following features:
 #
 #   o path
 #   o prompts
 #   o a few environment variables
 #   o colour ls
 #   o less
 #
 # Users can override these settings and/or add others in their
 # $HOME/.bash_profile

 # set a decent path

 echo $PATH | grep X11R6 > /dev/null
 if [ $? = 1 ] ; then   # add entries to the path
   PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."
 fi

 # notify the user: login or non-login shell. If login, the prompt is
 # coloured in blue; otherwise in magenta. Root's prompt is red.

 USER=`whoami`
 if [ $LOGNAME = $USER ] ; then
   COLOUR=44
 else
   COLOUR=45
 fi

 if [ $USER = 'root' ] ; then
   COLOUR=41
 fi

 # put a real escape character instead of ^[. To do this:
 # emacs: ^Q ESC   vi: ^V ESC   joe: ` 0 2 7   jed: ` ESC
 # Remove `;1' if you don't like the `bold' attribute.
 ESC=^[
 PS1='$ESC[$COLOUR;37;1m$USER:$ESC[37;40;1m\w\$ '
 PS2="Continue> "

 # no core dumps, please

 ulimit -c 0

 # set umask

 if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
   umask 002
 else
   umask 022
 fi

 # a few variables

 USER=`id -un`
 LOGNAME=$USER
 MAIL="/var/spool/mail/$USER"
 EDITOR=jed
 HOSTNAME=`/bin/hostname`
 HISTSIZE=1000
 HISTFILESIZE=1000
 export PATH PS1 PS2 USER LOGNAME MAIL EDITOR HOSTNAME HISTSIZE HISTFILESIZE

 # enable colour ls

 eval `dircolors /etc/DIR_COLORS -b`
 export LS_OPTIONS='-F -s -T 0 --color=tty'

 # customise less

 LESS='-M-Q'
 LESSEDIT="%E ?lt+%lt. %f"
 LESSOPEN="| lesspipe.sh %s"
 VISUAL=jed
 LESSCHARSET=latin1
 export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET

 for i in /etc/profile.d/*.sh ; do
   if [ -x $i ]; then
     . $i
   fi
 done
 ______________________________________________________________________



 This is a sample /etc/bashrc:


 ______________________________________________________________________
 # /etc/bashrc

 # System wide functions and aliases
 # Environment stuff goes in /etc/profile

 alias which="type -path"
 alias d="ls"
 alias dir="d"
 ______________________________________________________________________



 This is a sample .bashrc:
























 ______________________________________________________________________
 # $HOME/.bashrc
 # Source global definitions

 if [ -f /etc/bashrc ]; then
   . /etc/bashrc
 fi

 # this is needed to notify the user that they are in non-login shell

 if [ "$GET_PS1" = "" ] ; then
   COLOUR=45
 # put a real escape character instead of ^[
   ESC=^[
   PS1='$ESC[$COLOUR;37m`whoami`:$ESC[37;40m\w\$ '
   export PS1
 fi

 # aliases

 alias cp='cp -i'
 alias l=less
 alias lyx='lyx -width 900 -height 700'
 alias mv='mv -i'
 alias rm='rm -i'
 alias x=startx

 # A few useful functions

 inst() # Install a .tar.gz archive in the current directory.
 { gzip -dc $1 | tar xvf - }

 cz() # List the contents of a .zip archive.
 { unzip -l $* }

 ctgz() # List the contents of a .tar.gz archive.
 {
   for file in $* ; do
     gzip -dc ${file} | tar tf -
   done
 }

 tgz() # Create a .tgz archive a la zip.
 {
   name=$1 ; tar -cvf $1 ; shift
   tar -rf ${name} $*
   gzip -S .tgz ${name}
 }
 ______________________________________________________________________



 This is a sample .bash_profile:













 ______________________________________________________________________
 # $HOME/.bash_profile

 # User specific environment and startup programs
 # This file contains user-defined settings that override
 # those in /etc/profile

 # Get the aliases and functions
 if [ -f ~/.bashrc ]; then
   GET_PS1="NO"  # don't change the prompt colour
   . ~/.bashrc
 fi

 # set a few `default' directories
 export CDPATH="$CDPATH:$HOME:$HOME/text:$HOME/text/geology"

 # fix rxvt 2.45 backspace
 if [ "$COLORTERM" != "" ] ; then
   stty erase ^?
   ESC=^[  # put a real escape character instead of ^[
   echo -n "$ESC[36l"
 fi
 ______________________________________________________________________



 This is a sample .inputrc:


 ______________________________________________________________________
 # $HOME/.inputrc

 # key bindings

 "\e[1~": beginning-of-line
 "\e[3~": delete-char
 "\e[4~": end-of-line
 # (F1 .. F5) are "\e[[A" ... "\e[[E"
 "\e[[A": "info \C-m"

 set bell-style visible          # please don't beep
 set meta-flag On                # allow 8-bit input (i.e, accented letters)
 set convert-meta Off            # don't strip 8-bit characters
 set output-meta On              # display 8-bit characters correctly
 set horizontal-scroll-mode On   # scroll long command lines
 set show-all-if-ambiguous On    # after TAB is pressed
 ______________________________________________________________________



 To make the backspace and delete keys work correctly in in xterm and
 other X11 applications, the following is also needed:


 �  put this in your .xinitrc:


      usermodmap=$HOME/.Xmodmap
      xmodmap $usermodmap





 �  put this in your .Xmodmap:

 keycode 22 = BackSpace
 keycode 107 = Delete




 this fixes the console. To fix xterm:

 �  put this in your .Xdefaults:


      xterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
              <Key>Delete:        string(0x1b) string("[3~")\n\
              <Key>Home:          string(0x1b) string("[1~")\n\
              <Key>End:           string(0x1b) string("[4~")\n\
              Ctrl<Key>Prior:     string(0x1b) string("[40~")\n\
              Ctrl<Key>Next:      string(0x1b) string("[41~")

      nxterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
              <Key>Delete:        string(0x1b) string("[3~")\n\
              <Key>Home:          string(0x1b) string("[1~")\n\
              <Key>End:           string(0x1b) string("[4~")\n\
              Ctrl<Key>Prior:     string(0x1b) string("[40~")\n\
              Ctrl<Key>Next:      string(0x1b) string("[41~")





 rxvt is a wee bit more complicated, as some compile--time options
 influence its behaviour. See the above .bash_profile.

 More info in bash(1) and readline(3) man pages.

 Don't expect every application to work correctly! If you run joe in
 xterm, for instance, some keys won't work; the same holds for versions
 of rxvt older than 2.21.



 3.2.  ls (1)


 ls can display directory listings using colours to highlight different
 file types. To enable this feature, add these lines to /etc/profile:



      eval `dircolors /etc/DIR_COLORS -b`
      export LS_OPTIONS='-F -T 0 --color=tty'




 (If you don't have the file /etc/DIR_COLORS, remove the reference to
 it in the first line.) This sets the environment variable LS_COLORS
 that contains the colour list set up in /etc/DIR_COLORS.  Note: don't
 ask me why, but this won't work with rxvt older than v. 2.21; use some
 flavour of xterm instead. It looks like rxvt has a bug that prevents
 it from inheriting the environment correctly in some circumstances.

 Caldera's ls doesn't have colours, but there's an equivalent color-ls.
 Add this in /etc/bashrc:



 alias ls="color-ls $LS_OPTIONS"






 3.3.  less (1)


 With this excellent pager you can browse not only plain text files,
 but also gzip compressed, tar and zip archives, man pages, and what
 have you. Its configuration involves a few steps:


 �  to use it with the movement keys, have this plain ASCII file
    .lesskey in your home directory:



      ^[[A   back-line
      ^[[B   forw-line
      ^[[C   right-scroll
      ^[[D   left-scroll
      ^[OA   back-line
      ^[OB   forw-line
      ^[OC   right-scroll
      ^[OD   left-scroll
      ^[[6~  forw-scroll
      ^[[5~  back-scroll
      ^[[1~  goto-line
      ^[[4~  goto-end
      ^[[7~  goto-line
      ^[[8~  goto-end





 then run the command lesskey. This creates a binary file .less con�
 taining the key bindings.

 �  write the following file as /usr/bin/lesspipe.sh:























    ___________________________________________________________________
    #!/bin/sh
    # This is a preprocessor for 'less'.  It is used when this environment
    # variable is set:   LESSOPEN="|lesspipe.sh %s"

    lesspipe() {
      case "$1" in
      *.tar) tar tf $1 2>/dev/null ;; # View contents of .tar and .tgz files
      *.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;;
      *.Z|*.z|*.gz) gzip -dc $1  2>/dev/null ;; # View compressed files correctly
      *.zip) unzip -l $1 2>/dev/null ;; # View archives
      *.arj) unarj -l $1 2>/dev/null ;;
      *.rpm) rpm -q -p -i -l $1 2>/dev/null ;;
      *.cpio) cpio --list -F $1 2>/dev/null ;;
      *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1`
        FILE=`echo $FILE | cut -d ' ' -f 2`
        if [ "$FILE" = "troff" ]; then
          groff -s -p -t -e -Tascii -mandoc $1
        fi ;;
      *) file $1 | grep text > /dev/null ;
        if [ $? = 1 ] ; then # it's not some kind of text
          strings $1
        fi ;;
      esac
    }

    lesspipe $1
    ___________________________________________________________________



 and remember to make it executable with chmod 755 lesspipe.sh.

 �  put these lines in /etc/profile:


      LESS="-M-Q"                     # long prompt, silent
      LESSEDIT="%E ?lt+%lt. %f"       # edit top line
      LESSOPEN="| lesspipe.sh %s"     # filter
      VISUAL=jed                      # default editor---insert your favourite
      LESSCHARSET=latin1              # display accented letters if needed
      export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET





 The variable LESSCHARSET depends on the fact that I live in Italy and
 want to use the ISO 8859/1 character set. You fellow Americans,
 Japanese, Russians and so on had better not set it.



 3.4.  emacs (1)


 I don't use emacs, so I have only one piece of advice to give you.
 Some emacs distributions don't come preconfigured for colours and
 syntax highlighting. Write this in your .emacs:


      (global-font-lock-mode t)
      (setq font-lock-maximum-decoration t)



 This only works in X11. I'll leave it to you to peruse all of emacs'
 documentation to find out how to tailor it to your
 needs---potentially, it can take months of hacking...



 3.5.  joe (1)


 Some people report that joe works with colours under X11, but not in
 tty.  In addition, some special keys don't work. To my knowledge, no
 one has found a solution to the former small nag; someone suggested
 hacking on /etc/termcap.

 If you experience that problem, a quick and dirty (and inelegant)
 solution is this:



      ~$ export TERM=vt100
      ~$ joe myfile
         (edit your file)
      ~$ export TERM=linux






 3.6.  jed (1)


 This is my favourite editor: it does what I need, it's lighter and
 easier to configure than emacs, and IMHO emulates other editors quite
 better.  Many users at my university want jed to emulate EDT, VMS'
 system editor.

 jed's configuration files are .jedrc and /usr/lib/jed/lib/*; the
 former can be adapted from jed.rc in the latter directory.


 �  to make jed use the special keys correctly, write the file
    /usr/lib/jed/lib/defaults.sl whose only line reads:



      () = evalfile("linux");





 �  edit /usr/lib/jed/lib/linux.sl; remove the comment from the line
    that reads Info_Directory = "/usr/info"; and add /bin/mail after
    UCB_Mailer =;

 �  making jed emulate EDT (or other editors) is straightforward: you
    just have to edit a couple of lines in .jedrc.  If you want to use
    the numeric keypad `+' to delete words instead of a single
    character, add this in .jedrc:






 unsetkey("\eOl");
 unsetkey("\eOP\eOl");
 setkey("edt_wdel", "\eOl");
 setkey("edt_uwdel", "\eOP\eOl");





 after the line that reads () = evalfile("edt");.

 �  to make xjed use the numeric keypad for EDT emulation, insert the
    following in .Xmodmap:



      keycode 77  = KP_F1
      keycode 112 = KP_F2
      keycode 63  = KP_F3
      keycode 82  = KP_F4
      keycode 86  = KP_Separator





 Moreover, make sure that your /etc/X11/XF86Config contains the follow�
 ing lines:



      #    ServerNumLock  # must be commented out
          XkbDisable





 This applies to XFree 3.2. Unless you use a standard American keyboard
 though, note that ``XkbDisable'' brings some little problems. You'll
 find out by yourself.

 �  colour customization for xjed is done adding lines like these in
    .Xdefaults:



      xjed*Geometry: 80x32+150+50
      xjed*font: 10x20
      xjed*background: midnight blue





 �  the ``abbreviation'' feature is an invaluable timesaver. Write a
    file like the following as $HOME/.abbrevs.sl:









 create_abbrev_table ("Global", "");
 define_abbrev ("Global", "GG", "Guido Gonzato");
 create_abbrev_table ("TeX", "\\A-Za-z0-9");
 define_abbrev ("TeX", "\\beq", "\\begin{equation}");
 define_abbrev ("TeX", "\\eeq", "\\end{equation}");
 % and so on...





 and type ESC x abbrev_mode to enable it. To have the abbreviation on
 by default, add entries like these in your .jedrc:



      define text_mode_hook ()
      {
        set_abbrev_mode (1);
      }
      %
      define fortran_hook ()
      {
        set_abbrev_mode (1);
        use_abbrev_table ("Fortran");
      }
      % and so on...








 3.7.  efax (1)


 This package is probably the most convenient for simple
 sending/receiving of faxes. You'll have to tailor the script
 /usr/bin/fax; easy job, but a couple of quirks caused me quite an
 headache:


 �  DIALPREFIX: chances are that simply putting `T' or `P' won't work
    in many countries. Put `ATDT' or `ATDP' instead;

 �  INIT and RESET: these strings contain the initialisers `-i' and
    `-k', needed by efax. If you want to add an AT command, add it to
    the appropriate string leaving out `AT' and preceding the rest with
    either `-i' or `-k'. For example: to add the `ATX3' command to
    INIT, you'll append `-iX3'.



 3.8.  TeX and Friends


 I'll assume you have the teTeX distribution. Just a couple of things
 here:


 �  to configure the hyphenation pattern for your language, edit the
    file /usr/lib/texmf/texmf/tex/generic/config/language.dat, then do:


 ~# texconfig init ; texconfig hyphen





 �  if you add a LaTeX package, after adding the files under
    /usr/lib/texmf/texmf/tex/latex/ run the command texhash so that
    teTeX recognises the new package;

 �  to tailor dvips, the file to edit is
    /usr/lib/texmf/texmf/dvips/config/config.ps. Be aware that the
    fields regarding the default resolution also affect xdvi's
    behaviour; if you experience annoying attempts to create fonts each
    time you run it, put the line



      XDvi*mfmode:





 in .Xdefault. This should help.



 3.9.  PPP


 I'll take it for granted that your kernel has PPP + TCP/IP support
 compiled in, that loopback is enabled, and that you already have the
 pppd package correctly installed and suid root. Obviously, your ISP
 must support PPP.

 There are now two ways to get PPP to work: a) manual configuration,
 and b) a configuration program that automagically sees to it.
 Whichever option you choose, have the following information on hand:


 �  your ISP's telephone number;

 �  your ISP's name server;

 �  your ISP's mail and news server;

 �  your ISP's domain;

 �  your username and password.

 Manual configuration is a drudgery. It's about editing files and
 writing scripts; not too much work, but it's easy to make mistakes and
 newcomers are often intimidated. The PPP HOWTO is there for you.
 Alternatively, there are tools that ask for the information above and
 do all the work.

 You'll be surely better off if you reach out for a friend who's
 already connected and download one of the following nice tools:


 �  an X11--based tool is EzPPP, whose home page is
      <http://www.serv.net/~cameron/ezppp/index.html> .  Very easy to
    use, almost self--explanatory;


 �  for tty--based connections, try the tools available on
      <ftp://sunsite.unc.edu/pub/Linux/system/network/serial/ppp>. One
    of the finest is pppsetup-X.XX.tar.gz.

 �  the simplest configuration tool to date is surely wvdial.  You feed
    it your ISP's phone number, your username, your password, and
    you're in business. From the README file: ``There is a (currently
    cheesy) web page for wvdial at:
    <http://www.worldvisions.ca/wvdial>''.  Very fine tool.



 3.10.  POP Client


 To retrieve your mail from a POP server, you use a POP client like
 fetchpop or fetchmail. The latter is more advanced, and is probably
 the only option if your ISP's PPP server can't deal with the command
 LAST. They're available on
 <ftp://sunsite.unc.edu/pub/Linux/system/mail/pop>.

 To configure these clients:


 �  fetchpop: the first time you run it, you'll be prompted for some
    information. Answer the questions and you're set.

 �  fetchmail: adapt this sample .fetchmailrc:



      # $HOME/.fetchmailrc
      poll mbox.myisp.com with protocol pop3;
        user john there with password _Loo%ny is john here





 You must set the permissions to this file with the command chmod 600
 .fetchmailrc, otherwise fetchmail will rightly refuse to start. This
 example is very basic and assumes that you have a running sendmail;
 there are endless possibilities of configuration. Check out on .



 3.11.  X Window System


 Once you've managed to make X work (right video card etc.), there are
 endless possibilities of configuration; it depends on the window
 manager you use. In any case, it's all down to editing one or more
 ASCII files in your home directory. As for the window manager:


 �  fvwm: copy /etc/X11/fvwm/system.fvwmrc to your home directory as
    .fvwmrc, browse it and start experimenting. This contributed
    system.fvwmrc is IMHO a wee bit too simple and doesn't do justice
    to fvwm.

 �  fvwm95-2: copy /etc/X11/fvwm95-2/fvwm2rc95 to your home as
    .fvwm2rc95, then edit it. The contributed example is quite good.

 �  TheNextLevel: this is rather harder to configure. Copy
    /etc/X11/TheNextLevel/.* to your home dir, browse them carefully,
    then try and tailor them. The first one to look at is
    .fvwm2rc.defines.

 In addition, make sure you have a proper .xinitrc. An example:



      #!/bin/sh

      # $HOME/.xinitrc

      # set a few keys correctly

      usermodmap=$HOME/.Xmodmap
      xmodmap $usermodmap

      xset s noblank  # turn off the screen saver
      xset s 300 2    # screen saver start after 5 min
      xsetroot -solid "medium blue" &

      # rxvt saves a lot of memory, but versions older than 2.21 have bugs
      # affecting the keys and the way the environment is inherited. Upgrade
      # or use xterm instead.

      xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
      -title "Color xterm" -geometry 80x25+150+0 &

      fvwm95-2






 3.12.  Fortran


 In my experience, if you need Fortran a good alternative to g77 is the
 Fortran-to-C translator f2c and the front end yaf77.

 Get yaf77-X.Y.tgz from
 <ftp://sunsite.unc.edu/pub/Linux/devel/lang/fortran> .



 3.13.  Users' Configurations


 It's a good idea to let new users have a few configuration files ready
 when they first log in. Put the following files in /etc/skel:
  .bashrc .bash_profile .bash_logout .inputrc .less .xinitrc
  .fvwmrc .fvwm2rc95 .Xmodmap .Xdefaults .jedrc .abbrevs.sl. joerc
  .emacs

 Note that .pinerc can't be fully tailored; make sure that at least the
 fields user-domain, smtp-server, and nntp-server are properly set up.



 3.14.  Upgrading


 If you upgrade your machine, remember to save a few additional files
 beforehand. Some of them are: /etc/X11/XF86Config, /usr/bin/fax, ...



 4.  The End




 4.1.  Copyright


 Unless otherwise stated, Linux HOWTO documents are copyrighted by
 their respective authors. Linux HOWTO documents may be reproduced and
 distributed in whole or in part, in any medium physical or electronic,
 as long as this copyright notice is retained on all copies. Commercial
 redistribution is allowed and encouraged; however, the author would
 like to be notified of any such distributions.

 All translations, derivative works, or aggregate works incorporating
 any Linux HOWTO documents must be covered under this copyright notice.
 That is, you may not produce a derivative work from a HOWTO and impose
 additional restrictions on its distribution. Exceptions to these rules
 may be granted under certain conditions; please contact the Linux
 HOWTO coordinator at the address given below.

 In short, we wish to promote dissemination of this information through
 as many channels as possible. However, we do wish to retain copyright
 on the HOWTO documents, and would like to be notified of any plans to
 redistribute the HOWTOs.

 If you have questions, please contact Tim Bynum, the Linux HOWTO
 coordinator, at [email protected] via email.



 4.2.  Feedback


 Perhaps even more than other HOWTOs, this one needs and welcomes your
 suggestions, criticisms, and contributions. Not only is feedback
 welcome: it's necessary. If you think something is missing or wrong,
 please email me.  If you have a distribution other than Red Hat or
 Caldera and your config files are different or placed in other
 directories, please tell me and I'll include your tips. My aim is
 making life with Linux as easy as possible.

 Linux has a huge number of packages, so it's impossible to include
 directions for all of them. Please keep your requests/suggestions
 pertinent to the ``most reasonable'' programs---I'll leave it to your
 common sense.



 4.3.  Disclaimer


 ``Configuration HOWTO'' was written by Guido Gonzato,
 [email protected].  Many thanks to all other HOWTO authors and
 man pages writers/maintainers, whose work I've shamelessly pilfered.

 This document is provided ``as is''. I put great effort into writing
 it as accurately as I could, but you use the information contained in
 it at your own risk. In no event shall I be liable for any damages
 resulting from the use of this work.

 I hope you'll find this work useful. Whenever I install a new Linux
 box, I actually do...


 Enjoy,

 Guido   =8-)