Page suivante Page précédente Table des matières

3. Configuration des logiciels

3.1 bash(1)

Pour affiner le comportement de bash, voici les fichiers à éditer :

  • /etc/bashrc contient les alias et fonctions globales au système;
  • /etc/profile positionne globalement les variables d'environnement et lance les programmes de démarrage communs;
  • $HOME/.bashrc contient les alias et fonctions propres à l'utilisateur;
  • $HOME/.bash_profile positionne les variables d'environnement de l'utilisateur et lance ses programmes de démarrage propres;
  • $HOME/.bash_logout contient les actions à effectuer à la fermeture de compte (fin du travail);
  • $HOME/.inputrc contient les liaisons du clavier et autres bricoles.

Voici des exemples de ces fichiers. D'abord le plus important : /etc/profile qui configure beaucoup de propriétés de votre système, comme illustré ci-dessous :


 
# /etc/profile

# Environnement global au système et programmes de démarrage
# Les fonctions et alias vont dans /etc/bashrc

# Ce fichier configure globalement
#
#   o le chemin d'exécution (path)
#   o les invites (prompts)
#   o quelques variables d'environnement
#   o ls en couleurs
#   o comportement de less
#   o le clavier
#
# Les utilisateurs peuvent écraser ces configurations et en ajouter 
# d'autres dans leur $HOME/.bash_profile

# mettre un chemin d'exécution décent

echo $PATH | grep X11R6 > /dev/null
if [ $? = 1 ] ; then   # ajouter des entrées au chemin
  PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."
fi

# indiquer à l'utilisateur les shells de login. En login, l'invite
# (prompt) est en bleu, autrement en magenta. L'invite de root est rouge

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

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

# mettez un vrai caractère échappement (Escape) au lieu de ^[
PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ '
PS2="Continue> "

# pas de core dump svp
ulimit -c 0

# positionner le umask (permission par défaut des nouveaux fichiers)

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

# quelques 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

# ls en couleurs

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

# configuration de less

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

# configuration du clavier

/sbin/kbdrate -s -r 16 -d 500

