/usr/share/doc/HOWTO/fr-html/Tips-HOWTO.html is in doc-linux-fr-html 2013.01-3ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 for Linux version 5.2.0">
<meta name="GENERATOR" content="LinuxDoc-Tools 0.9.72">
<title>Astuces Linux HOWTO</title>
</head>
<body>
<h1>Astuces Linux HOWTO</h1>
<h2><a href="mailto:paul@geeky1.ebtech.net">Paul Anderson</a>,
traduit par <a href="mailto:gomesdv@mail.dotcom.fr">Arnaud
Gomes-do-Vale</a> et <a href="mailto:nat@nataa.fr.eu.org">Nat
Makarévitch</a></h2>
v3.6, Juin 1998 traduction du 2 janvier 1999
<hr>
<em>Ce document contient ces astuces et réglages difficiles à
trouver qui rendent Linux un peu plus sympathique.</em>
<hr>
<h2><a name="s1">1. Introduction</a></h2>
<p>Ce document est le <b>Linux Astuces HOWTO</b> (titre
original : <b>Linux Tips HOWTO</b>), une liste de trucs et
d'optimisations bien pratiques, qui contribuent à rendre Linux plus
agréable. Tout ce qui est ici sort ou bien de ma tête, ou bien de
l'ancien Astuces HOWTO (après tout, pourquoi enlever des astuces
qui marchent ?) Alors envoyez-moi vos astuces préférées
(NdT : en anglais !) pour que je puisse les inclure dans
la prochaine version du Linux Astuces HOWTO.</p>
<p>Paul Anderson <em>Rédacteur de "Linux TIPS HOWTO"</em></p>
<p><code>panderso@ebtech.net</code></p>
<h2><a name="s2">2. Astuces simples</a></h2>
<h2><a name="ss2.1">2.1 Un truc pratique pour syslog. <em>Paul
Anderson, rédacteur du Linux Astuces HOWTO</em>.</a></h2>
<p>Editez le ficher <code>/etc/syslog.conf</code> et ajoutez-y la
ligne suivante :</p>
<blockquote>
<pre><code>
# Tout envoyer sur tty8
*.* /dev/tty8
</code></pre></blockquote>
<p>Attention : PENSEZ À UTILISER DES TABULATIONS ! Syslog
n'aime pas les espaces.</p>
<h2><a name="ss2.2">2.2 Un script pour afficher les HOWTO
compactés. <em>Didier Juges,</em>
<code>dj@destin.nfds.net</code>.</a></h2>
<p>De débutant à débutant, voici un petit script qui facilite la
lectures des howto. Mes howto sont dans
<code>/usr/doc/faq/howto/</code> et sont compressés avec
<code>gzip</code>. Les fichiers s'appellent
<code>XXX-HOWTO.gz</code>, où XXX est le titre. J'ai appelé le
script suivant <code>howto</code> et je l'ai placé dans
<code>/usr/local/sbin/</code> :</p>
<blockquote>
<hr>
<pre><code>
#!/bin/sh
if [ "$1" = "" ]; then
ls /usr/doc/faq/howto | less
else
gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi
</code></pre>
<hr></blockquote>
<p>Appelé sans argument, il affiche la liste des howto disponibles.
Quand on lui passe en argument la première partie du nom du fichier
(avant le trait d'union), il décompacte le document (en laissant
l'original intact) et l'affiche à l'écran.</p>
<p>Par exemple, pour afficher le document
<code>Serial-HOWTO.gz</code>, tapez :</p>
<blockquote>
<pre><code>
$ howto serial
</code></pre></blockquote>
<h2><a name="ss2.3">2.3 Reste-t-il assez de place libre ?
<em>Hans Zoebelein,</em></a>
<code>zocki@goldfish.cube.net</code>.</h2>
<p>Voici un script qui vérifie à intervalles réguliers qu'il reste
de la place sur tout ce qui est monté (disques durs, CDROM,
disquettes...)</p>
<p>En cas de pénurie d'espace libre, un message est affiché à
l'écran toutes les X secondes et un courrier électronique est
envoyé pour chaque périphérique qui déborde.</p>
<blockquote>
<hr>
<pre><code>
#!/bin/sh
#
# $Id: Tips-HOWTO.sgml,v 1.2 1999/02/02 02:11:38 arnaud Exp $
#
#
# Depuis que j'ai été confronté à des
# messages d'erreur mystérieux pendant les compilations
# quand les fichiers temporaires remplissaient mes disques, j'ai
# écrit ça pour être averti avant que les disques
# ne soient pleins.
#
# Si ça a empeché vos serveurs d'exploser, envoyez
# les courriers de remerciement à zocki@goldfish.cube.net.
# Si votre site flambe à cause de ça, désolé
# mais je vous avais prévenu: c'est votre problème
# Si vous savez vraiment vous servir de sed, excusez moi :)
#
#
# Lancez-le et vous pouvez l'oublier: mettez "check_hdspace &"
# dans rc.local. Il vérifie l'espace libre toutes les
# $SLEEPTIME secondes. Vous pouvez même surveiller vos
# disquettes et vos bandes. :)
# Si l'espace libre est inférieur à $MINFREE (Ko),
# le script va afficher un message d'avertissement et envoyer un
# courrier à $MAIL_TO_ME pour chaque périphérique
# concerné. Dès qu'il y a à nouveau plus de place
# libre que la limite, le système d'envoi de courrier est
# réamorcé.
#
# RESTE À FAIRE:
# Des $MINFREE différents pour chaque périphérique
# Nettoyer les répertoires /*tmp des vieilleries en cas de
# pénurie d'espace.
DEVICES='/dev/sda2 /dev/sda8 /dev/sda9' # vos disques
MINFREE=20480 # la limite
SLEEPTIME=10 # secondes entre deux vérifications
MAIL_TO_ME='root@localhost' # la personne à avertir
# ------- rien à changer en dessous (j'espère :) -------
MINMB=0
ISFREE=0
MAILED=""
let MINMB=$MINFREE/1024 # oui, on fait ça bien :)
while [ 1 ]; do
DF="`/bin/df`"
for DEVICE in $DEVICES ; do
ISFREE=`echo $DF | sed s#.\*$DEVICE" "\*[0-9]\*""\*[0-9]\*" "\*## | sed s#" ".\*##`
if [ $ISFREE -le $MINFREE ] ; then
let ISMB=$ISFREE/1024
echo "WARNING: $DEVICE only $ISMB mb free." >&2
#echo "more stuff here" >&2
echo -e "\a\a\a\a"
if [ -z "`echo $MAILED | grep -w $DEVICE`" ] ; then
echo "WARNING: $DEVICE only $ISMB mb free. (Trigger is set to $MINMB mb)" \
| mail -s "WARNING: $DEVICE only $ISMB mb free!" $MAIL_TO_ME
MAILEDH="$MAILED $DEVICE"
MAILED=$MAILEDH
# rajoutez ce qu'il reste à faire
# par exemple nettoyer les */tmp
fi
elif [ -n "`echo $MAILED | grep -w $DEVICE`" ] ; then
# Enlever le marqueur de courrier si
# l'espace disponible remonte
# au-dessus de la limite. Pour pouvoir
# envoyer un nouveau message en cas de
# besoin.
MAILEDH="`echo $MAILED | sed s#$DEVICE##`"
MAILED=$MAILEDH
fi
done
sleep $SLEEPTIME
done
</code></pre>
<hr></blockquote>
<h2><a name="ss2.4">2.4 Un utilitaire pour nettoyer vos fichiers
journaux (logs). <em>Paul Anderson, rédacteur du Linux Astuces
HOWTO</em>.</a></h2>
<p>Si vous êtes comme moi, vous avez une liste de diffusion avec
430 inscrits et plus de 100 messages qui arrivent tous les jours
par UUCP. Qu'est-ce qu'un bidouilleur peut bien faire avec ces
énormes fichiers journaux ? Il peut installer
<code>chklogs</code>. <code>chklogs</code> a été écrit par Emilio
Grimaldo, <code>grimaldo@panama.iaehv.nl</code>, et la version 1.8
actuelle est disponible sur
<code>ftp.iaehv.nl:/pub/users/grimaldo/chklogs-1.8.tar.gz</code>.
C'est très simple à installer (il faut bien sûr lire le contenu du
répertoire <code>doc</code>). Une fois le paquetage installé,
rajoutez une entrée à votre crontab :</p>
<blockquote>
<pre><code>
# Lance chklogs tous les jours à 21h
00 21 * * * /usr/local/sbin/chklogs -m
</code></pre></blockquote>
<p>Pendant que vous y êtes, n'oubliez pas de dire à l'auteur à quel
point vous appréciez son logiciel :)</p>
<h2><a name="ss2.5">2.5 Un script pratique pour nettoyer les
fichiers <code>core</code>. <em>Otto Hammersmith</em>.</a></h2>
<p>Créez un fichier <code>rmcores</code> (l'auteur l'appelle
<code>handle-cores</code>) contenant ceci :</p>
<blockquote>
<hr>
<pre><code>
#!/bin/sh
USAGE="$0 <directory> <message-file>"
if [ $# != 2 ] ; then
echo $USAGE
exit
fi
echo Deleting...
find $1 -name core -atime 7 -print -type f -exec rm {} \;
echo e-mailing
for name in `find $1 -name core -exec ls -l {} \; | cut -c16-24`
do
echo $name
cat $2 | mail $name
done
</code></pre>
<hr></blockquote>
<p>Et utilisez cron pour le lancer à intervalles réguliers.</p>
<h2><a name="ss2.6">2.6 Déplacement de répertoires inter partitions
Linux (filesystems). <i>Alan Cox,</i>
<code>A.Cox@swansea.ac.uk</code>.</a></h2>
<blockquote>
<pre><code>
(cd /répertoire_source && tar cf - . ) | (cd /répertoire_cible && tar xvf -)
</code></pre></blockquote>
<p><i>[ Et pas cd /répertoire_source; tar...etc., qui laisse la
possibilité de bousiller un répertoire en cas de problème. Merci à
Jim Dennis, <code>jim@starshine.org</code>, qui me l'a signalé. -le
rédacteur ]</i></p>
<h2><a name="ss2.7">2.7 Trouver les plus gros répertoires. <em>Mick
Ghazey</em>.</a></h2>
<p>Vous vous êtes déjà demandé quels étaient les plus gros
répertoires sur votre machine ? Voici une façon de les
trouver.</p>
<blockquote>
<pre><code>
du -S | sort -n
</code></pre></blockquote>
<h2><a name="ss2.8">2.8 La Linux Gazette.</a></h2>
<p>Bravo et merci à John Fisk, le créateur de la Linux Gazette.
C'est un excellent magazine en ligne, qui plus est
<b>GRATUIT !</b> Que demander de plus ? Vous pouvez le
trouver à l'adresse :</p>
<blockquote>
<pre><code>
http://www.linuxgazette.com
</code></pre></blockquote>
<p>Au fait, il s'avère que (1) la LG est maintenant mensuelle et
(2) elle n'est plus maintenue par John Fisk, mais par l'équipe de
SSC.</p>
<h2><a name="ss2.9">2.9 Indication permettant de résoudre le
problème posé par le VPATH du GNU make version 3.7. <i>Ted
Stern,</i> <code>stern@amath.washington.edu</code>.</a></h2>
<p>J'ignore si ce problème concerne de nombreux utilisateurs mais
l'une des caractéristiques de la version 3.7 du GNU make ne
m'enthousiasme pas. Il s'agit du comportement d'un VPATH sur
répertoire absolu. Un robuste patch corrige cela, vous pourrez
l'obtenir auprès de Paul D. Smith
<code><psmith@wellfleet.com></code></p>
<blockquote>Veuillez rédiger votre courrier en anglais !
NDT</blockquote>
. Ce dernier poste dans le groupe gnu.utils.bug un article
contenant ce patch et sa documentation après parution de chaque
nouvelle version du GNU make. En ce qui me concerne... il est
installé sur tous les systèmes auxquels j'ai accès !
<h2><a name="ss2.10">2.10 Comment interdire à ma machine de lancer
fsck après chaque démarrage ? <i>Dale Lutz,</i>
<code>dal@wimsey.com</code>.</a></h2>
<p>Réponse : Après recompilation du noyau le système de
fichiers est considéré comme non vérifié ("marked as dirty"), ce
qui implique que fsck sera mis en action lors de chaque démarrage.
Pour éviter cela lancer :</p>
<blockquote>
<pre><code>
rdev -R /zImage 1
</code></pre></blockquote>
Cela modifie le noyau qui, dès lors, considère que le système de
fichiers est sain.
<p>Note : Ajoutez, si vous employez LILO,
<code>read-only</code> à la section de l'image de boot de votre
fichier de configuration LILO (souvent nommé /etc/lilo/config ou
/etc/lilo.conf).</p>
<h2><a name="ss2.11">2.11 Comment éviter les lancements de fsck, au
boot, dûs au "device busy" ? <i>Jon Tombs,</i>
<code>jon@gtex02.us.es</code>.</a></h2>
<p>Si votre système connaìt de fréquentes erreurs de type "device
busy" au démarrage qui laissent le système de fichiers dans un état
exigeant un <code>fsck</code>, veuillez suivre les recommandations
suivantes :</p>
<p>Ajoutez, au fichier <code>/etc/rc.d/init.d/halt</code> ou
<code>/etc/rc.d/rc.0</code>, la ligne</p>
<blockquote>
<pre><code>
mount -o remount,ro /mount.dir
</code></pre></blockquote>
pour tous vos systèmes de fichiers montés, sauf la racine, avant
l'invocation de umount -a. Cela signifie que si, pour une
quelconque raison, "shutdown" ne parvient pas à tuer tous les
processus puis démonter les partitions ces dernières seront malgré
tout considérées comme saines lors du redémarrage. Cette astuce a
considérablement écourté le temps de démarrage de mon système !
<h2><a name="ss2.12">2.12 Comment trouver les plus gros fichiers
sur votre disque dur. <i>Simon Amor,</i>
<code>simon@foobar.co.uk</code>.</a></h2>
<blockquote>
<pre><code>
ls -l | sort +4n
</code></pre></blockquote>
<p>Pour ceux d'entre vous qui sont vraiment à l'étroit, ça prend du
temps, mais ça marche bien :</p>
<blockquote>
<pre><code>
cd /
ls -lR | sort +4n
</code></pre></blockquote>
<h2><a name="ss2.13">2.13 Comment imprimer sur des pages avec
marges ? <i>Mike Dickey,</i>
<code>mdickey@thorplus.lib.purdue.edu</code>.</a></h2>
<blockquote>
<hr>
<pre><code>
#!/bin/sh
# /usr/local/bin/print
# Une simple sortie formatée pour permettre de
# perforer les feuilles afin de les mettre dans un classeur
cat $1 | pr -t -o 5 -w 85 | lpr
</code></pre>
<hr></blockquote>
<h2><a name="ss2.14">2.14 Méthode permettant de rechercher des
expressions rationnelles dans des fichiers. <i>Raul Deluth
Miller,</i> <code>rockwell@nova.umd.edu</code>.</a></h2>
<p>Je désigne, par "expressions rationnelles", les
<code>regexp</code> de "grep" et consorts.</p>
<p>J'ai appelé ce script "forall" et l'utilise ainsi :</p>
<blockquote>
<pre><code>
forall /usr/include grep -i ioctl
forall /usr/man grep ioctl
</code></pre></blockquote>
Voici le script forall:
<blockquote>
<hr>
<pre><code>
#!/bin/sh
if [ 1 = `expr 2 \> $#` ]
then
echo Syntaxe: $0 repertoire commande [arguments]
exit 1
fi
dir=$1
shift
find $dir -type f -print | xargs "$@"
</code></pre>
<hr></blockquote>
<h2><a name="ss2.15">2.15 Un script pour faire le ménage derrière
les programmes qui créent des fichiers de sauvegarde.</a></h2>
<p>Voici un petit script de deux lignes qui parcourt une
arborescence et qui y efface les fichiers de sauvegarde (# et ~)
d'emacs, les fichiers .o, et les fichiers .log de TeX. Il compacte
également les fichiers .tex et README. Sur mon système, je l'ai
appelé "squeeze".</p>
<blockquote>
<hr>
<pre><code>
#!/bin/sh
#SQUEEZE efface les fichiers superflus et compacte les fichiers .tex
#et README.
#Par Barry tolnas, tolnas@sun1.engr.utk.edu
#
echo nettoyage de $PWD
find $PWD \( -name \*~ -or -name \*.o -or -name \*.log -or -name \*\#\) -exec
rm -f {} \;
find $PWD \( -name \*.tex -or -name \*README\* -or -name \*readme\* \) -exec gzip -9 {} \;
</code></pre>
<hr></blockquote>
<h2><a name="ss2.16">2.16 Comment trouver le processus qui occupe
le plus de mémoire. <em>Simon Amor</em>.</a></h2>
<blockquote>
<pre><code>
ps -aux | sort +4n
</code></pre></blockquote>
-OU-
<blockquote>
<pre><code>
ps -aux | sort +5n
</code></pre></blockquote>
<h2><a name="ss2.17">2.17 Configuration de <code>vi</code> pour la
programmation en C. <em>Paul Anderson, rédacteur du Linux Astuces
HOWTO</em>.</a></h2>
<p>Je passe beaucoup de temps à programmer en C, et j'ai pris le
temps de configurer vi pour me faciliter la tâche. Voici le contenu
de mon fichier <code>.exrc</code> :</p>
<blockquote>
<hr>
<pre><code>
set autoindent
set shiftwidth=4
set backspace=2
set ruler
</code></pre>
<hr></blockquote>
<p>Qu'est-ce que ça fait ? <code>autoindent</code> force vi à
indenter automatiquement toutes les lignes qui suivent la première
ligne indentée, <code>shiftwidth</code> impose une taille de 4
espaces pour ^T, <code>backspace</code> configure la touche
d'espacement arrière, et <code>ruler</code> force l'affichage des
numéros de lignes. Notez que pour placer le curseur sur une ligne
donnée, par exemple la ligne 20, vous pouvez utiliser :</p>
<blockquote>
<pre><code>
vi +20 monfichier.c
</code></pre></blockquote>
<h2><a name="ss2.18">2.18 Utilisation de ctags pour faciliter la
programmation</a></h2>
<p>Beaucoup de bidouilleurs ont déjà ctags sur leur machine, mais
ne s'en servent pas. Cela peut être très pratique pour éditer des
fonctions spécifiques. Supposez que vous avez une fonction dans
l'un des nombreux fichiers sources contenus dans un répertoire pour
un programme que vous êtes en train d'écrire, et que vous voulez
éditer cette fonction pour faire une mise à jour. Appelons cette
fonction foo(). Vous ne savez pas non plus où elle se trouve dans
le fichier source. C'est là que ctags peut être très pratique.
Quand vous le lancez, ctags crée un fichier nommé <code>tags</code>
dans le répertoire courant, qui contient la liste de toutes les
fonctions, le fichier source dans lequel elles se trouvent et leur
emplacement dans ce fichier source. Le fichier <code>tags</code>
ressemble à ça :</p>
<blockquote>
<hr>
<pre><code>
ActiveIconManager iconmgr.c /^void ActiveIconManager(active)$/
AddDefaultBindings add_window.c /^AddDefaultBindings ()$/
AddEndResize resize.c /^AddEndResize(tmp_win)$/
AddFuncButton menus.c /^Bool AddFuncButton (num, cont, mods, func, menu, item)$/
AddFuncKey menus.c /^Bool AddFuncKey (name, cont, mods, func, menu, win_name, action)$/
AddIconManager iconmgr.c /^WList *AddIconManager(tmp_win)$/
AddIconRegion icons.c /^AddIconRegion(geom, grav1, grav2, stepx, stepy)$/
AddStartResize resize.c /^AddStartResize(tmp_win, x, y, w, h)$/
AddToClientsList workmgr.c /^void AddToClientsList (workspace, client)$/
AddToList list.c /^AddToList(list_head, name, ptr)$/
</code></pre>
<hr></blockquote>
<p>Pour éditer, par exemple, AddEndResize() avec vim,
tapez :</p>
<blockquote>
<pre><code>
vim -t AddEndResize
</code></pre></blockquote>
<p>Cela va ouvrir le bon fichier dans l'éditeur et placer le
curseur au début de la fonction.</p>
<h2><a name="ss2.19">2.19 Pourquoi sendmail se bloque-t-il pendant
5 minutes au démarrage d'une Red Hat ? <em>Paul
Anderson</em>.</a></h2>
<p>C'est un problème assez courant, presque au point d'en faire une
FAQ. Je ne sais pas si Red Hat corrige l'erreur dans sa
distributions, mais vous pouvez réparer ça vous-même. Si vous
regardez dans votre fichier <code>/etc/hosts</code>, vous allez
trouver quelque chose qui ressemble à ça :</p>
<blockquote>
<pre><code>
127.0.0.1 localhost votremachine
</code></pre></blockquote>
<p>Quand sendmail démarre, il fait une recherche sur le nom de
votre machive (<code>votremachine</code> dans l'exemple). Ensuite,
il trouve que l'adresse IP de la machine est 127.0.0.1; sendmail
n'aime pas ça et recommence la recherche. Il continue comme ça
pendant un moment avant d'abandonner. Corriger ce problème est très
facile : éditez votre fichier <code>/etc/hosts</code> et
mettez-y quelque chose comme ça :</p>
<blockquote>
<pre><code>
127.0.0.1 localhost
10.56.142.1 votremachine
</code></pre></blockquote>
<h2><a name="ss2.20">2.20 Comment configurer une Red Hat pour avoir
<code>ls</code> en couleurs? <em>Paul Anderson,</em>
<code>paul@geeky1.ebtech.net</code>.</a></h2>
<p>La distribution Red Hat est fournie avec color-ls (ls en
couleurs), mais je n'arrive pas à comprendre pourquoi ils ne le
configurent pas pour utiliser les couleurs par défaut. Voici une
façon d'arranger ça.</p>
<p>Commencez par taper <code>eval `DIRCOLORS`</code></p>
<p>Puis <code>alias ls='ls --color=auto'</code></p>
<p>Enfin, mettez la ligne "<code>alias .....</code>" dans votre
<code>/etc/bashrc</code>.</p>
<h2><a name="ss2.21">2.21 Comment trouver quelle bibliothèque de
/usr/lib contient une fonction donnée ? <em>Pawel
Veselow</em>.</a></h2>
<p>Vous êtes en train de compiler un programme et vous avez oublié
de lier une bibliothèque nécessaire? Et gcc qui ne donne que les
noms des fonctions manquantes... Voici une commande pour trouver ce
que vous cherchez :</p>
<blockquote>
<pre><code>
for i in *; do echo $i:;nm $i|grep tgetnum 2>/dev/null;done
</code></pre></blockquote>
<p>Remplacez <code>tgetnum</code> par le nom de la fonction que
vous cherchez.</p>
<h2><a name="ss2.22">2.22 J'ai compilé un petit programme en C,
mais quand je le lance, je ne vois aucun résultat !</a></h2>
<p>Vous avez compilé le programme et créé un programme appelé
<code>test</code>, non? Linux a déjà un programme
<code>test</code>, qui teste si une certaine condition est vraie et
qui n'affiche aucun résultat à l'écran. Pour lancer votre programme
<code>test</code>, tapez <code>./test</code>.</p>
<h2><a name="s3">3. Astuces détaillées</a></h2>
<h2><a name="ss3.1">3.1 Linux et Windows peuvent utiliser une même
partition pour le swap ! <i>Tony Acero,</i>
<code>ace3@midway.uchicago.edu</code>.</a></h2>
<ol>
<li>Formater la partition sous DOS puis y disposer le fichier
d'échange de Windows. Ne pas employer Windows tout de suite afin de
laisser ce fichier complètement "vide" pour faciliter son
compactage.</li>
<li>Démarrer Linux et sauver ce fichier dans un fichier. Exemple
(cas d'une partition de "swap" commun nommée /dev/hda8) :
<blockquote>
<pre><code>
dd if=/dev/hda8 of=/etc/dosswap
</code></pre></blockquote>
</li>
<li>Compacter le fichier de swap :
<blockquote>
<pre><code>
gzip -9 /etc/dosswap
</code></pre></blockquote>
</li>
<li>Ajouter au fichier /etc/rc la ligne suivante afin de préparer
et installer la partition de swap lorsqu'elle est employée par
Linux : <em>XXXXX représente ici le nombre de blocs que compte la
partition de swap</em>
<blockquote>
<pre><code>
mkswap /dev/hda8 XXXXX
swapon -av
</code></pre></blockquote>
Ajoutez une ligne destinée à cette partiton de swap dans le fichier
/etc/fstab</li>
<li>Si les programmes init et shutdown employés utilisent /etc/brc
ajouter à ce fichier les lignes suivantes :
<blockquote>
<pre><code>
swapoff -av
zcat /etc/dosswap.gz | dd of=/dev/hda8 bs=1k count=100
</code></pre></blockquote>
Dans le cas contraire il vous faudra invoquer ces commandes avant
chaque fin de session Linux (placer ces commandes dans un
script...)</li>
</ol>
Note : dd ne traite que 100 blocs car j'ai empiriquement déterminé
que rien ne sert d'en écrire davantage !
<p>>> Quels sont les avantages et inconvénients de cette
méthode ?</p>
<p>Avantages : gain d'espace disponible sur le disque !</p>
<p>Inconvénients : si l'étape de restauration du fichier
d'échange Windows n'est pas automatique il ne faudra pas négliger,
sous Linux et avant chaque redémarrage "vers" Windows, de lancer
les commandes chargées de cette remise en place.</p>
<h2><a name="ss3.2">3.2 Récupération de fichiers effacés.
<em>Michael Hamilton,</em>
<code>michael@actrix.gen.nz</code>.</a></h2>
<p>Voici une astuce dont j'ai eu besoin à quelques reprises.</p>
<p>La récupération d'un fichier texte par une personne
désespérée.</p>
<p>Si vous effacez un fichier texte par accident, par exemple un
courrier électronique ou le produit d'une nuit de programmation,
tout n'est pas perdu. Si le fichier a eu le temps d'aller jusqu'au
disque, c'est à dire s'il a existé pendant plus de 30 secondes, il
est possible que son contenu se trouve encore sur la partition.</p>
<p>Vous pouvez le rechercher dans la partition en utilisant la
commande grep.</p>
<p>Par exemple, récemment, j'ai effacé un courrier électronique par
accident. J'ai immédiatement cessé toute activité qui aurait pu
modifier le contenu de la partition : je me suis abstenu de
sauvegarder quoi que ce soit, de compiler quoi que ce soit, etc. En
d'autres occasions, je suis allé jusqu'à passer le système en mode
mono-utilisateur et démonter le système de fichiers.</p>
<p>J'ai ensuite utilisé la commande egrep sur la partition :
dans mon cas, le message se trouvait dans
<code>/usr/local/home/michael/</code>, et donc d'après la sortie de
df, dans <code>/dev/hdb5</code>.</p>
<blockquote>
<pre><code>
sputnik3:~ % df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/hda3 18621 9759 7901 55% /
/dev/hdb3 308852 258443 34458 88% /usr
/dev/hdb5 466896 407062 35720 92% /usr/local
sputnik3:~ % su
Password:
[michael@sputnik3 michael]# egrep -50 'ftp.+COL' /dev/hdb5 > /tmp/x
</code></pre></blockquote>
<p>Je suis extrêmement prudent quand je manipule des partitions,
donc j'ai bien pris le temps de m'assurer que je comprenais la
syntaxe de cette commande AVANT de presser la touche Entrée. Dans
ce cas, le message contenait la mot "ftp", puis un peu de texte
suivi du mot "COL". Le message faisait une vingtaine de lignes,
donc j'ai utilisé -50 pour avoir toutes les lignes assez proches de
la phrase. Il m'est déjà arrivé d'utiliser -3000 pour être sûr de
réperer toutes les lignes d'un code source. J'ai redirigé le sortie
de egrep vers une autre partition pour éviter d'écraser le message
que je recherchais.</p>
<p>J'ai ensuite utilisé la commande strings pour examiner le
résultat.</p>
<blockquote>
<pre><code>
strings /tmp/x | less
</code></pre></blockquote>
<p>Effectivement, le message était là.</p>
<p>Cette méthode peut ne pas être efficace si tout ou partie de
l'espace disque a déjà été réutilisé.</p>
<p>Cette astuce n'est probablement utilisable que sur un système
mono-utilisateur. Sur un système multi-utilisateurs avec beaucoup
d'activité sur les disques, l'emplacement que vous avez libéré peut
très bien déjà avoir été réutilisé. Et pour la plupart nous ne
pouvons pas nous permettre d'enlever la machine de sous les pieds
de nos utilisateurs dès que nous avons besoin de récupérer un
fichier.</p>
<p>Sur mon système personnel, cette astuce a été bien pratique à
environ trois occasions ces quelques dernières
années - généralement après que j'ai détruit
accidentellement une partie de mon travail du jour. Si ce que je
fais survit assez longtemps pour progresser de façon significative,
je le sauvegarde sur une disquette, donc je n'ai pas souvent besoin
de ce truc.</p>
<h2><a name="ss3.3">3.3 Comment utiliser le marqueur
d'immutabilité. <em>Jim Dennis,</em>
<code>jadestar@rahul.net</code>.</a></h2>
<p>Utilisez le marqueur d'immutabilité.</p>
<p>Juste après avoir installé et configuré votre système, faites un
tour dans <code>/bin</code>, <code>/sbin</code>,
<code>/usr/bin</code>, <code>/usr/sbin</code>,
<code>/usr/lib</code> et autres, et n'hésitez pas à vous servir de
la commande "<code>chattr +i</code>". Appliquez-la aussi aux
fichiers du noyau à la racine. Maintenant, "<code>mkdir
/etc/.dist</code>" et copiez-y toute l'arborescence contenue dans
<code>/etc</code> (je le fais en deux étapes en utilisant
<code>/tmp/etcdist.tar</code> pour éviter la récursion). (Vous
pouvez aussi vous contenter de <code>/etc/.dist.tar.gz</code>). Et
placez-y un marqueur d'immutabilité.</p>
<p>Tout cela sert à limiter les dégâts que vous pouvez faire en
tant que root. Vous éviterez ainsi d'écraser des fichiers avec une
redirection mal contrôlée, et vous ne risquez pas de rendre le
système inutilisable à cause d'une espace mal placée dans une
commande "<code>rm -fr</code>" ; vous pouvez toujours faire
très mal à vos données, mais vos binaires et vos bibliothèques
seront à l'abri.</p>
<p>De plus, cela prévient, ou du moins complique, l'exploitation
d'un certain nombre de trous de sécurité ; en effet, beaucoup
d'attaques de ce type écrasent un fichier au moyen d'un quelconque
programme SUID qui <em>ne permet pas d'exécuter une commande
arbitraire</em>.</p>
<p>Le seul inconvénient se présente à l'installation de divers
logiciels système. D'un autre côté, ça empêche l'écrasement
accidentel de fichiers par "<code>make install</code>". Si vous
oubliez de lire le Makefile et d'appliquer <code>chattr -i</code>
aux fichiers qui doivent être écrasés (et aux répertoires auxquels
vous voulez ajouter des fichiers), le make échoue, et il suffit
d'utiliser chattr avant de le relancer. Vous pouvez aussi en
profiter pour déplacer vos anciens binaires, bibliothèques et
autres dans un répertoire <code>.old/</code>, les renommer, les
archiver ou autre.</p>
<h2><a name="ss3.4">3.4 Une suggestion quant à l'endroit où mettre
ce que vous rajoutez.</a></h2>
<p>Tout ce que vous rajoutez doit se trouver sous
<code>/usr/local</code> ou <code>/usr/local/`hostname`</code>!</p>
<p>Si votre distribution laisse <code>/usr/local</code> vide, créez
<code>/usr/local/src</code>, <code>/usr/local/bin</code>, etc. et
utilisez-les. Si votre distribution met des choses dans
<code>/usr/local</code>, créez <code>/usr/local/`hostname`</code>
et donnez-lui le mode +w pour le groupe wheel (en plus, je le rends
SUID et SGID pour m'assurer que les membres du groupe wheel ne
peuvent toucher qu'à leurs propres fichiers et que tous les
nouveaux fichiers vont appartenir au groupe wheel).</p>
<p>Maintenant, forcez-vous à <em>TOUJOURS</em> placer les nouveaux
paquetages sous <code>/usr/local/src/.from/$OU_JE_L_AI_EU</code>
(pour les fichiers .tar ou autres) et à les compiler sous
<code>/usr/local/src</code> (ou <code>.../$HOSTNAME/src</code>).
Assurez-vous qu'ils s'installent sous la hiérarchie locale. Si
quelque chose *doit obligatoirement* être installé dans
<code>/bin</code> ou <code>/usr/bin</code> ou autre, créez un lien
symbolique depuis la hiérarchie locale vers tout ce qui est
installé ailleurs.</p>
<p>La raison de tout ça, même si ça représente plus de travail, est
que ça permet de trouver facilement ce qui doit être sauvegardé et
réinstallé en cas de réinstallation complète depuis le média de
distribution (habituellement un CD à l'heure actuelle). En
utilisant un répertoire <code>/usr/local/src/.from</code>, vous
gardez aussi une trace de la provenance de vos sources, ce qui est
utile pour trouver les mises à jour et qui peut s'avérer critique
pour suivre les listes d'annonces de sécurité.</p>
<p>Un de mes systèmes personnels (celui que j'utilise) a été monté
avant que je n'applique moi-même cette politique. Je ne "sais"
toujours pas en quoi il diffère du système de base "tel
qu'installé". Et cela bien que je n'ai changé que très peu de
choses quant à sa configuration et que je suis le *seul* à
l'utiliser.</p>
<p>A contrario, tous les systèmes que j'ai mis en place au travail
(où j'ai été bombardé administrateur système) ont été configurés de
cette façon. Ils ont été administrés par plusieurs personnes
extérieures et autres membres du département informatique, et ils
ont subi de nombreuses mises à jour et installations de logiciels.
Pourtant, j'ai une idée très précise de ce qui a été rajouté
*après* l'installation et la configuration initiales.</p>
<h2><a name="ss3.5">3.5 Conversion de tous les fichiers d'un
répertoire en minuscules. <em>Justin Dossey,</em>
<code>dossey@ou.edu</code>.</a></h2>
<p>J'ai remarqué quelques procédures difficiles ou superflues
recommandées dans les trucs et astuces du numéro 12</p>
<blockquote>NdT : Apparemment, cette section est tirée de la
Linux Gazette</blockquote>
. Comme il y en a plusieurs, je vous adresse ce message.
<blockquote>
<hr>
<pre><code>
#!/bin/sh
# lowerit
# convertit les noms de tous les fichiers du répertoire
# courant en minuscules
# n'affecte que les fichiers, pas les sous-répertoires
# demande confirmation avant d'écraser un fichier existant
for x in `ls`
do
if [ ! -f $x ]; then
continue
fi
lc=`echo $x | tr '[A-Z]' '[a-z]'`
if [ $lc != $x ]; then
mv -i $x $lc
fi
done
</code></pre>
<hr></blockquote>
<p>Voilà un long script. Je n'écrirais pas un script pour ça ;
j'utiliserais plutôt la commande suivante :</p>
<blockquote>
<pre><code>
for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`;
done;
</code></pre></blockquote>
<p>Ce contributeur dit qu'il a écrit le script de cette façon pour
des raisons de lisibilité (voir plus bas).</p>
<p>Pour l'astuce suivante, qui traite de l'ajout et de la
suppression d'utilisateurs, Geoff s'en sort bien jusqu'à la
dernière étape. Rebooter ? J'espère qu'il ne reboote pas à
chaque fois qu'il supprime un utilisateur. Les deux premières
étapes suffisent. De toutes façons, quels processus cet utilisateur
pourrait-il laisser tourner ? Un bot IRC ? Tuez
simplement les processus avec :</p>
<blockquote>
<pre><code>
kill -9 `ps -aux |grep ^<nom d'utilisateur> |tr -s " " |cut -d " " -f2`
</code></pre></blockquote>
<p>Par exemple, pour l'utilisateur foo:</p>
<blockquote>
<pre><code>
kill -9 `ps -aux |grep ^foo |tr -s " " |cut -d " " -f2`
</code></pre></blockquote>
<p>Cette question étant classée, passons au mot de passe de root
oublié.</p>
<p>La solution donnée dans la Gazette est la plus universelle, mais
pas la plus facile. Aussi bien avec LILO qu'avec Loadlin, le
paramètre "single" permet de lancer directement le shell par défaut
au démarrage, sans entrer de login ni de mot de passe. À partir de
là, il suffit de changer ou d'enlever le mot de passe
problématique, avant de taper "<code>init 3</code>" pour passer en
mode multi-utilisateurs. De cette façon, un seul reboot ; de
l'autre, deux reboots.</p>
<p>Justin Dossey.</p>
<h2><a name="ss3.6">3.6 Mise à jour de Sendmail. <em>Paul
Anderson,</em></a> <code>paul@geeky1.ebtech.net</code></h2>
<p>Nous partons d'une source propre. Commencez par vous procurer le
code source de sendmail. J'ai téléchargé la version 8.9.0, qui est
comme vous pouvez le voir à la pointe du progrès. Je l'ai récupérée
depuis ftp.sendmail.org:/pub/sendmail/sendmail-8.9.0.tar.gz</p>
<p>Il pèse à peu près un méga-octet, et sachant que j'utilise la
version 8.7.6, je crois que ça vaut le coût. Si ça marche, vous en
entendrez sûrement parler ; sinon, je n'aurai plus de courrier
et je ne pourrai pas distribuer la nouvelle version de ce HOWTO
:)</p>
<p>Maintenant que vous avez téléchargé le source, décompactez-le.
Cela va créer un sous-répertoire <code>sendmail-8.9.0</code> dans
le répertoire courant. Placez-vous dans ce sous-répertoire et lisez
les fichiers <code>README</code> et <code>RELEASE_NOTES</code> (et
soyez époustouflé par toutes les améliorations qu'ils ont
apportées). Maintenant, placez-vous dans <code>src</code>. C'est là
que vous allez faire le plus gros du travail.</p>
<p><em>Une remarque au passage : Sendmail est un programme
petit, puissant et bien écrit. Le binaire <code>sendmail</code>
lui-même a mis moins de 5 minutes à compiler sur mon 5x86 133 avec
32 Mo de RAM ! La totalité de la compilation et de
l'installation (sans compter la configuration) ont pris moins de 15
minutes !</em></p>
<p>Je n'utilise pas BIND sur mon système, donc j'ai cherché les
lignes suivantes :</p>
<blockquote>
<hr>
<pre><code>
# ifndef NAMED_BIND
# define NAMED_BIND 1 /* use Berkeley Internet Domain Server */
# endif
</code></pre>
<hr></blockquote>
<p>et j'ai remplacé le 1 par un 0:</p>
<blockquote>
<hr>
<pre><code>
# ifndef NAMED_BIND
# define NAMED_BIND 0 /* use Berkeley Internet Domain Server */
# endif
</code></pre>
<hr></blockquote>
<p>Sur la Debian 1.3, <code>db.h</code> est installé par défaut
dans <code>/usr/include/db</code>, au lieu de
<code>/usr/include</code> où sendmail espère le trouver.
Placez-vous successivement dans les sous-répertoires
<code>src</code>, <code>mailstats</code>, <code>makemap</code>,
<code>praliases</code>, <code>rmail</code> et <code>smrsh</code> et
éxecutez la commande suivante :</p>
<blockquote>
<pre><code>
./Build -I/usr/include/db
</code></pre></blockquote>
<p>Ensuite, <code>cd ..</code> et tapez <code>make install</code>.
Voilà ! La version 8.9.0 de Sendmail doit maintenant être
installée ! Bien sûr, ça suppose que vous avez déjà votre
configuration d'origine. Pour que tout marche bien sur mon système,
comme j'héberge des listes de diffusion gratuites utilisant
majordomo, j'ai ajouté la ligne suivante au début de mon
<code>/etc/sendmail.cf</code> :</p>
<blockquote>
<hr>
<pre><code>
O DontBlameSendmail=forwardfileinunsafedirpath, forwardfileinunsafedirpathsafe
</code></pre>
<hr></blockquote>
<p>Sendmail 8.9.0 est à l'heure actuelle plutôt bavard à propos des
permissions des répertoires et des fichiers, et il va se plaindre à
propos des répertoires et des fichiers qui autorisent l'accès en
écriture pour le groupe ou pour tout le monde parmi les fichiers
d'alias ou <code>.forward</code>. Bien qu'il ne soit pas recommandé
d'inhiber ces avertissements, je suis toujours seul à la console et
j'ai trouvé que ce trou de sécurité mineur n'était en fait pas
gênant. C'est vous qui voyez.</p>
<h2><a name="ss3.7">3.7 Quelques astuces pour les administrateurs
système débutants. <em>Jim Dennis,</em>
<code>jadestar@rahul.net</code></a></h2>
<p>Créez et tenez à jour un fichier <code>/README.`hostname`</code>
ou <code>/etc/README.`hostname`</code> <em>[ ou éventuellement
<code>/usr/local/etc/README.`hostname`</code> - le
rédacteur ]</em></p>
<p>Absolument, à compter du <em>premier jour</em> de
l'administration d'un système, prenez des notes dans un fichier
journal. Vous pouvez mettre "vi /README.$(hostname)" sur une ligne
du fichier <code>.bash_logout</code> de root. Une autre façon de
faire est d'écrire un script <code>su</code> ou <code>sudo</code>
qui fait quelque chose comme ça :</p>
<blockquote>
<pre><code>
function exit \
{ unset exit; exit; \
cat ~/tmp/session.$(date +%y%m%d) \
>> /README.$(hostname) && \
vi /README.$(hostname)
}
script -a ~/tmp/session.$(date +%y%m%d)
/bin/su.org -
</code></pre></blockquote>
<p>(utilise la commande tapée pour créer une trace de la session et
crée une fonction pour automatiser la mise à jour du fichier
journal).</p>
<p>J'admets que je n'ai pas implanté cette automatisation - jusqu'à
maintenant je me suis reposé sur ma discipline. Cependant j'ai
envisagé l'idée (au point d'écrire les scripts et les fonctions que
vous avez sous les yeux). Une chose qui me retient est la commande
"script" elle-même. Je pense qu'il va falloir que je me procure les
sources et que je rajoute une paire de paramètres (pour arrêter
l'enregistrement du script depuis la ligne de commandes) avant de
me mettre à utiliser ça.</p>
<p>Ma dernière suggestion (pour cette fois) :</p>
<p>La variable PATH de root devrait contenir
<code>PATH=~/bin</code>.</p>
<p>C'est tout. Rien d'autre dans le PATH de root. Tout ce que root
peut faire est fourni par un lien symbolique dans
<code>~/bin</code>, un alias, une fonction shell, un script ou un
binaire situé dans <code>~/bin</code>, ou bien la commande est
tapée avec un chemin d'accès explicite.</p>
<p>De cette façon, toute personne utilisant le compte root se rend
compte (parfois douloureusement) à quel point elle fait confiance
aux binaires. L'administrateur avisé d'un système
multi-utilisateurs va en plus parcourir régulièrement son
répertoire <code>~/bin</code> et ses fichiers
<code>~/.*history</code> pour y chercher des répétitions et des
moyens de les contourner.</p>
<p>L'administrateur vraiment motivé va repérer les enchaînements
qui peuvent être automatisés, les endroits où des vérifications
peuvent être ajoutées, et les tâches pour lesquelles les privilèges
de root peuvent être abandonnées (comme lancer un éditeur, un agent
de transport de courrier électronique ou autre gros programme
pouvant exécuter des scripts qui *pourraient* être inclus dans des
fichiers de données - comme vi (<code>./.exrc</code>) ou emacs
(<code>./.emacs</code>) ou même, plus insidieux, $EXINIT et les
macros contenues au début ou à la fin des documents). Bien sûr, les
commandes de ce genre peuvent être lancées avec quelque chose comme
ça :</p>
<blockquote>
<pre><code>
cp $données $répertoire_utilisateur/tmp
su -c $commande_d_origine $paramètres
cp $répertoire_utilisateur/tmp $données
</code></pre></blockquote>
<p>(... où les détails dépendent de la commande).</p>
<p>Ces dernières précautions sont pour la plupart superflues pour
la machine personnelle ou la station "mono-utilisateur". Mais elles
représentent une très bonne manière d'administrer un gros système
multi-utilisateurs, particulièrement dans le cas d'un accès public
(comme les machines de netcom).</p>
<h2><a name="ss3.8">3.8 Comment configurer <code>xdm</code> pour
qu'il permette de choisir le système hôte ? <i>Arrigo Triulzi,</i>
<code>a.triulzi@ic.ac.uk</code>.</a></h2>
<ol>
<li>Modifier le fichier lançant xdm lors du démarrage (probablement
nommé /etc/rc/rc.6 ou /etc/rc.local) de façon que la section de xdm
contienne :
<blockquote>
<pre><code>
/usr/bin/X11/xdm
exec /usr/bin/X11/X -indirect hostname
</code></pre></blockquote>
</li>
<li>Modifier le fichier /usr/lib/X11/xdm/Xservers et commenter la
ligne invoquant le serveur sur la machine locale (commence par
"0:")</li>
<li>Relancer le système... tout doit fonctionner !</li>
</ol>
<p>J'ajoute cette section après avoir sué une semaine durant sur ce
problème !</p>
<p>Attention : certaines anciennes versions de la distribution SLS
(1.1.1) exigent qu'un paramètre "-nodaemon" accompagne l'invocation
d'xdm. Les version ultérieures ne présentent <b>PAS</b> cette
caractéristique.</p>
</body>
</html>
|