INRA MIAJ nls2

 

NLS2
Notes d'administration

See also the english administration notes.

Sommaire:
Sur quels systèmes fonctionne nls2
Quels sont les systèmes hôtes
Comment installer nls2
À faire avant l'installation
L'installation par R CMD INSTALL
L'installation par le script INSTALL
Que fait le script INSTALL
Que fait le script configure

Sur quels systèmes fonctionne nls2:

nls2 est configuré pour Unix et Linux.
L'installation sur d'autres systèmes nécessite l'adaptation du script configure.

Quels sont les systèmes hôtes:

nls2 fonctionne sous R et Splus.
Une version réduite à l'estimation des paramètres, nommée nls2C, fonctionne indépendamment de R et de Splus. Elle se présente comme une série de sous-programmes C; un programme principal d'appel est fourni.

Comment installer nls2:

On peut installer nls2 de 2 façons qui seront détaillées ci-dessous:
  1. par la commande R: R CMD INSTALL
  2. par un shell-script d'installation: INSTALL

À faire avant l'installation:

Il peut être nécessaire de modifier des fichiers avant d'installer nls2. C'est le cas quand:
La librairie Lex n'est pas libfl.a.
Dans ce cas, il faut:
  1. remplacer dans les fichiers src/Makevars.in et src/MyMakevars, la chaîne de caractères "-lfl" par la référence adéquate. Par exemple, si la librairie est /usr/lib/libl.a, "-lfl" devra être remplacé par "-ll".

Sur les systèmes Linux, le fichier ieee754.h, ou, sur les autres systèmes, le fichier ieeefp.h, n'est pas disponible:

Dans ce cas, il faut:
  1. trouver ou créer un fichier 'include' qui contienne la fonction 'finite(x)', c.-à-d. une fonction C qui renvoie 0 quand son argument n'est pas un nombre fini.
  2. remplacer dans le fichier configure les chaînes de caractères ieee754.h et ieeefp.h par le nom de ce fichier.

Le suffixe des librairies partagées n'est pas ".so" et on veut utiliser le script INSTALL:

Remplacer dans les fichiers INSTALL, src/MyMakevars et R/loadnls2.s.in, la chaîne de caractères .so par le suffixe des librairies partagées sur votre système.

Le système R n'est pas installé ou bien on veut utiliser d'autres compilateurs ou d'autres options de compilation que celui-ci:

Modifier le fichier src/MyMakevars en y spécifiant les compilateurs et options voulues.
(Note: un fichier src/MyMakevars.SunOS correspondant à la configuration de SunOS est fourni)

Sommaire

L'installation par R CMD INSTALL:

Cette façon d'installer nls2 n'est évidemment possible que sur les sites où R est disponible et n'est garantie que sur les versions de R <=1.
Sur Linux:
La commande est:
R CMD INSTALL nls2_2003.2.tar.gz
Sur Unix:
La commande est:
R CMD INSTALL --configure-args="-system unix" nls2_2003.2.tar.gz
sans caractère blanc autour du signe égal.

Sommaire

L'installation par le script INSTALL:

Les étapes d'installation sont les suivantes:
  1. Décompresser et dé-tarer le tar-archive dans le répertoire d'installation:
    gunzip nls2_2003.2.tar.gz
    tar xf nls2_2003.2.tar
    
    Un répertoire nommé nls2 est alors créé.
  2. Se positionner dans le répertoire nls2
  3. Appeler le script INSTALL:
    ./INSTALL [options]
    
    les options étant:
    • -host <R|Splus|nls2C>
      pour installer une version fonctionnant sous Splus, R ou nls2C.
    • -load <0|1|2>
      • 0: la compilation et l'édition de liens sont faites par les commandes R CMD COMPILE et R CMD SHLIB (c'est la valeur par défaut)
      • 1: la compilation et l'édition de liens sont faites en utilisant le fichier R_HOME/etc/Makeconf, c.-à-d. de la même façon que R lui-même.
      • 2: la compilation et l'édition de liens sont faites en utilisant le fichier ./src/MyMakevars, celui-ci étant supposé avoir été adapté par l'administrateur.
      Les valeurs 0 et 1 ne sont évidemment valables que si R est disponible.
    • -system <linux|unix>
      pour installer une version fonctionnant sous Linux ou Unix. (Linux, par défaut)
    • -command <path-command>
      <path-command> représente le chemin de la commande Splus ou R. (R, par défaut)

Sommaire

Que fait le script INSTALL:

Ce script est une alternative à R CMD INSTALL: il doit donc réaliser la même chose; en plus, pour vérifier l'installation, on lui fait exécuter les démos.

Par défaut, il réalise toutes les tâches suivantes. Des options supplémentaires à celles exposées ci-dessus permettent à l'administrateur de les restreindre, mais il est supposé que l'ordre logique de leur exécution est respecté. Ces tâches sont les suivantes:

  1. Appeler le script configure avec les options adéquates, afin de modifier les fichiers selon la configuration courante (voir détails)
    (option -configure)
  2. Charger le source des fonctions R (sauf dans le cas nls2C)
    (option -func)
  3. Compiler les programmes par exécution du fichier src/Makefile.
    Ce fichier place les exécutables (crInv, analDer, etc...) dans le répertoire inst. Cela est nécessaire car ce fichier est aussi utilisé par R CMD INSTALL, lorsque l'installation est faite par cette commande. Or, R CMD INSTALL détruit tout ce qui n'est pas 'standard', à moins que ce ne soit dans inst,
  4. Remonter le contenu de inst d'un niveau et mettre les fichiers src/*.so dans le répertoire libs comme le ferait R CMD INSTALL. À ce stade, libs contient les librairies partagées (*.so) et le répertoire nls2libs contient les compilés (*.o) et les librairies statiques (*.a)
    (option -compile)
  5. Charger les données des exemples contenus dans le répertoire data (sauf dans le cas nls2C)
    (option -dataex)
  6. Exécuter les exemples dans le répertoire tests (sauf dans le cas nls2C)
    (option -testex)
  7. Exécuter les exemples dans le répertoire demo (sauf dans le cas nls2C)
    (option -demoex)

Sommaire

Que fait le script configure:

Ce shell-script est appelé par la commande R: R CMD INSTALL et par le script INSTALL.

Il modifie les fichiers qui en ont besoin (ceux de suffixe .in) selon la valeur de ses arguments. L'original des fichiers ou répertoires est conservé: les modifications sont faites dans une recopie, de même nom, le suffixe .in étant ôté, ce qui permet de recommencer l'installation autant de fois que voulu.
Les parties à modifier sont souvent symbolisées par un patron choisi conventionnellement qu'une instruction du script remplace.

Ses arguments sont ceux du script INSTALL ou ceux passés à R CMD INSTALL via "--configure-args".

Ce que fait ce script:

  1. fixe la commande à sa valeur par défaut si aucune n'a été donnée en argument: Splus, si l'hôte est Splus, et R, sinon (dans le cas nls2C, on ignore la commande)
  2. si l'hôte n'est pas R: on force load à 2 et on prévient qu'il faut customiser src/MyMakevars
  3. copie les fichiers ou répertoires à modifier dans des fichiers ou répertoires de même nom, le suffixe .in étant ôté.
  4. détermine le chemin d'accès du répertoire d'installation, et l'affecte à une variable nommée $nls2dir.
    Pour déterminer le chemin d'accès du répertoire d'installation, on teste la variable R_PACKAGE_DIR:
    • si cette variable est affectée, c'est que le script est appelé par R CMD INSTALL. R_PACKAGE_DIR est alors égale au chemin d'accès du répertoire des librairies de R.
    • sinon, c'est que le script est appelé par INSTALL et $nls2dir est alors le répertoire courant.
  5. remplace un patron conventionnel, PATRONDIR, par la valeur de $nls2dir dans les fichiers
    • src/nl/Messagenls2.c: pour fixer le chemin d'accès du fichier qui contient les libellés des messages.
    • R/init.R: ce fichier contient une instruction R qui affecte à la variable nommée .Nls2dir la valeur de $nls2dir; cette variable sera utilisée par la fonction R/loadnls2.s et par les fichiers de data et de demo pour faire l'édition de liens des programmes de calcul du modèle avec ceux de nls2.
  6. modifie les fichiers de demo, selon la valeur de $nls2dir; en effet, les fichiers démos utilisent les fonctions de nls2 et les données du répertoire data, et il est nécessaire de leur indiquer comment les trouver:
    • si le script n'est pas appelé par R CMD INSTALL, on transforme les 'library(nls2)' et 'data()', par des instructions 'attach'; L'argument de ces instructions, représenté par le patron conventionnel NLS2LOC, est remplacé par le chemin d'accès au fichier .RData (ou .Data, si Splus) du répertoire d'installation.
    • sinon, on remplace NLS2LOC par le chemin d'accès au répertoire d'installation.
  7. modifie le fichier src/Basic/nltypes.h pour insérer ieee754.h (système Linux) ou ieee754.h (autres systèmes)
  8. modifie le fichier src/Makefile pour indiquer le fichier à y inclure (remplacement du patron conventionnel RCONFIG):
    • si load=2, on y inclut src/MyMakevars
    • sinon on y inclut `R RHOME`/etc/Makeconf, c.à.d le fichier qui indique les compilateurs et options de compilation ayant servi lors de l'installation de R. (R est toujours disponible quand load!=2).
      Remarque: quand load=0, la compilation et l'édition de liens sont faites en utilisant des commandes de R, et l'inclusion du fichier Makeconf dans le Makefile ne sert que pour déterminer le suffixe des librairies partagées.
  9. modifie le fichier src/Makevars, lui aussi inclus dans src/Makefile, pour indiquer les compilateurs et options de compilation voulus.
    • si load=0, on remplace le patron conventionnel CDE, par le nom de la commande (R, Splus ou leur chemin d'accès), la compilation et l'édition de liens étant alors faites par 'CDE CMD COMPILE'.
    • sinon, la compilation et l'édition de liens sont faites en utilisant les variables $(CC), $(PKG_CPPFLAGS), etc,.. définis dans src/MyMakevars (load=2) ou `R RHOME`/etc/Makeconf (load=1).
      On modifie src/Makevars en conséquence.
  10. modifie le fichier src/Makefile pour que les fichiers compilés soient toujours au même endroit, quelque soit le cas. En effet, lorsque la compilation est faite par R (c.à.d. quand load=0), les compilés sont dans les sous-répertoires de src. Lorsqu'elle est faite directement en invoquant des compilateurs, ils sont dans le répertoire dans lequel a été lancée la commande de compilation, c.à.d. dans src
    Le Makefile les met dans le répertoire nls2libs
  11. modifie le fichier R/loadnls2.s pour que la fonction R qui y est contenue, lance la compilation des sources de l'utilisateur quand load!=0.
    Quand load=0, la compilation et l'édition de liens sont faites par les commandes de R.
  12. modifie le fichier src/Basic/nltypes.h, si l'hôte est Splus.
    En effet, le type nommé TFuncInt qui est celui utilisé pour les arguments entiers des programmes appelés par les fonctions R de nls2, doit être alors 'long int'
  13. crée le répertoire loaduser et y met tout ce qui sera utile à la compilation des programmes de l'utilisateur: le fichier Makefile (recopie de celui de src), les fichiers Makevars et, quand load=2, MyMakevars (recopie de ceux de src, puis modification pour tenir compte des emplacements rééls des répertoires), les fichiers *.h à inclure dans les programmes de l'utilisateur (ceux de src/Basic)
  14. crée le répertoire inst et y met tout ce qui n'est pas 'standard' afin que la commande R CMD INSTALL, quand c'est elle qui appelle le script, ne les détruise pas: le fichier des messages, FILEMESS, les répertoires loaduser, html, doc et le shell-sript crCalib. On y met aussi, éventuellement (c.à.d quand l'option nosrc n'est pas positionnée), tout ce qui est nécessaire à une ré-installation.
  15. crée le répertoire tests pour répondre aux standards de R (R CMD INSTALL est censé exécuter ce qui est dans ce répertoire)
    On y met toutes les démos (fichiers demo/*.R) sauf ceux nécessitant Nag, que l'on concaténe dans un fichier nommé nls2.R

    Sommaire