3. Installer MGR

Contenu de cette section

On peut charger la dernière version sur archimedesbugs.nosc.mil/pub/Mgr/69 et sous Mosaic depuis http://archimedes.nosc.mil/Mgr/69. On peut le trouver aussi sur ftp://sunsite.unc.edu/pub/Linux/apps/MGR et ses miroirs. Les versions anciennes de Haardt peuvent se trouver sur tsx-11.mit.edu et peut-être ailleurs. Des versions Pre-Linux de MGR de Uhler et d'autres ont été trouvées sur bellcore.com/pub/mgr, mais je pense qu'elles n'y sont plus. J'ai conservé une copie de tout ce que j'ai vu concernant MGR sur l'Internet, et je n'ai pas connaissance qu'il n'y ait quoi que ce soit d'important qui puisse manquer dans cette distribution Linux/Sun. Il y a eu un tas de versions et de mises en circulation de MGR, mais la version *Linux* actuelle est 0.69. Cette version devrait passer à 1.0 quand un code VGA-256 stable pour Linux apparaîtra (pour plusieurs types de cartes vidéo). Les numéros de version RCS sont passés de Bellcore 4.3 jusqu'à 4.13 à ce jour.

Pour construire cette distribution de MGR il faut m4 (GNU ou tout autre admettant l'option -D), make (GNU, ou tout autre admettant include) et *roff pour les docs. Et enfin sh, awk et install POSIX. Les distributions binaires n'ont pas toujours assemblées aussi faut-il un compilateur C ANSI, du style gcc.

Une installation sous Linux requiert au moins une version 0.99.10 ou ultérieure (1.2.13 est ce que j'utilise à l'heure actuelle) , une carte graphique HGC, EGA, VGA ou SVGA et une souris de type~: serial Microsoft, serial MouseSystems 3 et 5 bytes, serial MMSeries, serial Logitech, PS/2, ou une souris bus. Avec Buckey (Meta) hot keys en service, même un système ne possédant pas de souris peut effectuer pas mal de travail utile sous MGR. Le mode graphique monochrome VGA 640x480 est supporté, tout comme le 640x350 et le 640x200. Pour tourner en 800x600, ou d'autres modes que votre BIOS peut initialiser et qui n'ont pas besoin de bank-switching, vous aurez besoin d'un petit programme (src/vgamisc/regs.exe) sous DOS pour lire les registres VGA quand ce mode est installé puis d'écrire un fichier header que vous placerez dans le répertoire src/libbitblit/linux, de telle sorte qu'il puisse être appelé par le fichier vga.c. Des exemples sont fournis, mais créez quand même le vôtre. Quelques cartes VGA peuvent utiliser des fenêtres de 128k~; celles-ci peuvent tourner avec de plus hautes résolutions.

Le code Linux-colorport peut aussi tourner dans le mode couleur standard VGA 320*200*256 sans difficultés, car il n'y a pas de bank-switching nécessaire. Si vous réfléchissez au peu que représentent 64000 pixels, vous comprendrez que ce mode couleur est tout à fait limité. Un code lent, mais simple, a été ajouté dans la version 0.65, et il travaille avec une carte Tseng ET4000 dans les modes 640x480x256 et 800x600x256. Le code S3 ne marche pas encore dans les résolutions super-VGA. Pour utiliser des nouvelles cartes super-VGA il faut écrire une fonction pour changer de bloc de mémoire et être sûr que le mode écran souhaité peut être initialisé à partir d'un vidage de registre, éventuellement en le peaufinant à la main. Les serveurs couleur sous Linux déforment généralement les fontes écrans, d'où la nécessité d'utiliser restorefont comme dans runx. Si quelqu'un pouvait récupérer le code d'initialisation VGA de X, cela ferait de MGR un système possédant plus de couleurs.

Suns avec SunOS 4.1.2+ et les tampons de trame bwtwo, cgthree, ou cgsix sont acceptés. Leurs vitesses de manipulation des couleurs sont correctes. Les systèmes Coherent doivent se référer au fichier README.Coh de la distribution source. Porter le tout dernier MGR sur un autre système analogue à POSIX qui possède select, des pty et un accès direct à un tampon de trame bitmap devrait être immédiat, en implémentant simplement la bibliothèque libbitblit basée sur le code sunmono ou colorport.

Si vous voulez tout installer, vous aurez besoin de 7 MB d'espace disque pour les binaires, les fonts, les explications, etc. Les sources font environ 4,5 MB plus les fichiers objets durant la compilation.

Normalement, /usr/mgr doit être le répertoire ou bien il doit être linké au répertoire où vous installerez les accessoires MGR. Tapez

cd /usr/mgr; tar xvfz la_ou_vous_le_mettez/mgrusr-0.69.tgz
et éventuellement
cd /usr/mgr; tar xvfz la_ou_vous_voulez/morefonts-0.69.tgz
pour décompacter. Les sources peuvent être mises n'importe où, par exemple tapez
cd /usr/src/local/mgr; tar xvfz la_ou_vous_voulez/mgrsrc-0.69.tgz
pour décompacter les sources à partir de archimedes.nosc.mil.

L'arborescence source peut être compilée à partir d'un Makefile principal qui fait appel lui-même à des Makefile secondaires, chacun "incluant" un "Configfile" au niveau supérieur. Le Configfile est créé à l'aide d'un script interactif nommé Configure, qui vous pose un certain nombre de questions, puis utilise m4 avec un fichier Configfile.m4. Ensuite vous tapez quelque chose comme ceci~:

chdir /usr/src/local/mgr
sh ./Configure
make first
make depend
make install
make clean

Il est prudent, avant de taper make, de jeter un coup d'oeil dans le fichier Configfile généré par le script Configure, pour vérifier s'il n'y a pas d'anomalie. Au pire m4 s'interrompt, créant un fichier Configfile tout petit. Si cela arrive, essayez une copie de Configfile.sun ou Configfile.lx. Tout peut être effectué dans n'importe quel répertoire avec un Makefile à partir du moment où les bibliothèques ont été compilées et installées. Le serveur, les bibliothèques et quelques clients sont implémentés avec lint, mais plusieurs clients utilisent le code C K&R ce qui engendre beaucoup d'avertissements pendant la compilation. Plusieurs flags dans MGRFLAGS peuvent être ajoutés ou retranchés pour changer quelques options du serveur, à savoir~:

-DWHO

fichier utmp poubelle pour que "who" puisse travailler

-DVI

code pour faire bouger le curseur sous vi avec la souris

-DDEBUG

permet la mise au point en sélectionnant l'option -d

-DFASTMOUSE

XOR le temps d'accès de la souris

-DBUCKEY

permet les commandes serveur par le clavier sans souris

-DPRIORITY

pour planifier la priorité des fenêtres au lieu de fonctionner par requêtes circulaires~; la fenêtre active obtient une plus grande priorité.

-DCUT

pour faire du couper/coller entre fenêtres

-DMGR_ALIGN

force l'alignement des fenêtres pour un scrolling rapide(monochrome)

-DKILL

supprime les fenêtres en cas d'erreurs i/o sur un tty

-DSHRINK

pour utiliser seulement une partie de l'écran ($MGRSIZE dans les variables d'environnement)

