Gérer les packages rpm de son système
Deux solutions se présentent à vous pour gérer vos packages, rpm lui-même ou une interface graphique de rpm, comme glint.
A l'aide de rpm
Rappels :
rpm -i fichier.i386.rpm # pour installer un # package fichier
rpm -U fichier-2.i386.rpm # pour mettre à jour # le package fichier
Aller juste un peu plus loin :
Vous ne savez pas si un package est installé sur votre système :
rpm -qa | grep <nom recherché>
Vous venez simplement de filtrer la sortie de la commande rpm -qa qui renvoie la liste des packages installés.
On peut en déduire une seconde commande qui vous donnera le nombre de packages installés :
rpm -qa | wc -w
ou
rpm -qa |wc -l
Les deux solutions sont correctes car rpm -qa renvoie un nom par ligne. (wc (word count) peut compter le nombre de mots (-w) de lignes (-l) ou de caractères (-c))
Il peut ainsi être intéressant de développer encore cette idée de gestion. Ainsi, pour voir l'évolution des programmes installés ou mis à jour durant le temps, on peut dans une crontab par exemple insérer ce tube :
date | tee $HOME/packages | rpm -qa | sort \>> $HOME/packages
L'inconvénient de cette commande est qu'elle écrase à chaque fois l'ancien fichier. Il serait assez simple de l'agrémenter de la commande diff pour construire un script shell légèrement plus utile.
Voici un peu plus d'informations à propos des options de rpm :
-q information rapide sur les paquetages
-a se rapporte à tous les packages de la machine
-V cette option vous permettra de savoir si un paquetage est bien installé => rpm
-Va vérifie tous les paquetages.
-qi sera plus parlant qu'un simple -q
-ql en plus de -qi vous aurez les noms et chemins d'accès de tous les fichiers du paquetage.
-e pour supprimer le paquetage, ou plutôt les fichiers qui le composent
Une dernière option à utiliser avec précaution peut toujours servir, --force. Elle permet, comme vous pouvez l'imaginer de forcer rpm à installer les fichiers ou les mettre à jour.
A l'aide de glint
Cet outil graphique est des plus simples à utiliser. Il répertorie, l'ensemble des packages installés (rpm -qa), les classe par catégories, et met à votre disposition les capacités les plus simples de rpm.
On lance glint de cette façon : glint & (sous X bien sûr)
Si vous n'avez pas ce logiciel, téléchargez ce package : glint_fr-2.6-2.i386.rpm (si vous avez une architecture Intel)
Modifier le prompt de son shell
Certains prompts (invite du shell) par défaut ne sont pas toujours très intéressant. Je suis sûr que vous voudriez qu'ils vous soient plus utiles. Pour cela, il en existe des spéciaux à introduire dans la variable d'environnement PS1 (Prompt String 1). Pour connaître sa forme actuelle, tapez les instructions suivantes :
set | grep PS1
ou
echo $PS1
Voici la liste de ces caractères spéciaux :
\t : heure actuelle
\d : date actuelle
\n : saut de ligne
\s : nom du shell
\w : répertoire de travail
\u : nom d'utilisateur
\h : nom de l'ordinateur
\! : numéro de commande courant
\nnn : le caractère nnn (base huit) est affiché. Exemple un é s'écrira '\\351'.
\\ : affichage d'un anti-slash
Les bonnes lignes à ajouter à son fichier .bashrc
Passons directement à cet article car l'insertion de la variable PS1 se fait dans le .bashrc de l'utilisateur. On remarquera que cette variable est aussi déclarée dans le /etc/profile du système.
Outre PS1, beaucoup de choses intéressantes peuvent être inscrites dans ce .bashrc (si vous utilisez le bourne again shell régulièrement). Tout d'abord, il faut bien comprendre le moment où ce fichier est lu et ainsi interprété. En effet, il faut bien différencier ces fichiers :
- /etc/profile exécuté automatiquement à chaque login, il est aussi le premier à être lu
- $HOME/.bashrc exécuté à chaque lancement de shell
- $HOME/.bash_profile différent de .bashrc, il n'est exécuté qu'à chaque login
- $HOME/.bash_login alternative à .bash_profile
- $HOME/.bash_logout vous aurez compris qu'il clos un login, il est donc exécuté lors d'un logout.
Nous nous cantonnerons à utiliser le .bashrc, qui possède la particularité de s'exécuter aussi lors d'un lancement des shell (xterm) sous xwindow ce que ne fait pas le .bash_profile. Attention, à ne pas y mettre des commandes X car souvent, il faut avoir lancé le serveur graphique pour que celles-ci puissent s'exécuter. Si elles vous sont indispensables, introduisez-les dans votre startx.
Voici un fichier .bashrc, modifiable à votre gré :
# ~/.bashrc
# le path, (facultatif)
PATH="/usr/sbin:/usr/bin/:/usr/X11R6/bin/:/bin:\usr/local/bin"
# ou si vous souhaiter simplement rajouter des chemins
# PATH="$PATH:$HOME/bin"
# Les variables locales
LANGUAGE=fr
LC_MESSAGES=fr
LC_ALL=fr
LANG=fr
export LANGUAGE LC_MESSAGES LC_ALL LANG
# Les alias
alias ls="ls -F --color"
alias ll="ls --color=auto -a -N -l"
alias d="ls --color=auto -a -N"
alias indent="indent -kr"
alias elm-box="elm -f ~/Mail/Inbox"
alias ftp=ncftp
alias tin=rtin
alias netscape="export LC_ALL=en_EN ; netscape $* ; \LC_ALL=fr_FR"
alias rm="rm -i"
alias cp="cp -i"
alias mv="mv -i"
# et bien sur l'accès rapide à vos programmes ou # scripts
# Fixer le masque de création de fichiers
umask 022
Contrôle des tâches
Linux est, comme vous le savez, un OS parfaitement multitâches et entièrement 32 bits, en attendant le 64 bits avec le merced. Il est nettement plus efficace en multitâche que son acolyte Windows ainsi que lors des lancements de programme. Pour profiter au maximum de ses avantages, il faut simplement connaître les commandes qui permettent de gérer ces tâches ou ces processus.
Une grande quantité d'utilitaires sont déjà installés sur votre machine à cet effet. Voici, par des exemples, comment vous pouvez vous en servir.
jobs
On lance la commande de cette manière :
jobs
ou jobs -l # plus causant
Et s'affiche alors les processus en cours et en tâche de fond
bg, fg, wait
Mettre le processus au numéro de tâche 1 en arrière plan ou encore le remettre au premier plan :
bg %1 # mis en arrière plan (background)
fg %1 # et il revient ainsi au premier plan (foreground)
Et si le processus au numéro de tâche 1 (Attention : différent du pid) se fait attendre, tapez :
wait %1
ps (process status) et top
Il n'y a pas grand chose à dire sur cette commande que beaucoup connaissent, si ce n'est les bases :
ps ax # affiche tous les processus en cours et pas seulement ceux que vous avez générés
ps alx # est plus verbeux et assez compliqué
top # faut essayer si ce n'est pas déjà fait, c'est très parlant
nice
Cette commande vous permettra de maitriser la priorité avec laquelle le système va exécuter une commande. Cette priorité se caractérise sur une échelle numérique de 19 (priorité minimale) à -20 (priorité maximale).
nice -n -20 rpm -qa # donne la priorité maximale à rpm # -qa
nice -n 19 ls # donne la priorité minimale à ls
kill
Cette commande caractérise bien le fait que l'on puisse maîtriser ce qui se produit. kill permet d'envoyer un signal (la liste des signaux s'affiche avec un kill -l) à un processus qui sait le lire et qui peut le stopper, le relancer, ou le tuer, ...
kill -SIGINT 254 # envoie au PID 254 un signal d'inter- # ruption, identique à un Ctrl+C
kill -SIGKILL 254 # c'est le plus fort des signaux,aucun #processus ne peut y résister et se ter- # mine.
kill -STOP 254 # stoppe le processus au PID 254, ce # dernier pouvant être un numéro de # tâche comme pour la commande bg # (%1)
time
Cette commande permet de déterminer le temps que met un processus à s'exécuter. Ce temps peut-être du temps réel (real) en secondes, ou le temps (user) que met le processeur pour exécuter les instructions ou encore le temps système (sys). Ce dernier est la durée en secondes qui est nécessaire au processeur pour le traitement des ordres du systèmes d'exploitation.
time -p ls # avec l'option -p les temps sont # juste affichés, ce qui clarifie l'information
Barbier Laurent (Spacewalker)
Lbarbier@wanadoo.fr