# configurer globalement d autres programmes
for i in /etc/profile.d/*.sh ; do
        if [ -x $i ]; then
                . $i
        fi
done

Voici le fichier /etc/bashrc :


   
# /etc/bashrc
# Fonctions et alias globaux au système
# les variables d'environnement vont en /etc/profile
alias which="type -path"
alias d="ls"
alias dir="d"

Et voici un fichier possible ~/.bashrc :


    
# Sourcer les definitions globales

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

# Ceci est nécessaire pour notifier les utilisateurs qu'ils se trouvent dans un shell sans login

COLOUR=45
# mettre un vrai caractère échappement (Escape) au lieu de ^[
PS1='^[[$COLOUR;37m$USER:^[[37;40m\w\$ '

# alias

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

# Quelques fonctions utiles

inst() # Installer une archive .tar.gz dans le repertoire courant
{ gzip -dc $1 | tar xvf - }

cz() # Lister le contenu d'une archive .zip
{ unzip -l $* }

ctgz() # Lister le contenu d'une archive .tar.gz
{
  for file in $* ; do
    gzip -dc ${file} | tar tf -
  done
}

tgz() # Créer une archive .tgz à la zip.
{
  name=$1 ; tar -cvf $1 ; shift
  tar -rf ${name} $*
  gzip -S .tgz ${name}
}

Voici un fichier possible ~/.bash_profile :


 
# fichier $HOME/.bash_profile

# Environment et programmes de démarrage propres à l'utilisateur
# Ce fichier contient des configurations définies par l'utilisateur
# écrasant celles dans /etc/profile

# configurer les alias et fonctions propres à l'utilisateur
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# repositionner l'invite PS1

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

# mettez un vrai caractère d'échappement au lieu de ^[
PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ '

export PS1

Voici un très simple fichier possible ~/.bash_logout :


 
# fichier $HOME/.bash_logout
clear

Voici un fichier ~/.inputrc :


 
# fichier $HOME/.inputrc

# liaison des touches du clavier

"\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         # sans bip sonore
set meta-flag On               # permettre les caractères à 8 bits (accentués)
set convert-meta Off           # .. ne pas les convertir
set output-meta On             # .. les afficher correctement
set horizontal-scroll-mode On
set show-all-if-ambiguous On

Pour que les touches arrière (backspace) et suppr (delete) fonctionnent correctement dans xterm et d'autres applications X11, il vous faut également :

  • insérer ce qui suit dans votre ~/.xinitrc :

     
    # dans $HOME/.xinitrc définir le clavier X11
    usermodmap=$HOME/.Xmodmap
    xmodmap $usermodmap
    

  • mettre ce qui suit dans votre ~/.Xmodmap :

    ! dans $HOME/.Xmodmap
    keycode 22 = BackSpace
    keycode 107 = Delete
    

    ce qui répare votre console.

Pour corriger xterm :

  • insérer ce qui suit dans votre ~/.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~")
    

Voir les pages du manuel (commande man) de bash(1) et readline(3) pour plus de détails.

N'espérez pas voir toutes les applications fonctionner correctement. Si vous lancez joe sous xterm par exemple, certaines touches ne fonctionnent pas; c'est vrai aussi pour rxvt. Il parait que c'est un problème lié à termcap!

3.2 ls(1)

La commande ls peut lister les répertoires avec des couleurs pour différencier les types de fichiers. Pour configurer cette option, ajoutez les lignes suivantes en /etc/profile:


# à ajouter dans /etc/profile
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'

Ceci positionne la variable d'environnement LS_COLORS selon les listes de couleurs définies dans /etc/DIR_COLORS. Note: ne me demandez pas pourquoi, mais ça ne marche pas dans certaines versions de rxvt; utilisez alors xterm ou un programme similaire. Il semble que rxvt ait un bogue l'empêchant dans certains cas d'hériter correctement des variables d'environnement.

3.3 less(1)

Avec cet excellent paginateur, vous pouvez visualiser non seulement des fichiers de textes ordinaires, mais aussi des fichiers comprimés par gzip, des archives tar ou zip, des pages de manuel (commande man), etc. Sa configuration prend quelques étapes :

  • pour l'utiliser avec les touches de mouvement, ayez ce fichier ~/.lesskey en ASCII dans votre répertoire domestique:

    ^[[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
    

    puis lancez la commande lesskey. Celle-ci crée un fichier binaire .less contenant les liaisons des touches.
  • Ecrivez le fichier suivant dans /usr/bin/lesspipe.sh:

    #!/bin/sh
    # fichier /usr/bin/lesspipe.sh
    
    # Préprocesseur pour 'less' utilisé quand la variable d'environnement suivante est définie
    # LESSOPEN="|lesspipe.sh %s"
    
    lesspipe() {
      case "$1" in
      *.tar) tar tf $1 2>/dev/null ;; # Pour voir le contenu d'archives .tar ou .tgz
      *.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;;
      *.Z|*.z|*.gz) gzip -dc $1  2>/dev/null ;; # Pour voir les fichiers comprimés correctement (.gz)
      *.zip) unzip -l $1 2>/dev/null ;; # Pour voir les archives (.zip)
      *.arj) unarj -l $1 2>/dev/null ;;
      *.rpm) rpm -q -p -i -l $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=`file -L $1` ; # Vérification pour le cas d'un fichier binaire
        FILE1=`echo $FILE | cut -d ' ' -f 2`
        FILE2=`echo $FILE | cut -d ' ' -f 3`
        if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
             -o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
          strings $1
        fi ;;
      esac
    }
    
    lesspipe $1
    

    et n'oubliez pas de le rendre exécutable par chmod 755 lesspipe.sh.
  • ajoutez ces lignes dans /etc/profile :

    LESS="-M-Q"                     # invite longue, silencieuse
    LESSEDIT="%E ?lt+%lt. %f"       # éditer  ligne du haut
    LESSOPEN="| lesspipe.sh %s"     # filtre
    VISUAL=jed                      # éditeur par défaut- mettez votre préféré
    LESSCHARSET=latin1              # afficher les caractères accentués
    export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
    

    La variable LESSCHARSET dépend du fait qu'on habite en Europe Occidentale, où est utilisé le jeu de caractères ISO 8859-1. Les collègues Américains, Japonais, Russes, etc.. devraient la configurer autrement.

3.4 emacs(1)

Certaines distributions d'emacs ne sont pas préconfigurées pour les couleurs et la décoration syntaxique. Ajoutez ce qui suit dans votre ~/.emacs


;; dans fichier $HOME/.emacs
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)

Ceci ne marche qu'avec X11. Je vous laisse lire attentivement toute la documentation d'emacs pour découvrir comment l'adapter à vos besoins. Cela pourrait prendre des mois de bidouillage!

3.5 joe(1)

Verifiez dans /usr/bin que jmacs, jstar et jpico sont des liens symboliques vers joe. Autrement, tapez les commandes suivantes pour gagner un peu d'espace disque:


~#  cd /usr/bin
/usr/bin#  ln -sf joe jmacs ; ln -sf joe jstar ; ln -sf joe jpico

Il ne vous reste qu'à copier /usr/lib/joe/joerc dans votre répertoire domestique comme ~/.joerc puis à l'affiner à vos besoins.

3.6 jed(1)

C'est mon éditeur favori; il fait ce dont j'ai besoin, mais est plus léger et plus facile à configurer qu' emacs, et à mon humble avis émule mieux les autres éditeurs. Beaucoup d'utilisateurs de mon université veulent jed pour émuler EDT, l'éditeur de VMS.

Les fichiers de configuration sont ~/.jedrc et /usr/lib/jed/lib/*. Le premier est adapté par le fichier jed.rc de ce répertoire-là.

  • pour que jed utilise correctement certaines touches, créez un fichier /usr/lib/jed/lib/defaults.sl dont la seule ligne est :
    () = evalfile("linux");
    

  • éditez /usr/lib/jed/lib/linux.sl : décommentez la ligne contenant Info_Directory = "/usr/info" et ajoutez y /bin/mail après UCB_Mailer =
  • il est très simple de configurer jed pour qu'il émule EDT (ou d'autres éditeurs). Vous devez juste éditer quelques lignes dans .jedrc. Si vous souhaitez utiliser la touche + du pavé numérique pour supprimer des mots entiers au lieu d'un seul caractère, ajouter ceci dans .jedrc :

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

    après la ligne contenant () = evalfile("edt");.
  • Pour que xjed utilise le pavé numérique en émulation EDT il vous faut ajouter ce qui suit dans votre .Xmodmap :

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

    De plus, assurez-vous que votre /etc/X11/XF86Config contient les lignes suivantes :

         
    #    ServerNumLock  # doit être commenté
    XkbDisable
    

    Ceci s' applique à XFree 3.2. Sauf si vous utilisez un clavier standard américain (Qwerty), notez que XkbDisable pose quelques petits problèmes. Vous les découvrirez par vous-même.
  • La personnalisation des couleurs pour xjed se fait en ajoutant des lignes comme suit dans .Xdefaults

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

    Infos complémentaires en xjed.doc contenues dans le logiciel.

3.7 TeX et programmes associés

Je suppose que vous avez la distribution TeTeX. Quelques trucs ici :

  • pour configurer les motifs de césure pour votre langue, éditez le fichier /usr/lib/texmf/texmf/tex/generic/config/language.dat puis lancez :
     ~#  texconfig init ; texconfig hyphen 
    

  • pour mettre un paquet dans LaTeX, après avoir ajouté les fichiers sous /usr/lib/texmf/texmf/tex/latex/ lancez la commande texhash pour que TeTeX reconnaisse le nouveau paquet.
  • pour configurer dvips, le fichier à éditer est /usr/lib/texmf/texmf/dvips/config/config.ps. Soyez conscient que les champs concernant la résolution par défaut déterminent aussi le comportement de xdvi. Si vous remarquez des créations intempestives de polices (fonts) à chaque exécution, ajoutez dans votre .Xdefaults une ligne
    XDvi*mfmode:
    

    Cela peut aider.

3.8 PPP

Je suppose que votre noyau est compilé avec le support de PPP et TCP/IP, avec support du loopback et que votre logiciel pppd est correctement installé (tout ceci existe par défaut). Il y a dorénavant deux façons de faire fonctionner PPP : a) une configuration manuelle, et b) utiliser un programme de configuration "auto-magique". Considèrons d'abord la configuration manuelle.

Supposons que les spécifications de votre Prestataire de Services Internet (Internet Service Provider) soient les suivantes :

  • Numéro de téléphone : 1234567
  • serveur de nom : 123.231.112.111
  • serveur de mél (mail) : mbox.supernet.edu
  • domaine : supernet.edu
  • nom de machine distante : www.supernet.edu
  • votre nom d'utilisateur : Jean
  • votre mot de passe : _Biz%_ar

Pour configurer manuellement vos connections PPP, procédez comme suit :

  • écrivez ce fichier /usr/local/bin/ppp-on qui sera utilisé pour vous connecter à votre PSI:

    #!/bin/sh
    # fichier ppp-on: script de connection à un PSI
    INIT=ATX3  # ou ce que votre modem exige
    PHONE=1234567
    /usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDP$PHONE \
    CONNECT '' " user Jean
    

    puis rendez-le exécutable par chmod 755 /usr/local/bin/ppp-on. Si votre PSI n'utilise pas le protocole PAP, le script suivant s'applique :

    #!/bin/sh
    # fichier ppp-on: script de connection à un PSI
    INIT=ATX3  # ou ce que votre modem exige
    PHONE=1234567
    /usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDT$PHONE \
    CONNECT '' 'ogin' John 'word' _Biz%_ar ''" /dev/modem 38400 \
    modem defaultroute
    

  • Créez le fichier /usr/local/bin/ppp-off utilisé pour terminer une session PPP:

    #!/bin/sh
    # fichier ppp-off
    DEVICE=ppp0
    if [ -r /var/run/$DEVICE.pid ]; then
      kill -INT `cat /var/run/$DEVICE.pid`
      if [ ! "$?" = "0" ]; then
        echo "removing stale $DEVICE pid file."
        rm -f /var/run/$DEVICE.pid ; exit 1
      fi
      echo "$DEVICE link terminated" ; exit 0
    fi
    # lien inactif
    echo "$DEVICE link is not active" ; exit 1
    

    puis rendez-le exécutable par chmod 755 /usr/local/bin/ppp-off.
  • Écrivez ce fichier /etc/ppp/options:

    # /etc/ppp/options
    /dev/modem
    38400
    lock
    crtscts
    modem
    asyncmap 0
    remotename www.supernet.edu
    defaultroute
    

  • si votre PSI utilise le protocole PAP (la plupart des PSI le font), écrivez ce fichier /etc/ppp/pap-secrets:
    # fichier /etc/ppp/pap-secrets
    # username     remotehost           secret
    Jean           www.supernet.edu      _Biz%_ar 
    

  • Éditez /etc/resolv.conf:

    # fichier /etc/resolv.conf
    search supernet.edu
    nameserver 123.231.112.111
    

  • Éditez /etc/sendmail.cf. Cherchez la ligne commençant par DS et remplacez-la par :
    DSmbox.supernet.edu
    

    Ouf! Si vous avez de la chance, ça devrait marcher. Sinon, préparez-vous à plonger dans l'étude du PPP-HOWTO.

C'est tout pour la configuration manuelle. Il existe un programme qui rend cette corvée dépassée. C'est ezppp que vous trouverez en http://www.serv.net/~cameron/ezppp/index.html; téléchargez-le immédiatement!

3.9 Client POP

Pour aller chercher votre courrier électronique sur un serveur POP, utilisez un client POP tel que fetchpop ou fetchmail. Ce dernier est probablement la seule alternative si le serveur PPP de votre fournisseur a des problèmes avec la commande LAST.

Pour configurer ces clients :

  • fetchpop: la première fois que vous le lancer, il vous demandera quelques informations. Répondez à ses questions et c'est tout.
  • fetchmail: adaptez cet exemple de .fetchmailrc:

    # fichier $HOME/.fetchmailrc
    poll mbox.supernet.edu with protocol pop3;
      user jean there with password  _Biz%_ar  is jean here
      mda "/usr/bin/procmail -f fetchmail"
    

Cette dernière ligne est peut être superflue. Vous devez mettre les permissions de ce fichier avec chmod 600 .fetchmailrc autrement fetchmail refusera avec raison de démarrer.

3.10 Système de Fenêtrage X

Une fois que vous avez réussi à faire marcher X11 (bonne carte graphique, etc.), il existe d'inombrables possibilités de configuration; cela dépend de votre gestionnaire de fenêtres (window manager). Dans tous les cas, il s'agit d'éditer un ou des fichier[s] textuel[s] de votre répertoire domestique. Selon le gestionnaire de fenêtres:

  • fvwm: copier /etc/X11/fvwm/system.fvwmrc dans votre répertoire comme .fvwmrc; visualisez-le et commencez à experimenter. Le fichier contribué system.fvwmrc est à mon avis un peu trop simple et ne rend pas justice à fvwm.
  • fvwm95-2: copiez /etc/X11/fvwm95-2/fvwm2rc95dans votre répertoire comme .fvwm2rc95 puis éditez-le. L'exemple fourni est fort bon.
  • TheNextLevel: c'est un peu plus dur à configurer. Copiez /etc/X11/TheNextLevel/.* dans votre répertoire. Parcourez-les attentivement, essayez puis adaptez-les. Le premier à regarder est .fvwm2rc.defines.

De plus, soyez certain d'avoir un .xinitrc correct. Par exemple:


#! /bin/sh
# fichier $HOME/.xinitrc

# configurer le clavier correctement
usermodmap=$HOME/.Xmodmap
xset s noblank  # turn off the screen saver
xset s 300 2    # screen saver start after 5 min
xsetroot -solid "medium blue" &

# rxvt est économe en mémoire, mais bogué:
#   - Touche 'Début' et 'Fin' non reconnues
#   - 'Arrière' et 'Suppr' ne fonctionnant pas bien
#   - les couleurs ne sont pas proprement héritées de l'environnement;
#   - problèmes avec l'environnement en général.

# xterm est donc mieux le plus souvent. Mais rxvt convient
# aux applications en couleurs telles que mc.

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

fvwm95-2

3.11 Fortran

D'après moi, une bonne alternative à g77 est le traducteur Fortran vers C f2c et son interface yaf77. Obtenez ce dernier depuis ftp://sunsite.unc.edu/pub/Linux/devel/languages/fortran/yaf77-1.4.tgz et ses mirroirs (NdT: notamment ftp://ftp.lip6.fr/pub/linux/sunsite/devel/languages/fortran/yaf77-1.4.tgz en France).

3.12 Configuration des utilisateurs

C'est une bonne idée de fournir aux nouveaux utilisateurs quelques fichiers de configurations déjà prêts à leur première connection. Pour cela, mettez en /etc/skel/ : .bashrc, .bash_profile, .bash_logout, .inputrc, .less, .xinitrc, .fvwmrc, .fvwm2rc95, .Xmodmap, .Xdefaults, .jedrc, .joerc, et .emacs. Les noms de ces fichiers commencent par un point initial.

Remarquez que .pinerc n'est pas complètement adaptable. Vérifiez toutefois que les champs user-domain, smtp-server et nntp-server y sont corrects.


Page suivante Page précédente Table des matières