-DNOSTACK

interdit l'empilement d'événements

-DBELL

actionne le bip

-DKBD

lit les données mgr à partir du clavier sun, au lieu de stdin. Cela autorise la redirection des messages console vers une fenêtre.

-DFRACCHAR

mouvement de caractère fractionnel pour fontes proportionnelles

-DXMENU

menu étendu (expérimental)

-DMOVIE

extension pour faire un film qui enregistre toutes les opérations dans un fichier en vue de les rejouer plus tard (ne marche pas bien sous Linux).

-DEMUMIDMSBUT

Pour simuler le 3ème bouton d'une souris

Méfiez-vous~: certaines combinaisons n'ont pas été essayées sur tous les systèmes. La macro BITBLITFLAGS doit contenir -DBANKED si vous voulez essayer le super VGA couleur.

Le code C pour les variables statiques du serveur contenant les icônes et les fontes est généré à l'aide d'un traducteur à partir des fichiers icônes et fontes.

Tous les clients ne sont pas compilés et installés par les fichiers Makefile. Les fichiers clients trouvés dans src/clients qui ont des noms en majuscule ou bien non compilés par les fichiers Makefile fournis, peuvent donner des problèmes de compilation et/ou d'utilisation~; il peut être intéressant de les examiner.

Plusieurs pilotes d'écran du répertoire libbitblit ont plutôt un intérêt historique. Mieux vaut les faire disparaître.

Vérifiez que votre fichier /etc/termcap et/ou terminfo contient des entrées pour les terminaux MGR, comme ceux que l'on trouve dans le répertoire misc. Si vos logiciels prennent en compte $TERMCAP dans l'environnement, ceci n'est pas nécessaire, tant que vous utilisez set_termcap dans chaque fenêtre.

Il est préférable de travailler avec MGR avec setuid root, car il utilise ptys et write dans le fichier utmp. Cela permet au client gestionnaire d'icônes de mieux travailler et d'avoir une plus grande sûreté quant à l'enchaînement des événements. Sur Linux, les permissions root sont nécessaires pour faire fonctionner les systèmes écran. Autrement vous décidez de lui faire confiance.

Avec les versions aux alentours de 0.62 il y a des problèmes avec Sun quand on utilise csh comme shell par défaut~: les programmes semblent tourner sur un processus différent que le processus de premier plan du pty de la fenêtre, en contradiction avec les pages de manuel et les spécifications posix. Rien de tel avec bash, sh, ou rc. Vous avez une idée~?


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre