Index: projects/xml-tools/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml =================================================================== --- projects/xml-tools/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 41366) +++ projects/xml-tools/fr_FR.ISO8859-1/books/handbook/cutting-edge/chapter.xml (revision 41367) @@ -1,2863 +1,2863 @@ Jim Mock Restructuré, réorganisé, et en partie mis à jour par Jordan Hubbard Travail original de Poul-Henning Kamp John Polstra Nik Clayton Mise à jour de &os; &trans.a.fonvieille; Synopsis &os; est en constant développement entre deux versions. Certains utilisateurs préfèrent utiliser les versions publiées officiellement alors que d'autres voudront rester à jour avec les tous derniers développements. Mêmes les versions officielles sont souvent mises à jour avec les correctifs de problèmes critiques et de sécurité. Indépendamment de la version utilisée, &os; fournit tous les outils nécessaires à la mise à jour de votre système, et permet également des mises à jour aisées entre versions. Ce chapitre vous aidera à décider si vous voulez suivre les développements, ou vous en tenir aux versions publiées. Les outils de base pour le maintien à jour de votre système seront également présentés. Après la lecture de ce chapitre, vous connaîtrez: Quels utilitaires peuvent être employés pour mettre à jour le système et le catalogue des logiciels portés. Comment maintenir votre système à jour avec freebsd-update, CVSup, CVS, ou CTM. Comment comparer l'état d'un système installé avec une copie de confiance. La différence entre les deux branches de développement: &os.stable; et &os.current;. Comment recompiler et réinstaller l'intégralité du système de base avec la commande make buildworld (etc.). Avant de lire ce chapitre, vous devrez: Correctement configurer votre connexion réseau (). Savoir comment installer des logiciels tiers (). Tout au long de ce chapitre, la commande cvsup sera utilisée pour récupérer et mettre à jour les sources de &os;. Pour l'utiliser, vous devrez installer un logiciel porté ou pré-compilé tel que net/cvsup-without-gui. Si vous utilisez &os; 6.2-RELEASE ou une version ultérieure, vous pouvez remplacer cette commande par &man.csup.1;, qui fait désormais partie du système de base. Tom Rhodes Ecrit par Colin Percival Basé sur des notes de Mise à jour de FreeBSD Mise à jour freebsd-update mise à jour Appliquer des correctifs de sécurité est une part importante de la maintenance de logiciels informatiques tout particulièrement dans le cas du système d'exploitation. Pendant très longtemps sous &os;, ce processus n'était pas aisé. Les correctifs devaient être appliqués au code source, le code ensuite recompilé sous forme de binaires, et enfin les binaires devaient être ré-installés. Ce processus n'est plus de mise comme &os; dispose désormais d'un utilitaire appelé simplement freebsd-update. Cet utilitaire fournit deux fonctions distinctes. Tout d'abord, il permet l'application de mises à jour de correction et de sécurité sur le système de base de &os; sans nécessiter une compilation et une ré-installation. En second lieu, l'utilitaire supporte les mises à jour mineures et majeures des versions publiées. Les mise à jour binaires sont disponibles pour toutes les architectures actuellement supportées par l'équipe de sécurité. Avant de mettre à jour vers une nouvelle version, les annonces concernant la version devront être passées en revue sachant qu'elles peuvent contenir des informations importantes au sujet de cette version. Ces annonces peuvent être consultées à l'adresse suivante: . S'il existe une table crontab utilisant freebsd-update, elle doit être désactivée avant de démarrer les opérations qui vont suivre. Le fichier de configuration Certains utilisateurs peuvent souhaiter adapter le fichier de configuration par défaut /etc/freebsd-update.conf, permettant un meilleur contrôle du processus. Les options sont très bien documentées, mais les suivantes demandent un peu plus d'explication: # Composants du système de base qui doivent être maintenus à jour. Components src world kernel Ce paramètre contrôle quelles sont les parties de &os; qui seront mises à jour. Par défaut on met à jour le code source, l'intégralité du système de base et le noyau. Les composants sont les mêmes que ceux disponibles durant l'installation, par exemple, ajouter world/games ici permettrait d'appliquer les correctifs relatifs aux jeux. Utiliser src/bin permettrait la mise à jour du code source du répertoire src/bin. La meilleure option est de laisser telle quelle la configuration par défaut car la modifier pour ajouter des éléments particuliers demandera à l'utilisateur de lister chaque élément qu'il désire mettre à jour. Cela pourrait avoir des conséquences désastreuses puisque le code source et les binaires peuvent à terme ne plus être en phase. # Les chemins d'accès commençant par quelque chose correspondant à une # entrée de type IgnorePaths seront ignorés. IgnorePaths Ajoute les chemins d'accès comme /bin ou /sbin pour préserver intacts ces répertoires durant le processus de mise à jour. Cette option peut être utilisée pour empêcher freebsd-update d'écraser des modifications locales. # Les chemins d'accès qui commencent par quelque chose correspondant à # une entrée de type UpdateIfUnmodified seront mis à jour que si le # contenu du fichier n'a pas été modifié par l'utilisateur (à moins # que les modifications ne soient fusionnées; voir plus bas). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile Met à jour les fichiers de configuration dans les répertoires désignés seulement s'ils n'ont pas été modifiés. Tout changement effectué par l'utilisateur invalidera automatiquement la mise à jour de ces fichiers. Il existe une autre option KeepModifiedMetadata qui indiquera à freebsd-update de sauvegarder les changements durant la fusion. # Quand on met à jour vers une nouvelle version de &os;, les fichiers # correspondant à une entrée de type MergeChanges verront leurs # différences locales fusionnées avec le fichier de la nouvelle # version de &os;. MergeChanges /etc/ /var/named/etc/ Liste des répertoires avec des fichiers de configuration que freebsd-update devrait tenter de fusionner. Le processus de fusion des fichiers est l'application d'une série de correctifs &man.diff.1; similaires à ceux de &man.mergemaster.8; avec cependant moins d'options, les fusions sont soit acceptées, ouvrant un éditeur, soit abandonnées par freebsd-update. En cas de doute, sauvegardez /etc et acceptez les fusions. Consultez la section sur pour plus d'information sur la commande mergemaster. # Répertoire dans lequel stocker les mise à jour téléchargées et les # fichiers temporaires utilisés par la mise à jour de &os;. # WorkDir /var/db/freebsd-update Ce répertoire est l'endroit où tous les correctifs et les fichiers temporaires seront placés. Dans les cas où l'utilisateur effectue une mise à jour de version, cet emplacement doit disposer d'au moins un gigaoctet d'espace disponible. # Lors de mises à jour entre versions de &os;, doit-on lire la liste # de composants de manière stricte (StrictComponents yes) # ou tout simplement comme une liste de composants qui *pourraient* # être installés et pour lesquels la mise à jour de &os; devrait # déterminer lesquels sont effectivement installés et les mettre à # jour (StrictComponents no)? # StrictComponents no Cette option fixée à yes, freebsd-update supposera que la liste de composants est complète et n'essaiera pas d'effectuer des modifications en dehors de cette liste. Concrètement, freebsd-update tentera de mettre à jour chaque fichier appartenant à la liste de composants. Correctifs de sécurité Les correctifs de sécurité sont stockés sur une machine distante et peuvent être téléchargés et installés en utilisant la commande suivante: &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Si des correctifs ont été appliqués au noyau le système devra être redémarré. Si tout c'est bien passé le système est corrigé et freebsd-update pourra être exécuté chaque nuit via un processus &man.cron.8;. Une entrée dans le fichier /etc/crontab devrait être suffisante pour accomplir cette tâche: @daily root freebsd-update cron Cette entrée indique qu'une fois par jour, l'utilitaire freebsd-update sera exécuté. De cette manière, en employant l'option , freebsd-update vérifiera seulement l'existence de mises à jour. Si des correctifs existent, il seront automatiquement téléchargés sur le disque local mais non-appliqués. L'utilisateur root sera contacté par courrier électronique, il pourra ainsi les installer manuellement. Si quelque s'est mal passé, freebsd-update a la capacité d'annuler le dernier ensemble de changements avec la commande suivante: &prompt.root; freebsd-update rollback Une fois la commande achevée, le système devra être redémarré si le noyau ou un de ses modules ont été modifiés. Cela permettra à &os; de charger en mémoire les nouveaux binaires. L'utilitaire freebsd-update peut mettre à jour uniquement et automatiquement le noyau GENERIC. Si un noyau personnalisé est utilisé, il devra être recompilé et réinstallé après que la commande freebsd-update ait achevé l'installation du reste des mises à jour. Cependant freebsd-update détectera et mettra à jour le noyau GENERIC dans /boot/GENERIC (s'il existe), et cela même si ce n'est pas le noyau actuel (qui tourne) du système. C'est toujours une bonne idée de conserver une copie du noyau GENERIC dans /boot/GENERIC. Cela sera utile pour diagnostiquer une variété de problèmes, et lors des mises à jour utilisant freebsd-update comme décrit dans la . A moins que la configuration par défaut présente dans /etc/freebsd-update.conf n'ait été modifiée, freebsd-update installera les sources du noyau mises à jour avec le reste des mises à jour. La recompilation et la réinstallation d'un noyau personnalisé peuvent effectuées de la manière classique. Les mises à jour distribuées via freebsd-update, n'impliquent pas toujours le noyau. Il ne sera pas nécessaire de recompiler votre noyau personnalisé si les sources du noyau n'ont pas été modifiées par l'exécution de freebsd-update install. Cependant freebsd-update met toujours à jour le fichier /usr/src/sys/conf/newvers.sh. Le niveau ou la version de correctifs (comme indiqué par le nombre -p rapporté par uname -r) est obtenu à partir de ce fichier. Recompiler votre noyau personnalisé, même si rien d'autre n'a changé, permettra à la commande &man.uname.1; de rapporter précisément le niveau de correctifs du système. C'est particulièrement utile quand on gère de multiples systèmes, car cela permet une évaluation rapide des mises à jour présentes sur chacun d'eux. Mises à jour mineures et majeures Ce processus supprimera les anciens fichiers objets et bibliothèques qui rendent inutilisables la plupart des applications tierce-partie. Il est recommandé que tous les logiciels portés soient supprimés et réinstallés ou mis à jour ultérieurement en utilisant l'outil ports-mgmt/portupgrade. La plupart des utilisateurs voudront lancer une compilation test à l'aide de la commande suivante: &prompt.root; portupgrade -af Cela garantira que tout sera réinstallé correctement. Notez que fixer la variable d'environnement BATCH à yes répondra yes à toute question lors de ce processus, supprimant ainsi la nécessité d'une intervention humaine durant le processus de compilation. Si un noyau personnalisé est utilisé, le processus de mise à jour est un peu plus complexe. Une copie du noyau GENERIC est nécessaire et devrait être placée dans le répertoire /boot/GENERIC. Si le noyau GENERIC n'est pas présent sur le système, il peut être obtenu en utilisant une des méthodes suivantes: Si un noyau personnalisé a déjà été compilé, le noyau présent dans /boot/kernel.old est en fait le noyau GENERIC. Renommer ce répertoire en /boot/GENERIC. En supposant qu'un accès physique à la machine est possible, une copie du noyau GENERIC peut être installé à partir d'un CD-ROM. Insérer votre disque d'installation et utiliser les commandes suivantes: &prompt.root; mount /cdrom &prompt.root; cd /cdrom/X.Y-RELEASE/kernels &prompt.root; ./install.sh GENERIC Remplacer X.Y-RELEASE avec la version que vous utilisez. Le noyau GENERIC sera installé par défaut dans /boot/GENERIC. En dehors de ce qui précède le noyau GENERIC peut être recompilé et installé à partir des sources: &prompt.root; cd /usr/src &prompt.root; env DESTDIR=/boot/GENERIC make kernel &prompt.root; mv /boot/GENERIC/boot/kernel/* /boot/GENERIC &prompt.root; rm -rf /boot/GENERIC/boot Pour que ce noyau soit pris en compte comme GENERIC par freebsd-update, le fichier de configuration GENERIC devra ne pas avoir été modifié. Il est également suggéré qu'il soit compilé sans aucune option particulière (de préférence avec un fichier /etc/make.conf vide). Redémarrer avec le noyau GENERIC n'est pas nécessaire à ce stade. Les mises à jour de versions majeures et mineures peuvent être effectuées en passant à la commande freebsd-update la version vers laquelle on désire mettre à jour, par exemple, la commande suivante effectuera la mise à jour vers &os; 8.1: &prompt.root; freebsd-update -r 8.1-RELEASE upgrade La commande freebsd-update analysera le fichier de configuration et le système afin de récupérer les informations nécessaires à la mise à jour du système. A l'écran s'affichera quels sont les composants détectés et quels sont ceux qui n'ont pas été détectés. Par exemple: Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y A ce niveau freebsd-update tentera de télécharger tous les fichiers nécessaires à la mise à jour. Dans certains cas l'utilisateur sera interrogé sur ce qu'il faut installer ou sur comment procéder à certaines actions. Si un noyau personnalisé est utilisé, l'étape précédente produira un avertissement semblable au suivant: WARNING: This system is running a "MYKERNEL" kernel, which is not a kernel configuration distributed as part of FreeBSD 8.0-RELEASE. This kernel will not be updated: you MUST update the kernel manually before running "/usr/sbin/freebsd-update install" Cet avertissement peut sans risque être ignoré à ce niveau. Le noyau GENERIC mis à jour sera utilisé comme une étape intermédiaire dans le processus de mise à jour. Une fois l'ensemble des correctifs téléchargé sur le système local, ils seront appliqués. Ce processus peut prendre plus ou moins de temps en fonction de la vitesse et de la charge de la machine. Les fichiers de configuration seront fusionnés — cette partie du processus demande l'intervention de l'utilisateur car un fichier peut être automatiquement fusionné ou en cas de besoin un éditeur peut apparaître sur l'écran pour une fusion manuelle. Les résultats des fusions réussies seront affichés au fur et à mesure que se déroule l'opération. Un échec ou une fusion ignorée provoqueront l'arrêt du processus. Certains utilisateurs peuvent vouloir conserver une sauvegarde du répertoire /etc et fusionner plus tard à la main les fichiers importants comme master.passwd ou group. Le système n'a pas encore été réellement modifié, les fusions et l'application des correctifs ont lieu dans un autre répertoire. Quand tous les correctifs ont été appliqués avec succès, que tous les fichiers de configuration ont été fusionnés et que le processus s'est déroulé sans problème, les modifications devront être appliquées définitivement au système par l'utilisateur. Une fois les opérations précédentes achevées, la mise à jour peut être appliquée en utilisant la commande suivante: &prompt.root; freebsd-update install Le noyau et les modules seront corrigés les premiers. A ce moment la machine doit être obligatoirement redémarrée. Si le système utilisait un noyau personnalisé, utiliser la commande &man.nextboot.8; pour indiquer le noyau /boot/GENERIC (qui a été mis à jour) pour le prochain démarrage: &prompt.root; nextboot -k GENERIC Avant de redémarrer sur le noyau GENERIC, assurez-vous qu'il contient tous les pilotes nécessaires pour que votre système démarre correctement (et se connecte au réseau, si la mise à jour de la machine se fait à distance). En particulier, si le noyau précédemment utilisé contient des fonctions généralement fournies par des modules, faites en sorte de charger temporairement ces modules avec le noyau GENERIC à l'aide de /boot/loader.conf. Vous pouvez également avoir intérêt à désactiver les services non-indispensables, les montages réseaux ou disques, etc. avant que le processus de mise à jour ne soit achevé. La machine doit maintenant être redémarrée avec le noyau mis à jour: &prompt.root; shutdown -r now Une fois la machine de nouveau active, freebsd-update devra être lancée à nouveau. L'état du processus de mise à jour a été sauvegardé, et donc freebsd-update ne recommencera pas au début, mais supprimera les anciens fichiers objet et bibliothèques partagées. Afin de poursuivre les opérations, taper la commande suivante: &prompt.root; freebsd-update install En fonction d'un changement ou non de numérotation d'une ou plusieurs bibliothèques, il pourra y avoir deux phases d'installation au lieu de trois. Tous les logiciels tierce-partie doivent être maintenant recompilés et réinstallés. Cela est nécessaire comme certains logiciels peuvent dépendre de bibliothèques qui ont été supprimées lors du processus de mise à jour. La commande ports-mgmt/portupgrade peut être employée pour automatiser la chose. Les commandes suivantes peuvent être utilisées pour initier le processus: &prompt.root; portupgrade -f ruby &prompt.root; rm /var/db/pkg/pkgdb.db &prompt.root; portupgrade -f ruby18-bdb &prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db &prompt.root; portupgrade -af Une fois cela effectué, terminer le processus de mise à jour avec un dernier appel à freebsd-update. Taper la commande suivante pour régler les derniers détails: &prompt.root; freebsd-update install Si le noyau GENERIC a été utilisé temporairement, il est temps de compiler et d'installer un nouveau noyau personnalisé suivant la méthode habituelle. Redémarrer la machine avec la nouvelle version de &os;. Le processus de mise à jour est terminé. Comparaison de l'état du système L'utilitaire freebsd-update peut être utilisé pour comparer l'état du système &os; installé avec une copie de confiance. Cette fonctionnalité inspecte la version actuelle des utilitaires système, des bibliothèques et des fichiers de configuration. Pour lancer la comparaison, utiliser la commande suivante: &prompt.root; freebsd-update IDS >> outfile.ids Bien que le nom de la commande soit IDS, elle ne devrait en aucun cas être considérée comme un système de détection d'intrusion du type de security/snort. Etant donné que freebsd-update stocke des données sur le disque, le risque de modification des données est évident. Alors que cette possibilité peut être minimisée en utilisant le paramétrage kern.securelevel et en stockant les données freebsd-update sur un système de fichiers en lecture seule quand elles ne sont pas utilisées, une bien meilleure solution serait de comparer le système avec un disque sécurisé comme un DVD ou un disque USB conservé à l'extérieur. Le système sera analysé, et une liste de fichiers ainsi que la valeur de leur empreinte numérique &man.sha256.1;, celle de la version d'origine et celle de la version actuellement installée, seront affichés. C'est pour cela que cet affichage est copié dans le fichier outfile.ids. L'affichage défile trop rapidement une comparaison visuelle et remplira rapidement le tampon de la console. Ces lignes sont également très longues mais le format de sortie peut être facilement passé par une analyse syntaxique. Par exemple, pour obtenir une liste des fichiers qui diffèrent avec ceux de la version d'origine, utiliser la commande suivante: &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf La sortie de cette commande a été tronquée, bien plus de fichiers sont concernés. Certains de ces fichiers sont naturellement modifiés, le fichier /etc/passwd a été modifié en raison de l'ajout d'utilisateurs au système. Dans certains cas, d'autres fichiers apparaîtrons, comme les modules du noyau, qui diffèrent puisque freebsd-update peut les avoir mis à jour. Pour exclure des fichiers ou des répertoires spécifiques, ajoutez-les au paramètre IDSIgnorePaths dans le fichier /etc/freebsd-update.conf. Ce système peut prendre part à une méthode de mise à jour élaboré, en dehors de ce qui a été présenté précédemment. Tom Rhodes Ecrit par Colin Percival Basé sur les notes de Portsnap: un outil de mise à jour du catalogue des logiciels portés Mise à jour Portsnap mise à jour Le système de base de &os; dispose également d'un utilitaire pour la mise à jour du catalogue des logiciels portés: &man.portsnap.8;. Lors de son exécution, il se connectera sur un site distant, contrôlera la clé de sécurité et téléchargera une nouvelle copie du catalogue des logiciels portés. La clé est utilisée pour vérifier l'intégrité de tous les fichiers téléchargés, s'assurant qu'ils n'ont pas été modifiés au vol. Pour récupérer les tout derniers fichiers du catalogue des logiciels portés, utiliser la commande suivante: &prompt.root; portsnap fetch Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. Fetching snapshot tag from portsnap1.FreeBSD.org... done. Fetching snapshot metadata... done. Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. Fetching 3 metadata patches.. done. Applying metadata patches... done. Fetching 3 metadata files... done. Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. Applying patches... done. Fetching 133 new ports or files... done. Cet exemple nous montre que &man.portsnap.8; a trouvé et contrôlé plusieurs mises à jour pour les données actuelles du catalogue. Est également indiqué si l'utilitaire a été précédemment exécuté, si cela avait été une première exécution, le catalogue aurait été tout simplement téléchargé. Lorsque &man.portsnap.8; termine avec succès une opération de récupération (fetch), le catalogue des logiciels portés et ses mises à jour sont présents sur le système. A la première exécution de portsnap vous devez utiliser la commande extract pour installer les fichiers téléchargés: &prompt.root; portsnap extract /usr/ports/.cvsignore /usr/ports/CHANGES /usr/ports/COPYRIGHT /usr/ports/GIDs /usr/ports/KNOBS /usr/ports/LEGAL /usr/ports/MOVED /usr/ports/Makefile /usr/ports/Mk/bsd.apache.mk /usr/ports/Mk/bsd.autotools.mk /usr/ports/Mk/bsd.cmake.mk ... Pour mettre à jour un catalogue des logiciels portés déjà installé utilisez la commande portsnap update: &prompt.root; portsnap update Le processus est maintenant terminé et les applications peuvent être installées ou mises à jour à l'aide du catalogue à jour. Les opérations fetch et extract ou update peuvent être exécutées à la suite comme montré dans l'exemple suivant: &prompt.root; portsnap fetch update Cette commande téléchargera la dernière version du catalogue des logiciels portés et mettra à jour votre version locale située dans /usr/ports. Suivre une branche de développement -CURRENT -STABLE Il existe deux branches de développement de FreeBSD: &os.current; et &os.stable;. Cette section détaillera un peu chacune d'elles et décrira comment garder à jour votre système avec chaque arborescence respective. &os.current; sera tout d'abord traité, suivit de &os.stable;. Se synchroniser avec la version -CURRENT de &os; En lisant ces lignes, gardez à l'esprit que &os.current; représente “les tout derniers” développement de &os;. On attend des utilisateurs de &os.current; un degré élevé de compétences techniques, et devraient être capables de résoudre des problèmes système compliqués par eux-mêmes. Si vous êtes nouveau à &os;, pensez à deux fois avant de l'installer. Qu'est-ce que &os.current;? instantané &os.current; est la toute dernière version des sources de &os; en cours de développement. Cela inclut des évolutions en cours, des modifications expérimentales, et des mécanismes de transition qui feront ou ne feront pas partie de la prochaine version officielle du logiciel. Bien que de nombreux développeurs de &os; compilent les sources de &os.current; quotidiennement, il arrive que celles-ci ne soient pas compilables pendant une certaine période de temps. Ces problèmes sont résolus aussi rapidement que possible, mais que &os.current; soit à l'origine d'un désastre ou de l'apport d'une nouvelle fonctionnalité attendue peut parfois dépendre que du moment auquel vous avez chargé le code source. Qui a besoin de &os.current;? &os.current; est mis à disposition pour 3 types de personnes: Les membres de la communauté &os; qui travaillent activement sur une partie de l'arborescence des sources et pour qui rester constamment à jour est une nécessité absolue. Les membres de la communauté &os; qui participent activement aux tests et sont disposés à passer du temps à résoudre les problèmes pour garantir que &os.current; reste aussi saine que possible. Il y a également ceux qui désirent faire des suggestions dans certains domaines sur les modifications à faire et la direction générale que prend &os;, et soumettent des correctifs pour les implémenter. Ceux qui veulent simplement garder un oeil sur les évolutions, ou utiliser les dernières sources comme référence (e.g. pour les lire, et non pour les utiliser). Ces personnes font parfois des remarques ou contribuent au code. Qu'est-ce que <emphasis>n'est pas</emphasis> &os.current;? Un raccourci pour se procurer des pré-versions parce que vous avez entendu dire qu'il y a de nouvelles fonctionnalités géniales et que vous voulez être le premier du coin à les avoir. Etre le premier à avoir la nouvelle fonctionnalité signifie être le premier à avoir les nouveaux bogues également. Une moyen rapide d'avoir des corrections de bogues. N'importe quelle version de &os.current; apportera probablement de nouveaux bogues comme elle corrigera ceux déjà présents. Nous ne le “supportons officiellement” en aucun cas. Nous faisons du mieux que nous pouvons pour aider les personnes qui font vraiment partie des trois groupes “légitimes” à qui s'adresse &os.current;, mais nous n'avons tout simplement “pas le temps” de fournir un support technique. Ce n'est pas parce que nous sommes des personnes détestables qui n'aiment pas aider les autres (nous ne ferions pas &os; si tel était le cas), nous ne pouvons simplement pas répondre à des centaines de messages par jour et travailler sur FreeBSD! Entre améliorer &os; et répondre à de nombreuses questions sur le code expérimental, les développeurs optent pour le premier choix. Utiliser &os.current; -CURRENT utilisation Inscrivez-vous à la &a.current.name; et la &a.svn-src-head.name;. Ce n'est pas seulement une bonne idée, c'est indispensable. Si vous n'êtes pas sur la liste &a.current.name;, vous ne verrez pas les commentaires qui sont faits sur l'état courant du système et vous vous retrouverez probablement confrontés à de nombreux problèmes que d'autres ont déjà identifiés et résolus. Encore plus grave, vous manqueriez des bulletins importants potentiellement critiques pour la bonne santé de votre système. La liste &a.svn-src-head.name; vous permettra de voir les courriers de trace des soumissions de toutes les modifications dès qu'elles sont faites et des informations pertinentes sur les éventuels effets de bord. Pour vous inscrire à ces listes, ou à une autre, rendez vous à &a.mailman.lists.link; et cliquez sur la liste à laquelle vous désirez vous inscrire. Des instructions sur le reste de la procédure sont alors données. Si vous êtes intéressé par le suivi des modifications appliquées à l'ensemble de l'arborescence des sources, nous vous recommandons de vous inscrire à &a.svn-src-all.name;. Récupérez les sources sur un site miroir &os;. Vous pouvez le faire de deux manières: cvsup cron -CURRENT Synchronisation avec CVSup Utilisez le programme cvsup avec le fichier supfile nommé standard-supfile disponible dans le répertoire /usr/share/examples/cvsup. + class='directory'>/usr/share/examples/cvsup. C'est la méthode recommandée, puisqu'elle permet de récupérer la totalité des sources la première fois et par la suite uniquement ce qui a été modifié. De nombreuses personnes exécutent cvsup depuis cron et maintiennent ainsi automatiquement à jour leurs sources. Vous devez personnaliser l'exemple de supfile précédent, et configurer cvsup pour votre environnement. Le fichier d'exemple standard-supfile est destiné au suivi d'une branche de sécurité &os; spécifique et non pas à celui de &os.current;. Vous devrez éditer ce fichier et remplacer la ligne suivante: *default release=cvs tag=RELENG_X_Y Par celle-ci: *default release=cvs tag=. Pour une explication détaillée des étiquettes utilisables, veuillez vous référer à la section Etiquettes CVS de ce manuel. -CURRENT Synchroniser avec CTM Utilisez CTM. Si vous disposez d'une mauvaise connexion (connexions chères ou seulement un accès au courrier électronique) CTM est une bonne solution. Cependant, c'est une source de problèmes et peut donner lieu à des fichiers endommagés. C'est pourquoi cette méthode est rarement utilisée, ce qui augmente les chances que cela ne fonctionne pas pendant d'assez longue périodes. Nous recommandons d'utiliser CVSup à tous ceux disposant d'un modem 9600 bps ou d'une connexion plus rapide. Si vous récupérez les sources pour compiler un système opérationnel, et pas simplement pour les lire, alors récupérez tout &os.current;, et pas uniquement certaines portions. La raison de cela est que diverses parties des sources dépendent de modifications effectuées ailleurs, et si vous essayez de compiler juste une partie des source, il est quasiment certain que vous aurez des problèmes. -CURRENT compilation Avant de compiler &os.current;, lisez attentivement le Makefile dans /usr/src. Vous devriez au moins la première fois installer un nouveau noyau et recompiler le système, comme étape nécessaire à votre processus de mise à jour. La lecture de la &a.current; et du fichier /usr/src/UPDATING vous tiendra au courant des autres procédures de transition qui sont parfois nécessaires lorsque nous préparons la prochaine version. Participez! Si vous utilisez &os.current;, nous aimerions savoir ce que vous en pensez, tout particulièrement si vous avez des améliorations à nous suggérer ou des corrections de bogues à nous soumettre. Les suggestions accompagnées de code sont accueillies avec enthousiasme! Se synchroniser avec la version -STABLE de &os; Qu'est-ce que &os.stable;? -STABLE &os.stable; est notre branche de développement à partir de laquelle sont extraites les versions majeures. Les modifications sur cette branche se font à une allure différente, et en supposant généralement qu'elles ont été tout d'abord testées sur &os.current;. Cela reste cependant toujours une branche de développement, et cela signifie qu'à certains moments, les sources de &os.stable; pourront être ou pas utilisables pour une quelconque raison. C'est tout simplement une autre branche de mise au point, et non pas une ressource pour l'utilisateur final. Qui a besoin de &os.stable;? Si vous désirez suivre ou contribuer au processus de développement de FreeBSD, tout particulièrement si cela a rapport avec la prochaine version de FreeBSD, alors vous devriez penser à suivre &os.stable;. Bien qu'il soit vrai que les correctifs de sécurité vont également dans la branche &os.stable;, vous n'avez pas besoin de suivre &os.stable; pour cela. Chaque rapport de sécurité concernant FreeBSD explique comment corriger le problème sur les versions affectées Ceci n'est pas tout à fait vrai. Nous ne pouvons continuer à supporter les anciennes versions de FreeBSD éternellement, bien que nous les supportions pendant de nombreuses années. Pour une description complète de la politique de sécurité actuelle pour les anciennes versions de FreeBSD, veuillez consulter http://www.FreeBSD.org/security/. , et suivre intégralement une branche de développement juste pour des raisons de sécurité apportera également de nombreux changements non désirés. Bien que nous tentons de nous assurer que la branche &os.stable; soit compilable et constamment stable, cela ne peut être garanti. De plus, alors que le code est développé sous &os.current; avant de l'inclure dans &os.stable;, le nombre de personnes utilisant &os.stable; est plus nombreux que celui utilisant &os.current;, aussi il est inévitable que des bogues et des problèmes pourront parfois apparaître sous &os.stable; alors qu'ils n'existaient pas sous &os.current;. Pour ces raisons, nous ne recommandons pas de suivre aveuglément &os.stable;, et il est tout particulièrement important que vous ne mettiez pas à jour des serveurs de production sous &os.stable; sans avoir tout d'abord testé le code dans votre environnement de travail. Si vous ne disposez pas des ressources pour faire cela alors nous recommandons que vous utilisiez la version de FreeBSD la plus récente, et que vous utilisiez le mécanisme de mise à jour binaire pour passer d'une version à une autre. Utiliser &os.stable; -STABLE utilisation Inscrivez-vous à à la liste &a.stable.name;. Vous serez tenu au courant des dépendances de compilation qui peuvent apparaître dans la branche &os.stable; ou de tout autre problème demandant une attention particulière. Les développeurs publieront également des annonces sur cette liste lorsqu'ils envisagent une correction ou modification controversée, offrant la possibilité aux utilisateurs de répondre s'ils ont des questions à soulever en rapport avec la modification proposée. Inscrivez-vous à la liste SVN correspondant à la branche que vous suivez. Par exemple, si vous suivez la branche 7-STABLE, inscrivez-vous à la liste &a.svn-src-stable-7.name;. Cela vous permettra de lire les courriers de trace des soumissions de toutes les modifications dès qu'elles sont faites et des informations pertinentes sur les éventuels effets de bord. Pour vous inscrire à ces listes, ou à une autre, rendez vous à &a.mailman.lists.link; et cliquez sur la liste à laquelle vous désirez vous inscrire. Des instructions sur le reste de la procédure sont alors données. Si vous êtes intéressé par le suivi des modifications appliquées à l'ensemble de l'arborescence des sources, nous vous recommandons de vous inscrire à &a.svn-src-all.name;. Si vous installez un nouveau système et vous voulez qu'il utilise le dernier instantané publié tous les mois à partir de la branche &os.stable;, consultez la page sur les instantanés pour plus d'information. D'autre part, vous pouvez installer la version &os.stable; la plus récente à partir des sites miroirs et suivre les instructions ci-dessous pour mettre à jour votre système avec les sources &os;stable; les plus récentes. Si vous faites tourner une version précédente de &os; et que vous désirez mettre à jour via les sources vous pouvez aisément le faire à partir d'un site miroir &os;. Cela peut être fait de deux manières: cvsup cron -STABLE Synchronisation avec CVSup Utilisez le programme cvsup avec le fichier supfile nommé stable-supfile disponible dans le répertoire /usr/share/examples/cvsup. + class='directory'>/usr/share/examples/cvsup. C'est la méthode recommandée, puisqu'elle permet de récupérer la totalité des sources la première fois et par la suite uniquement ce qui a été modifié. De nombreuses personnes exécutent cvsup depuis cron et maintiennent ainsi automatiquement à jour leurs sources. Vous devez personnaliser l'exemple de supfile précédent, et configurer cvsup pour votre environnement. -STABLE Synchroniser avec CTM Utilisez CTM. Si vous ne disposez pas d'une connexion Internet rapide et peu coûteuse, c'est la méthode que vous devriez penser à utiliser. Avant tout, si vous avez besoin d'un accès rapide à la demande aux sources et que la bande passante n'est pas un problème, utilisez cvsup ou ftp. Sinon, utilisez CTM. -STABLE compilation Avant de compiler &os.stable;, lisez attentivement le Makefile dans /usr/src. Vous devriez au moins la première fois installer un nouveau noyau et recompiler le système, comme étape nécessaire à votre processus de mise à jour. La lecture de la &a.stable; et du fichier /usr/src/UPDATING vous tiendra au courant des autres procédures de transition qui sont parfois nécessaires lorsque nous préparons la prochaine version. Synchroniser vos sources Il existe différentes façons d'utiliser une connexion Internet (ou le courrier électronique) pour garder à jour les sources de n'importe quelle partie, ou de l'ensemble, du projet &os;, selon ce qui vous intéresse. Les principaux services que nous fournissons sont le CVS anonyme, CVSup, et CTM. Alors qu'il est possible de mettre à jour seulement certaines parties de l'arbre des sources, la seule procédure de mise à jour supportée est celle consistant à mettre à jour l'intégralité de l'arborescence et de recompiler les sources des applicatifs de base—“userland” (i.e., tous les programmes qui tournent dans l'espace utilisateur, comme ceux des répertoires /bin et /sbin) et du noyau. Ne mettre à jour qu'une partie des sources, uniquement le noyau, ou seul le “userland” mènera souvent à des problèmes. Ces problèmes pourront aller d'erreurs de compilation à des paniques du noyau ou même des corruptions de données. CVS anonyme CVS anonyme et CVSup utilisent une méthode de mise à jour pilotée par le client—pull. Dans le cas de CVSup, l'utilisateur (ou une procédure cron) appelle le programme cvsup, qui interagit avec un serveur cvsupd distant, pour mettre à jour vos fichiers. Les mises à jour que vous recevez sont les plus récentes, et vous ne les recevez seulement lorsque vous le désirez. Vous pouvez aisément restreindre vos mises à jour aux fichiers ou répertoires particuliers qui vous intéressent. Les mises à jour sont générées à la volée par le serveur, en fonction de ce que vous avez déjà et de ce que vous voulez. CVS anonyme est plus simpliste que CVSup, car ce n'est qu'une extension de CVS qui permet de récupérer des modifications directement d'une archive CVS distante. Pour cela, CVSup est bien plus efficace mais CVS anonyme est plus facile à utiliser. CTM CTM, à l'inverse, ne compare pas interactivement les sources dont vous disposez avec celles qui sont sur l'archive de référence. Au lieu de cela, une procédure qui identifie les modifications intervenues depuis qu'elle a été exécutée pour la dernière fois, est lancée plusieurs fois par jour sur la machine CTM de référence (maître), les modifications détectées sont compressées, affectées d'un numéro de séquence et encodées pour pouvoir être envoyées par courrier électronique (en ASCII imprimable uniquement). Une fois reçus, ces “deltas CTM” peuvent être passés à l'utilitaire &man.ctm.rmail.1; qui décodera, contrôlera et appliquera automatiquement les modifications à l'exemplaire des sources de l'utilisateur. Cette méthode est beaucoup plus efficace que CVSup et consomme beaucoup moins de ressources sur notre serveur, parce que c'est un modèle piloté par le serveur—push plutôt que par l'utilisateur—pull. Il y a, bien sûr, quelques contreparties. Si vous effacez par inadvertance des parties de votre archive, CVSup s'en apercevra et vous reconstruira les parties endommagées. CTM ne le fera pas, et si vous effacez des parties de votre l'arborescence des sources (et que vous n'avez pas fait de sauvegarde) alors vous devrez repartir de zéro (à partir du plus récent “delta de base” CVS) et tout reconstituer avec CTM ou CVS anonyme, effacer les parties endommagées et resynchroniser. Recompiler le système recompiler le système Une fois que vous avez synchronisé votre arborescence des sources avec une version donnée de &os; (&os.stable;, &os.current;, et ainsi de suite) vous pouvez alors utiliser cette arborescence des sources pour recompiler le système. Faites une sauvegarde On n'insistera jamais assez sur l'importance de faire une sauvegarde de votre système avant tout autre chose. Bien qu'il soit facile de “refaire le monde” (recompiler FreeBSD), si vous suivez ces instructions, vous ferez inévitablement des erreurs à un moment ou un autre, ou d'autres feront des erreurs au niveau de l'arborescence des sources qui empêcheraient votre système de redémarrer. Assurez-vous que vous avez bien fait une sauvegarde. Ayez une disquette de maintenance, ou un CD démarrable à portée de la main. Vous ne l'utiliserez probablement pas, mais prudence est mère de sûreté! S'abonner à la bonne liste de diffusion liste de diffusion Les branches &os.stable; et &os.current; sont, par nature, en développement. Les personnes qui participent à &os; sont des humains, et des erreurs se produisent occasionnellement. Ces erreurs sont parfois bénignes, provocant simplement l'affichage d'un nouveau message d'avertissement par votre système. Elles peuvent aussi être catastrophiques, et empêcher votre système de redémarrer ou détruire vos systèmes de fichiers (ou pire). Quand de tels problèmes se produisent, un avertissement “heads up” est posté sur la liste de diffusion appropriée, décrivant la nature du problème et quels systèmes sont concernés. Un message “all clear” est posté quand le problème est résolu. Si vous tentez de suivre &os.stable; ou &os.current; et que vous ne lisez pas la &a.stable; ou la &a.current;, vous allez au devant d'ennuis. N'utilisez pas la commande <command>make world</command> De nombreuses anciennes documentations préconisent d'utiliser la commande make world. Cette commande n'effectue pas un certain nombre d'étapes importantes et ne devrait être utilisée que si vous êtes sûr de ce que vous faites. Dans presque tout les cas make world n'est pas une bonne chose à faire, et la procédure décrite dans la suite de ce document devrait être utilisée à la place. La méthode générique de mise à jour du système Pour mettre à jour votre système, vous devriez consulter /usr/src/UPDATING pour toute opération préliminaire nécessaire en fonction de la version de vos sources et ensuite utiliser la procédure suivante: &prompt.root; cd /usr/src &prompt.root; make buildworld &prompt.root; make buildkernel &prompt.root; make installkernel &prompt.root; shutdown -r now Dans quelques rares cas, il est nécessaire de lancer un mergemaster -p avant l'étape buildworld. Ces cas sont décrits dans le fichier UPDATING. Généralement, vous pouvez omettre cette opération si vous ne mettez pas à jour d'une version majeure de &os; à une autre. Une fois l'opération installkernel terminée avec succès, vous devrez démarrer en mode mono-utilisateur (en utilisant par exemple la commande boot -s à l'invite du chargeur). Exécutez ensuite: &prompt.root; mount -a -t ufs &prompt.root; mergemaster -p &prompt.root; cd /usr/src &prompt.root; make installworld &prompt.root; mergemaster &prompt.root; reboot Lisez les explications supplémentaires La séquence décrite ci-dessus n'est qu'un court résumé pour vous aider à démarrer. Vous devriez cependant lire les sections suivantes afin de comprendre clairement chaque étape, tout particulièrement si vous désirez utiliser une configuration du noyau personnalisée. Lire <filename>/usr/src/UPDATING</filename> Avant tout autre chose, lisez /usr/src/UPDATING (ou le fichier équivalent en fonction de l'endroit où se trouve vos sources). Ce fichier devrait contenir les informations importantes au sujet des problèmes que vous pourriez rencontrer, ou indique l'ordre dans lequel vous devriez exécuter certaines commandes. Si le fichier UPDATING contredit quelque chose d'écrit ici, UPDATING prime sur tout le reste. La lecture du fichier UPDATING n'est pas un substitut à l'abonnement à la liste de diffusion correcte, comme décrit précédemment. Ces deux prérequis sont complémentaires, et non pas exclusifs. Contrôler <filename>/etc/make.conf</filename> make.conf Contrôlez les fichiers /usr/share/examples/etc/make.conf et /etc/make.conf. Le premier contient des paramètres par défaut – la plupart étant placés en commentaires. Pour les utiliser quand vous recompilez votre système à partir des sources, rajoutés-les au fichier /etc/make.conf. Gardez à l'esprit que tout ce que vous ajoutez au fichier /etc/make.conf est utilisé chaque fois que vous invoquez la commande make, il est donc bon de s'assurer que les valeurs par défaut sont appropriées à votre système. Un utilisateur typique voudra probablement copier les lignes CFLAGS et NO_PROFILE se trouvant dans /usr/share/examples/etc/make.conf vers /etc/make.conf et les décommenter. Examinez les autres définitions (COPTFLAGS, NOPORTDOCS et ainsi de suite) et décidez si elles vous conviennent. Mettre à jour les fichiers dans <filename>/etc</filename> Le répertoire /etc contient la plupart des informations de configuration de votre système, ainsi que les procédures de démarrage. Certaines de ces procédures changent d'une version à l'autre de FreeBSD. Certains fichiers de configuration sont également utilisés en permanence par le système. En particulier /etc/group. Il est arrivé que la phase d'installation make installworld ait besoin que certains utilisateurs et groupes existent. Il y a de fortes chances qu'ils n'aient pas été définis avant la mise à jour. C'est une source de problèmes. Dans certains cas make buildworld contrôlera si ces utilisateurs ou groupes existent. Un exemple de cela fut l'addition de l'utilisateur smmsp. Le processus d'installation échouait quand mtree tentait de créer /var/spool/clientmqueue. La solution est d'exécuter &man.mergemaster.8; dans le mode pré-“buildworld” en ajoutant l'option . Cela effectuera la comparaison uniquement des fichiers essentiels pour le succès de la procédure buildworld ou installworld. Si votre vieille version de mergemaster ne supporte pas l'option , utilisez la nouvelle version présente dans l'arborescence des sources quand vous l'exécutez pour la première fois: &prompt.root; cd /usr/src/usr.sbin/mergemaster &prompt.root; ./mergemaster.sh -p Si vous êtes particulièrement paranoïaque, vous pouvez contrôler votre système afin de voir quels fichiers appartiennent au groupe que vous renommez ou effacez: &prompt.root; find / -group GID -print affichera les fichiers appartenant au groupe GID (qui peut être soit un nom de groupe ou un identifiant numérique de groupe). Passer en mode mono-utilisateur mode mono-utilisateur Il vaut mieux recompiler le système en mode mono-utilisateur. En dehors du fait que cela sera légèrement plus rapide, la réinstallation va modifier un grand nombre de fichiers systèmes importants, tous les binaires de base du système, les bibliothèques, les fichiers d'include et ainsi de suite. Les modifier sur un système en fonctionnement (en particulier s'il y a des utilisateurs connectés à ce moment là), c'est aller au devant de problèmes. mode multi-utilisateurs Une autre méthode consiste à compiler le système en mode multi-utilisateurs, et passer dans le mode mono-utilisateur pour l'installation. Si vous désirez utiliser cette méthode, conservez les étapes suivantes pour le moment où la compilation sera terminée. Vous pouvez reporter le passage en mode mono-utilisateur jusqu'à l'exécution de installkernel ou installworld. En tant que super-utilisateur, vous pouvez exécuter la commande: &prompt.root; shutdown now sur un système en fonctionnement, pour passer en mode mono-utilisateur. Ou bien, redémarrer le système, et à l'invite de démarrage, sélectionnez l'option single user. Le système démarrera alors en mode mono-utilisateur. A l'invite de l'interpréteur de commandes, exécutez alors: &prompt.root; fsck -p &prompt.root; mount -u / &prompt.root; mount -a -t ufs &prompt.root; swapon -a Cela effectue une vérification des systèmes de fichiers, remonte / en mode lecture/écriture, et monte tous les autres systèmes de fichiers UFS listés dans le fichier /etc/fstab, puis active la pagination. Si votre horloge CMOS est réglée sur l'heure locale et non pas sur le fuseau GMT (cela est vrai si la sortie de la commande date ne donne pas l'heure et le fuseau correct), vous aurez également peut-être besoin d'exécuter la commande suivante: &prompt.root; adjkerntz -i Cela permettra de s'assurer que vos paramètres de fuseaux horaires sont correctement configurés — sans cela, vous risquez de faire face, plus tard, à des problèmes. Effacer <filename>/usr/obj</filename> Au fur et à mesure que les différentes parties du système sont recompilées, elles sont placées dans des répertoires qui (par défaut) sont sous /usr/obj. Les répertoires sont agencés comme sous /usr/src. Vous pouvez accélérer le processus make buildworld, et également vous éviter d'éventuels problèmes de dépendances en effaçant ce répertoire. Certains fichiers dans /usr/obj peuvent avoir l'indicateur immuable positionné (consultez la page de manuel &man.chflags.1; pour plus d'informations) qui doit être retiré en premier. &prompt.root; cd /usr/obj &prompt.root; chflags -R noschg * &prompt.root; rm -rf * Recompiler le système de base Enregistrer la sortie C'est une bonne idée d'enregistrer la sortie de &man.make.1; dans un fichier. Si quelque chose se passe mal, vous aurez une trace des messages d'erreur. Même si cela ne vous aide pas à diagnostiquer ce qui n'a pas fonctionné, cela peut aider les autres si vous postez votre problème sur une des listes de diffusion de &os;. La méthode la plus aisée pour faire cela est d'utiliser la commande &man.script.1;, avec en paramètre le nom du fichier où enregistrer les résultats. Vous devez faire cela immédiatement juste avant de recompiler le système, et taper exit une fois que c'est terminé. &prompt.root; script /var/tmp/mw.out Script started, output file is /var/tmp/mw.out &prompt.root; make TARGET … compile, compile, compile … &prompt.root; exit Script done, … Si vous le faites, n'enregistrez pas le résultat dans /tmp. Ce répertoire peut être vidé au prochain redémarrage du système. Un meilleur endroit de sauvegarde est /var/tmp (comme dans l'exemple précédent) ou dans le répertoire utilisateur de root. Compiler le nouveau système Vous devez être dans le répertoire /usr/src: &prompt.root; cd /usr/src (à moins, bien sûr, que votre code source ne soit ailleurs, auquel cas vous devrez aller dans le répertoire correspondant). make Pour recompiler le système, on utilise la commande &man.make.1;. Cette commande lit ses instructions dans le fichier Makefile, qui décrit comment devraient être reconstruits les programmes qui constituent &os;, dans quel ordre, et ainsi de suite. Le format général de la ligne de commande que vous taperez sera la suivante: &prompt.root; make -x -DVARIABLE cible Dans cet exemple, est une option que vous passez à &man.make.1;. Reportez-vous à la page de manuel pour un exemple d'options que vous pouvez passer. transmet un variable au fichier Makefile. Le comportement du Makefile est défini par ces variables. Ce sont les mêmes variables que l'on trouve dans /etc/make.conf, et c'est un autre moyen de les positionner. &prompt.root; make -DNO_PROFILE cible est une autre manière de dire qu'il ne faut pas compiler les bibliothèques profilées et correspond à la ligne: NO_PROFILE= true # Avoid compiling profiled libraries dans /etc/make.conf. cible indique à &man.make.1; ce que vous voulez faire. Chaque Makefile définit un certain nombre de “cibles”, et votre choix de cible détermine ce qui se passe. Certaines cibles listées dans le fichier Makefile, ne doivent pas être employées. Ce sont des étapes intermédiaires utilisées par le processus de recompilation pour décomposer les étapes importantes de la recompilation du système en sous-étapes. La plupart du temps, vous n'aurez pas besoin de passer de paramètres à &man.make.1;, et votre commande ressemblera à ceci: &prompt.root; make cible cible sera une des nombreuses options de compilation. La première cible devrait toujours être buildworld. Comme leurs noms l'indiquent, buildworld reconstruit la nouvelle arborescence dans /usr/obj, et installworld, une autre cible, l'installe sur la machine. Disposer d'options séparées est très utile pour deux raisons. Tout d'abord cela vous permet de recompiler en toute sûreté en sachant qu'aucun composant du système actuel ne sera affecté. La compilation est “autonome”. En raison de cela vous pouvez exécuter buildworld sur une machine en mode multi-utilisateurs sans redouter d'effets fâcheux. Il est néanmoins recommandé de toujours exécuter l'étape installworld en mode mono-utilisateur. En second lieu, cela vous permet d'utiliser des systèmes montés par NFS pour mettre à jour plusieurs machines de votre réseau. Si vous avez trois machines A, B et C que vous voulez mettre à jour, exécutez make buildworld et make installworld sur A. B et C doivent ensuite monter par NFS /usr/src et /usr/obj depuis A, et vous pouvez alors exécuter make installworld pour installer le système recompilé sur B et C. Bien que la cible world existe toujours, vous êtes fortement encouragé à ne pas l'utiliser. Exécutez: &prompt.root; make buildworld Il est possible de passer l'option à &man.make.1; ce qui lui permettra d'exécuter plusieurs processus simultanément. C'est particulièrement utile sur une machine avec plusieurs processeurs. Cependant, comme la compilation est plus gourmande en E/S plutôt qu'en CPU, c'est également utile sur des machines mono-processeur. Typiquement sur une machine mono-processeur, vous exécuteriez: &prompt.root; make -j4 buildworld &man.make.1; pourra exécuter jusqu'à 4 processus simultanément. Des constatations empiriques postées sur les listes de diffusion montrent que c'est en général ce qui apporte le plus de gain en performances. Si vous avez une machine multi-processeurs et que vous avez configuré un noyau SMP, essayez des valeurs entre 6 et 19 et voyez quel bénéfice vous en tirez. Durée compilation du système durée De nombreux facteurs influencent la durée de compilation, mais les machines récentes devraient mettrent seulement de une à deux heures pour compiler l'arborescence &os.stable;, sans modification ni raccourcis durant le processus. Une arborescence &os.current; nécessitera un peu plus de temps. Compiler et installer un nouveau noyau noyau compilation Pour tirer pleinement parti de votre nouveau système, vous devrez recompiler le noyau. C'est pratiquement indispensable, parce que certaines structures mémoires peuvent avoir changées, et des programmes comme &man.ps.1; et &man.top.1; ne fonctionneront pas tant que le système et le noyau n'utilisent pas les mêmes versions de code source. La manière la plus simple et la plus sûre est de compiler et installer un noyau basé sur le noyau GENERIC. Alors que le noyau GENERIC peut ne pas comporter les pilotes de périphériques nécessaires pour votre système, il devrait contenir tout ce qui est nécessaire pour faire démarrer votre système en mode mono-utilisateur. C'est une bonne façon de tester le fonctionnement de votre nouveau système. Après avoir démarré à partir du noyau GENERIC et vérifié que votre système fonctionne vous pouvez alors compiler un nouveau noyau basé sur votre fichier de configuration normal du noyau. Sur &os;, il est important de recompiler le système avant de compiler un nouveau noyau. Si vous désirez compiler un noyau personnalisé, et que vous avez déjà un fichier de configuration, utilisez juste KERNCONF=MONNOYAU comme suit: &prompt.root; cd /usr/src &prompt.root; make buildkernel KERNCONF=MONNOYAU &prompt.root; make installkernel KERNCONF=MONNOYAU Notez que si vous avez augmenté la variable kern.securelevel à une valeur supérieure à 1 et que vous avez positionné l'indicateur noschg ou similaire sur votre noyau, il sera intéressant de passer en mode mono-utilisateur pour utiliser installkernel. Sinon vous devriez être en mesure d'exécuter ces commandes à partir du mode multi-utilisateur sans problèmes. Voir la page de manuel de &man.init.8; pour plus de détails à propos de kern.securelevel et la page &man.chflags.1; pour des informations sur les différents indicateurs de fichiers. Redémarrer en mode mono-utilisateur mode mono-utilisateur Vous devriez redémarrer en mode mono-utilisateur pour tester le fonctionnement du nouveau noyau. Pour cela suivez les instructions de . Installer les nouveaux binaires système Si vous avez compilé une version de &os; assez récente pour avoir utilisé make buildworld alors vous devriez utiliser maintenant installworld pour installer les nouveaux binaires système. Lancez: &prompt.root; cd /usr/src &prompt.root; make installworld Si vous spécifiez des variables sur la ligne de commande de make buildworld, vous devez utiliser les mêmes variables avec la commande make installworld. Cela ne reste pas forcément vrai pour d'autres options; par exemple, ne doit jamais être utilisée avec installworld. Par exemple, si vous exécutez: &prompt.root; make -DNO_PROFILE buildworld vous devrez ensuite installer les résultats avec: &prompt.root; make -DNO_PROFILE installworld sinon il essayera d'installer les bibliothèques profilées qui n'ont pas été recompilées à l'étape make buildworld. Mettre à jour les fichiers non modifiés par <command>make installworld</command> La recompilation du système ne mettra pas à jour certains répertoires (en particulier, /etc, /var et /usr) avec les fichiers nouveaux ou modifiés. La manière la plus simple de mettre à jour ces fichiers est d'utiliser &man.mergemaster.8;, bien qu'il soit possible de le faire manuellement si vous le désirez. Indépendamment de la manière que vous choisissez, assurez-vous de faire une sauvegarde du répertoire /etc au cas où quelque chose se passerait mal. Tom Rhodes Contribution de <command>mergemaster</command> mergemaster L'utilitaire &man.mergemaster.8; est une procédure Bourne qui vous aidera à déterminer les différences entre vos fichiers de configuration dans le répertoire /etc, et les fichiers de configuration dans l'arborescence des sources /usr/src/etc. C'est la solution recommandée pour maintenir à jour les fichiers de configuration du système avec ceux situés dans l'arborescence des sources. Pour commencer, tapez simplement mergemaster à l'invite, et observez-le travailler. mergemaster commencera à constituer une arborescence temporaire, à partir de /, et la remplira avec divers fichiers de configuration. Ces fichiers sont alors comparés avec ceux actuellement installés sur votre système. A ce point, les fichiers qui diffèrent seront affichés dans le format &man.diff.1;, avec le signe représentant les lignes modifiées ou ajoutées, et le représentant les lignes qui seront soit complètement supprimées, soit remplacées avec une nouvelle ligne. Voir la page de manuel &man.diff.1; pour plus d'informations au sujet de la syntaxe &man.diff.1; et comment sont affichées les différences. &man.mergemaster.8; vous affichera ensuite chaque fichier présentant des différences, et vous aurez à ce moment-là le choix de soit supprimer le nouveau fichier (le fichier temporaire), soit d'installer le fichier temporaire non modifié, soit de fusionner le fichier temporaire et le fichier actuellement installé, soit enfin de revoir les résultats de l'opération &man.diff.1;. Choisir de supprimer le fichier temporaire indiquera à &man.mergemaster.8; que nous désirons conserver notre fichier actuel intacte, et effacera la nouvelle version. Cette option n'est pas recommandée, à moins que vous ne voyez aucune raison de modifier le fichier actuel. Vous pouvez obtenir de l'aide à n'importe quel moment en tapant ? à l'invite de &man.mergemaster.8;. Si l'utilisateur choisit de passer un fichier, il sera présenté à nouveau une fois que tous les autres fichiers auront été traités. Choisir d'installer un fichier temporaire intact remplacera le fichier actuel avec le nouveau. Pour la plupart des fichiers non modifiées, c'est la meilleure option. Choisir de fusionner le fichier, vous affichera un éditeur de texte, et le contenu des deux fichiers. Vous pouvez maintenant les fusionner en les visionnant côte à côte sur l'écran, et en sélectionnant des parties des deux fichiers pour créer un fichier final. Quand les fichiers sont comparés côte à côte, la touche l sélectionnera le contenu de gauche et la touche r sélectionnera celui de droite. Le résultat final sera un fichier constitué des deux parties, qui peut alors être installé. Cette option est habituellement utilisée pour les fichiers où les des paramètres ont été modifiés par l'utilisateur. Choisir de revoir les résultats de l'opération &man.diff.1; vous affichera les différences entre fichiers tout comme la fait &man.mergemaster.8; avant de vous demander un choix. Après que &man.mergemaster.8; en ait terminé avec les fichiers système, il vous proposera de nouvelles opérations. &man.mergemaster.8; vous demandera si vous désirez reconstruire le fichier des mots de passe et terminera en vous proposant de supprimer les fichiers temporaires restants. Mise à jour manuelle Si vous désirez faire la mise à jour manuellement, vous ne pouvez cependant pas vous contenter de copier les fichiers de /usr/src/etc dans /etc pour que cela fonctionne. Certains de ces fichiers doivent d'abord être “installés”. En effet le répertoire /usr/src/etc “n'est pas” une copie de ce que devrait contenir votre répertoire /etc. De plus, il a des fichiers qui doivent être dans /etc et qui ne sont pas dans /usr/src/etc. Si vous utilisez &man.mergemaster.8; (comme recommandé), vous pouvez passer cette section et aller directement à la section suivante. La façon la plus simple de procéder est d'installer les fichiers dans un nouveau répertoire, puis de passer en revue les différences. Sauvegardez votre répertoire <filename>/etc</filename> actuel Bien qu'en principe rien ne sera modifié automatiquement dans ce répertoire, prudence est mère de sûreté. Copiez donc votre répertoire /etc dans un endroit sûr. Quelque chose du genre: &prompt.root; cp -Rp /etc /etc.old conviendra; l'option fait une copie récursive, préserve la date, les autorisations des fichiers et ainsi de suite. Vous devez créer un ensemble de répertoires provisoires pour y installer les fichiers du répertoire /etc et autres. /var/tmp/root est un bon choix, il y a un certain nombre de sous-répertoires à créer également: &prompt.root; mkdir /var/tmp/root &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution Cela va créer l'arborescence nécessaire et y installera les fichiers. Un grand nombre des sous-répertoires créés dans /var/tmp/root sont vides et devront être supprimés. La façon la plus simple de le faire est: &prompt.root; cd /var/tmp/root &prompt.root; find -d . -type d | xargs rmdir 2>/dev/null Ceci supprimera tous les répertoires vides (la sortie d'erreur standard est redirigée vers /dev/null pour empêcher les avertissements à propos des répertoires non vides). /var/tmp/root contient maintenant tous les fichiers à installer à l'endroit requis sous /. Vous devez maintenant examiner chacun de ces fichiers pour déterminer en quoi ils diffèrent de vos propres fichiers. Notez que certains des fichiers qui seront installés dans /var/tmp/root commencent par un “.”. Au moment où sont écrites ces lignes, les seuls fichiers concernés sont les fichiers d'initialisation des interpréteurs de commandes dans /var/tmp/root/ et /var/tmp/root/root/, mais il pourrait y en avoir d'autres (cela dépend de quand vous lirez ces lignes). Assurez-vous d'utiliser la commande ls -a pour ne pas les oublier. La manière la plus simple de procéder est d'utiliser la commande &man.diff.1; pour comparer les deux fichiers: &prompt.root; diff /etc/shells /var/tmp/root/etc/shells Cela vous indiquera les différences entre votre fichier /etc/shells et le nouveau fichier /var/tmp/root//etc/shells. A partir de là, décidez si vous aller reporter les modifications que vous y avez apportée ou si vous allez simplement recopier le nouveau fichier. Donnez au nouveau répertoire racine (<filename>/var/tmp/root</filename>) un nom qui inclue une date, pour pouvoir facilement comparer les différentes versions Si vous recompilez fréquemment votre système, cela signifie que vous devez également souvent mettre à jour le répertoire /etc, ce qui peut rapidement devenir une corvée. Vous pouvez accélérer le processus en conservant une copie du dernier ensemble de fichiers modifiés que vous avez reportés dans /etc. La procédure suivante présente une façon de faire. Recompilez le système comme à l'accoutumé. Au moment de mettre à jour /etc et les autre répertoires, donnez au répertoire cible un nom basé sur la date du jour. Si vous faisiez cela le 14 février 1998, vous pourriez procéder comme suit: &prompt.root; mkdir /var/tmp/root-19980214 &prompt.root; cd /usr/src/etc &prompt.root; make DESTDIR=/var/tmp/root-19980214 \ distrib-dirs distribution Reporter les modifications depuis ce répertoire comme décrit plus haut. Ne supprimez pas le répertoire /var/tmp/root-19980214 quand vous aurez terminé. Quand vous récupérez la dernière version des sources et la recompilerez, suivez l'étape 1. Vous aurez alors un nouveau répertoire, qui pourrait s'appeler /var/tmp/root-19980221 (si vous faites une mise à jour chaque semaine). Vous pouvez maintenant voir les modifications intervenues d'une semaine à l'autre en utilisant &man.diff.1; pour afficher les différences entre tous les fichiers deux répertoires: &prompt.root; cd /var/tmp &prompt.root; diff -r root-19980214 root-19980221 Généralement, il y aura beaucoup moins de différences qu'entre /var/tmp/root-19980221/etc et /etc. Comme il y a beaucoup moins de différences, il est beaucoup plus facile de les reporter dans le répertoire /etc. Vous pouvez maintenant supprimer le plus ancien des deux répertoires /var/tmp/root-*: &prompt.root; rm -rf /var/tmp/root-19980214 Répétez l'opération chaque fois que vous devez reporter des modifications dans /etc. Vous pouvez utiliser &man.date.1; pour automatiser la génération des noms de répertoires: &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` Redémarrer Vous en avez terminé. Après avoir vérifié que tout semble être en place, vous pouvez alors redémarrez votre système. Un simple &man.shutdown.8; devrait suffire: &prompt.root; shutdown -r now C'est fini Vous devriez maintenant avoir mis à jour avec succès votre système &os;. Félicitations. Si les choses se sont légèrement mal passées, il est facile de recompiler un élément particulier du système. Par exemple, si vous avez accidentellement effacé /etc/magic lors de la mise à jour de /etc, la commande &man.file.1; ne fonctionnerait plus. Dans ce cas, la solution serait d'exécuter: &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install Questions Dois-je refaire le monde à chaque évolution? Il n'y a pas de réponse toute faite à cette question, tout dépend de la nature des évolutions. Par exemple, si vous venez juste d'exécuter CVSup, et que les fichiers suivants on été mis à jour: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk cela ne vaut probablement pas la peine de recompiler tout le système. Vous pouvez tout simplement aller dans les sous-répertoires appropriés, exécuter make all install, et c'est à peu près tout. Mais s'il y a des évolutions importantes, par exemple sur src/lib/libc/stdlib alors vous devrez soit refaire le monde, ou recompiler au moins toutes les parties du système qui sont liées statiquement (de même que tout ce vous pourriez avoir ajouté qui y serait lié statiquement). C'est à vous de voir. Vous préférerez peut-être recompiler votre système tous les quinze jours, et laisser les modifications s'empiler pendant quinze jours. Ou bien vous préférerez ne recompiler que ce qui a changé et vous faire confiance pour tout ce qui en dépend. Et, bien sûr, cela dépend de la fréquence avec laquelle vous voulez faire vos mises à jour, et de si vous suivez la branche &os.stable; ou &os.current;. Ma compilation échoue avec de nombreuses erreurs “signal 11” (ou tout autre numéro de signal). Que s'est-il passé? signal 11 Cela indique généralement un problème matériel. (Re)compiler le système est un bon moyen de mettre votre matériel sous pression, et mettra souvent en évidence des défaillances de la mémoire vive. Elles se manifestent normalement d'elles-mêmes, la compilation échouant lors de la réception de mystérieux signaux. Un bon indicateur de cet état de fait, est que vous pouvez relancer la compilation et qu'elle échouera en un endroit différent. Dans ce cas, vous ne pouvez guère faire autre chose que d'intervertir les différents composants de votre matériel pour déterminer lequel est en cause. Puis-je effacer /usr/obj après avoir fini? Une réponse courte est oui. /usr/obj contient tous les fichiers objets générés à la compilation. Normalement, une des premières étapes de make buildworld est de supprimer ce répertoire et de repartir à zéro. Dans ce cas, conserver le répertoire /usr/obj après avoir terminé ne sert pas à grand chose, alors que vous économiseriez pas mal d'espace disque (actuellement environ 340 MO). Cependant, si vous savez ce que vous faites, vous pouvez faire en sorte que make buildworld saute cette étape. Cela rendra les compilations ultérieures plus rapides, puisque la plupart des sources n'auront pas besoin d'être recompilées. Le revers de la médaille est que des problèmes subtils de dépendance peuvent se manifester, provoquant l'échec de votre compilation de manière étrange. Cela génère fréquemment du bruit sur les listes de diffusion de &os;, quand quelqu'un se plaint que sa mise à jour a échoué, sans réaliser que c'est parce qu'il a tenté de brûler les étapes. Une recompilation interrompue peut-elle être reprise? Tout dépend de jusqu'où vous êtes aller avant de rencontrer un problème. En général (et ceci n'est pas une règle absolue) make buildworld crée de nouveaux exemplaires des outils indispensables (comme &man.gcc.1; et &man.make.1;) et des bibliothèques système. Ces outils et bibliothèques sont ensuite installés. Puis ils sont utilisés pour se reconstruire eux-mêmes, et installés de nouveau. L'intégralité du système (y compris maintenant les programmes utilisateurs classiques, comme &man.ls.1; ou &man.grep.1;) est alors recompilé avec les nouveaux fichiers système. Si vous êtes à cette dernière étape, et que vous le savez (parce que vous avez consulté les résultats que vous avez enregistrés) alors vous pouvez (sans trop de risque) faire: … fix the problem … &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all Cela ne détruira pas les résultats du travail qu'à déjà effectué make buildworld. Si vous voyez le message: -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- dans les comptes-rendus de make buildworld alors cette façon de procéder est probablement bonne. Si vous ne voyez pas ce message, ou que vous doutez de vous, alors prudence est mère de sûreté, et il vaut mieux tout reprendre depuis le début. Comment puis-je accélérer la compilation du système? Passez en mode mono-utilisateur. Mettez les répertoires /usr/src et /usr/obj sur des systèmes de fichiers et des disques différents. Si possible, installez ces disques sur des contrôleurs différents. Encore mieux, mettez ces systèmes de fichiers sur plusieurs disques utilisant le système &man.ccd.4; (pilote de disques concaténés). Ne compilez pas les bibliothèques profilées (mettez “NO_PROFILE=true” dans le fichier /etc/make.conf). Vous n'en avez certainement pas besoin. Egalement dans /etc/make.conf, positionnez CFLAGS à quelque chose comme . L'optimisation est bien plus lente, et la différence d'optimisation entre et est en général négligeable. demande au compilateur d'utiliser des tuyaux à la place de fichiers temporaires, ce qui économise des accès disque (mais utilise plus de mémoire). Passez l'option à &man.make.1; pour permettre l'exécution de plusieurs processus en parallèle. Cela améliore généralement les choses, que vous ayez une machine mono- ou multi-processeurs. Le système de fichiers qui contient /usr/src peut être monté (ou remonté) avec l'option . Cela empêche l'enregistrement des dates d'accès aux fichiers par le système de fichiers. Vous n'avez de toute façon probablement pas besoin de cette information. &prompt.root; mount -u -o noatime /usr/src Cet exemple suppose que /usr/src constitue à lui seul un système de fichiers. Si ce n'est pas le cas (s'il fait partie de /usr par exemple) vous devez alors indiquer le point de montage de ce système de fichiers, et non /usr/src. Le système de fichiers où se trouve /usr/obj peut être monté (ou remonté) avec l'option . Les écritures sur le disque se feront alors de façon asynchrone. En d'autres termes, le programme reprend immédiatement la main, et l'écriture des données sur le disque se fait quelques secondes plus tard. Cela permet le groupement des écritures sur le disque, et le gain en performance peut être spectaculaire. Gardez à l'esprit que cette option rend votre système de fichiers plus fragile. Avec cette option, les risques ne sont accrus qu'en cas de coupure d'alimentation, le système de fichiers soit irrécupérable quand la machine redémarrera. S'il n'y a que /usr/obj sur ce système de fichiers, ce n'est alors pas un problème. Si vous avez d'autres données importantes sur ce système de fichiers, assurez-vous que vos sauvegardes soient à jour avant d'activer cette option. &prompt.root; mount -u -o async /usr/obj Comme auparavant, si /usr/obj ne constitue pas un système de fichiers en soit, remplacez-le dans l'exemple par le nom du point de montage approprié. Que faire si quelque chose se passe mal? Soyez absolument sûr que votre environnement ne contient pas des restes de compilation précédentes. Cela est plutôt simple: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir En effet, make cleandir doit vraiment être exécutée deux fois. Ensuite relancez l'ensemble du processus, en commençant avec make buildworld. Si vous avez toujours des problèmes, envoyez l'erreur et le résultat de la commande uname -a à la &a.questions;. Tenez-vous prêt à répondre à d'autres concernant votre configuration! Mike Meyer Contribution de Suivre les mises à jour pour plusieurs machines NFS installation de multiples machines Si vous avez plusieurs machines dont vous voulez maintenir à jour l'arborescence des sources, alors faire télécharger et recompiler à chacune d'entre elles les sources semble un gaspillage de ressources: espace disque, bande passante réseau, et cycles CPU. C'est en effet bien le cas, et la solution est d'avoir une machine qui fait la majeure partie du travail, pendant que le reste des machines montent ce travail par NFS. Cette section décrit une façon de le faire. Préliminaires Premièrement, identifiez un ensemble de machines qui va utiliser le même ensemble de binaires, que nous appellerons un ensemble de compilation. Chaque machine peut avoir un noyau personnalisé, mais elles exécuteront les mêmes binaires utilisateur du système de base. Dans cet ensemble de machine, choisissez une machine qui sera la machine de compilation. Cela sera la machine sur laquelle le monde et le noyau seront compilés. Idéalement, cela devrait être une machine rapide avec un CPU suffisamment disponible pour exécuter la commande make buildworld et make buildkernel. Vous voudrez également utiliser une machine de test, qui testera les mises à jour logicielles avant d'être utilisées en production. Cela doit être une machine que vous pouvez vous permettre d'avoir hors service pour une longue période. Cela peut être la machine de compilation, mais cela n'est pas obligatoire. Toutes les machines de cet ensemble de compilation doivent monter /usr/obj et /usr/src à partir de la même machine, et du même point de montage. Idéalement, ces derniers sont sur deux disques différents sur la machine de compilation, mais peuvent également être montés par NFS sur cette machine. Si vous avez plusieurs ensembles de compilation, /usr/src devrait être sur une machine de compilation, et monté par NFS sur les autres. Finalement assurez-vous que /etc/make.conf et /etc/src.conf sur toutes les machines de l'ensemble de compilation sont en accord avec la machine de compilation. Cela signifie que la machine de compilation doit compiler toutes les parties du système de base que toute machine de l'ensemble de compilation va installer. De plus, chaque machine de compilation devra avoir son nom de noyau défini avec KERNCONF dans /etc/make.conf, et la machine de compilation devrait tous les lister dans KERNCONF, en listant son noyau en premier. La machine de compilation doit avoir les fichiers de configuration des noyaux de chaque machine dans /usr/src/sys/arch/conf si elle va compiler leur noyau. Le système de base Maintenant que tout est configuré, vous êtes fin prêt pour tout compiler. Compilez le noyau et le monde sur la machine de compilation comme décrit dans la , mais n'installez rien. La compilation une fois terminée, allez sur la machine de test, et installez le noyau que vous venez juste de compiler. Si la machine monte /usr/src et /usr/obj via NFS, quand vous redémarrez en mode mono-utilisateur vous devrez activer le réseau et monter ces répertoires. La méthode la plus simple est de démarrer en mode multi-utilisateur, puis exécutez shutdown now pour passer en mode mono-utilisateur. Une fois à ce niveau, vous pouvez installer le nouveau noyau et monde puis exécuter mergemaster comme vous le feriez habituellement. Une fois cela effectué, redémarrez pour retourner en mode multi-utilisateur pour cette machine. Après que vous soyez certain que tout fonctionne correctement sur la machine de test, utilisez la même procédure pour installer le nouvel ensemble logiciel sur chacune des autres machines de l'ensemble de compilation. Les logiciels portés La même idée peut être utilisée pour le catalogue des logiciels portés. La première étape critique est de monter /usr/ports depuis la même machine vers toutes les machines de l'ensemble de compilation. Vous pouvez alors configurer correctement /etc/make.conf pour partager les archives. Vous devrez faire pointer DISTDIR sur un répertoire de partage commun dans lequel peut écrire n'importe quel utilisateur utilisé pour correspondance de l'utilisateur root par vos montages NFS. Chaque machine devrait faire pointer WRKDIRPREFIX sur une répertoire de compilation local. Et enfin, si vous projetez de compiler et distribuer des logiciels précompilés, vous devriez fixer PACKAGES sur un répertoire similaire à DISTDIR. Index: projects/xml-tools/fr_FR.ISO8859-1/books/handbook/l10n/chapter.xml =================================================================== --- projects/xml-tools/fr_FR.ISO8859-1/books/handbook/l10n/chapter.xml (revision 41366) +++ projects/xml-tools/fr_FR.ISO8859-1/books/handbook/l10n/chapter.xml (revision 41367) @@ -1,1074 +1,1074 @@ Andrey Chernov Contribution de Michael C. Wu Réécrit par Localisation - Utilisation et configuration de l'I18N/L10N &trans.a.fonvieille; Synopsis FreeBSD est un projet à très large audience avec des utilisateurs et des contributeurs provenant du monde entier. Ce chapitre discute des fonctions d'internationalisation et de localisation de FreeBSD qui permettent aux non-anglophones de travailler. Il y a de nombreux aspects de l'implémentation i18n au niveau système et application, et quand ce sera possible nous renverrons le lecteur à des sources de documentation plus spécifiques. Après la lecture de ce chapitre, vous connaîtrez: Comment les différentes langues et “locales” sont codées sur les systèmes d'exploitation modernes. Comment paramétrer les “locales” pour votre interpréteur de commandes. Comment configurer la console pour d'autres langues que l'anglais. Comment employer le système X Window efficacement avec différentes langues. Où trouver plus d'informations sur l'écriture d'applications conformes à la norme i18n. Avant de lire ce chapitre, vous devrez: Savoir comment installer des logiciels tiers (). Les bases Qu'est-ce que I18N/L10N? internationalisation localisation localisation Les développeurs ont raccourci le terme internationalisation en I18N, en comptant le nombre de lettres entre la première et la dernière du mot internationalisation. L10N utilise le même principe, et provient du mot “localisation”. Combinées ensemble, les méthodes I18N/L10N, les protocoles, et les applications conformes permettent aux utilisateurs d'utiliser la langue de leur choix. Les applications I18N sont programmées en utilisant des kits I18N par dessous les bibliothèques. Cela permet aux développeurs d'écrire un simple fichier et traduire les menus et textes affichés dans chaque langue. Nous encourageons fortement les programmeurs à suivre cette convention. Pourquoi devrais-je employer l'I18N/L10N? I18N/L10N est utilisé à chaque fois que vous désirez afficher, entrer, ou traiter des données dans des langues autres que l'anglais. Quelles sont les langues supportées par l'I18N? I18N et L10N ne sont pas spécifiques à FreeBSD. Actuellement, on peut choisir parmi la plupart des langues principales du monde, y compris mais pas seulement: le chinois, l'allemand, le japonais, le coréen, le français, le russe, le vietnamien et d'autres. Utiliser la localisation Dans toute sa splendeur, I18N n'est pas spécifique à FreeBSD et est une convention. Nous vous encourageons à aider FreeBSD à suivre cette convention. locale Le paramétrage des “locales” est basé sur trois termes principaux: le code de la langue, le code du pays, et le codage des caractères. Les noms de “locales” sont construits à partir de ces trois éléments comme suit: CodeLangue_CodePays.CodageCaractères Codage de la langue et du pays codage des langues codage des pays Afin de localiser un système FreeBSD pour une langue spécifique (ou tout autre &unix; supportant l'I18N), l'utilisateur doit déterminer les codes spécifiques pour le pays et la langue (les codes pays indiquent aux applications quelle variation d'une langue donnée utiliser). De plus, les navigateurs Web, les serveurs SMTP/POP, les serveurs Web... agissent en fonction de ces codes. Ce qui suit est un exemple de codes langue/pays: Code langue/pays Description en_US Anglais - Etats Unis ru_RU Russe pour la Russie zh_TW Chinois traditionnel pour Taiwan Codage des caractères codages des caractères ASCII Certaines langues utilisent les codages non-ASCII sur 8 bits ou codent des caractères sur plusieurs octets, voir &man.multibyte.3; pour plus de détails. Les vieilles applications ne les reconnaissent pas ou les remplacent à tord par des caractères de contrôle. Les applications récentes reconnaissent normalement les caractères 8 bits. En fonction de l'implémentation, les utilisateurs devront peut être compiler une application avec le support des caractères sur 8 bits ou multi-octets, ou la configurer correctement. Afin d'accepter l'usage et le traitement de tels caractères, le catalogue des logiciels portés de FreeBSD fournit pour certains programmes une version dans chaque langue. Référez-vous à la documentation I18N de chaque logiciel porté respectif. Spécifiquement, l'utilisateur doit consulter la documentation de l'application pour décider de comment la configurer correctement ou comment passer les valeurs correctes à la procédure configure, au Makefile ou au compilateur. Quelques éléments à garder à l'esprit sont: Les jeux de caractères au codage simple des caractères de la bibliothèque C (voir &man.multibyte.3;), par exemple ISO8859-1, ISO8859-15, KOI8-R, et CP437. Les codages étendus ou multi-octets, e.g. EUC, Big5. Vous pouvez contrôler la liste des jeux de caractères actuellement actifs dans le registre de l'IANA. &os; utilise à la place un codage des “locales” compatible avec X11. Applications I18N Dans le système de logiciels portés et pré-compilés de FreeBSD, les applications I18N ont été nommées avec I18N dans leur nom pour une identification aisée. Cependant, elles ne supportent pas toujours la langue désirée. Configurer les “locales” Généralement il est suffisant d'exporter le nom de la “locale” grâce à la variable LANG sous l'interpréteur de commandes utilisé lors de la session. Cela pourra être fait dans le fichier ~/.login_conf de l'utilisateur ou le fichier de configuration de l'interpréteur de commandes de l'utilisateur (~/.profile, ~/.bashrc, ~/.cshrc). Il n'est pas nécessaire de configurer toutes les autres variables de localisation comme LC_CTYPE, LC_CTIME. Veuillez consulter la documentation de FreeBSD spécifique à votre langue pour plus d'informations. Vous devrez configurer les deux variables d'environnement suivantes dans vos fichiers de configuration: POSIX LANG pour la famille de fonctions &posix; &man.setlocale.3; MIME MM_CHARSET pour le jeu de caractères MIME des applications Cela comprend la configuration de l'interpréteur de commandes, la configuration spécifique des applications, et celle de X11. Méthodes de configuration des “locales” “locales” classe de session Il existe deux méthodes pour configurer les “locales”, elles sont décrites ci-dessous. La première (celle qui est recommandée) est d'assigner les variables d'environnement dans une classe de session, et la seconde est d'ajouter le paramétrage des variables d'environnement dans les fichiers d'initialisation de l'interpréteur de commandes du système. Méthode utilisant les classes de session utilisateur Cette méthode permet d'assigner une fois pour toute les variables d'environnement nécessaires pour le nom des “locales” et le jeu de caractères MIME et cela pour toutes les sessions au lieu de le faire à chaque nouvelle session par l'intermédiaire de la configuration des fichiers d'initialisation de l'interpréteur de commandes. La configuration au niveau utilisateur peut être faite par l'utilisateur lui-même et la configuration au niveau administrateur demande les privilèges de super-utilisateur. Configuration au niveau utilisateur Voici un exemple minimal d'un fichier .login_conf dans le répertoire personnel d'un utilisateur, fichier qui a les deux variables fixées pour le codage Latin-1: me:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1: Chinois traditionnelcodage BIG-5 Voici un exemple de fichier .login_conf qui fixe les variables pour le chinois traditionnel dans le codage BIG-5. Notez les nombreuses variables supplémentaires paramétrées parce que certains logiciels ne respectent pas les variables des “locales” correctement pour le chinois, le japonais, et le coréen. #Users who do not wish to use monetary units or time formats #of Taiwan can manually change each variable me:\ :lang=zh_TW.Big5:\ :setenv=LC_ALL=zh_TW.Big:\ :setenv=LC_COLLATE=zh_TW.Big5:\ :setenv=LC_CTYPE=zh_TW.Big5:\ :setenv=LC_MESSAGES=zh_TW.Big5:\ :setenv=LC_MONETARY=zh_TW.Big5:\ :setenv=LC_NUMERIC=zh_TW.Big5:\ :setenv=LC_TIME=zh_TW.Big5:\ :charset=big5:\ :xmodifiers="@im=gcin": #Set gcin as the XIM Input Server Voir la configuration au niveau administrateur et la page de manuel &man.login.conf.5; pour plus de détails. Configuration au niveau administrateur Vérifiez que que la classe de session d'utilisateur dans /etc/login.conf fixe la bonne langue. Soyez sûr que ces paramètres apparaissent dans /etc/login.conf: nom_langue:intitulé_comptes:\ :charset=jeu_caractères_MIME:\ :lang=nom_locale:\ :tc=default: Donc si l'on reste sur notre exemple précédent utilisant le Latin-1, cela donnera quelque chose comme: german:German Users Accounts:\ :charset=ISO-8859-1:\ :lang=de_DE.ISO8859-1:\ :tc=default: Avant de modifier les classes de session des utilisateurs, exécutez la commande suivante: &prompt.root; cap_mkdb /etc/login.conf pour rendre visible à l'intégralité du système la nouvelle configuration du fichier /etc/login.conf. Modifier les classes de session avec &man.vipw.8; vipw Utilisez vipw pour ajouter de nouveaux utilisateurs, et créer une entrée ressemblant à celle-ci: utilisateur:mot_de_passe:1111:11:langue:0:0:Nom d'utilisateur:/home/utilisateur:/bin/sh Modifier les classes de session avec &man.adduser.8; adduser classe de session Utilisez adduser pour ajouter de nouveaux utilisateurs, et faites ce qui suit: Paramétrez defaultclass = langue dans /etc/adduser.conf. Gardez à l'esprit que vous devez dans ce cas entrer une classe par default (défaut) pour tous les utilisateurs d'autres langues. Une variante est d'entrer la langue spécifiée à chaque fois que &man.adduser.8; affiche Enter login class: default []:. Une autre alternative est d'employer ce qui suit pour chaque utilisateur de langue différente que vous désirez ajouter: &prompt.root; adduser -class langue Modifier les classes de session avec &man.pw.8; pw Si vous utilisez &man.pw.8; pour ajouter de nouveaux utilisateurs, appelez la fonction de cette manière: &prompt.root; pw useradd nom_utilisateur -L langue Méthode utilisant les fichiers d'initialisation de l'interpréteur de commandes Cette méthode n'est pas recommandée parce qu'elle demande une configuration différente pour chaque interpréteur de commandes choisi. Utilisez la méthode utilisant les classes de session utilisateur à la place. MIME “locales” Pour ajouter le nom de la “locale” et le jeu de caractère MIME, positionnez juste les deux variables d'environnement comme montré ci-dessous dans les fichiers d'initialisation de l'interpréteur de commandes /etc/profile et/ou /etc/csh.login. Nous utiliserons la langue allemande comme exemple ci-dessous: Dans /etc/profile: LANG=de_DE.ISO8859-1; export LANG MM_CHARSET=ISO-8859-1; export MM_CHARSET Ou dans /etc/csh.login: setenv LANG de_DE.ISO8859-1 setenv MM_CHARSET ISO-8859-1 Alternativement, vous pouvez ajouter les instructions précédentes à /usr/share/skel/dot.profile (similaire à ce qui fut utilisé dans /etc/profile ci-dessus), ou /usr/share/skel/dot.login (similaire à ce qui fut utilisé dans /etc/csh.login ci-dessus). Pour X11: Dans $HOME/.xinitrc: LANG=de_DE.ISO8859-1; export LANG Ou: setenv LANG de_DE.ISO8859-1 En fonction de votre interpréteur de commandes (vois ci-dessus). Configuration de la console Pour tous les ensembles de jeu de caractères utilisés par la bibliothèque C, positionnez les bonnes polices de caractères pour la console dans /etc/rc.conf pour la langue en question avec: font8x16=nom_police font8x14=nom_police font8x8=nom_police Le nom_police provient ici du répertoire /usr/share/syscons/fonts, sans le suffixe .fnt. sysinstall table de clavier table de correspondance d'affichage Vérifiez également que vous avez paramétré les bonnes tables de clavier et de correspondance d'affichage pour votre jeu de caractères C par l'intermédiaire de sysinstall (/stand/sysinstall sous les versions de &os; antérieures à la 5.2). Une fois dans sysinstall, sélectionnez Configure, puis Console. Alternativement, vous pouvez ajouter ce qui suit au fichier /etc/rc.conf: scrnmap=table_correspondance_affichage keymap=nom_table_clavier keychange="numéro_touche_fonction séquence" La table_correspondance_affichage ici provient du répertoire /usr/share/syscons/scrnmaps sans le suffixe .scm. Une table de correspondance d'affichage avec une police de correspondance est généralement nécessaire pour passer de 8 à 9 bits la matrice de caractère d'une carte VGA dans une zone pseudo-graphique, i.e., déplacer les lettres en dehors de cette zone si la police d'écran utilise une colonne de 8 bits. Si vous avez le “daemon” moused activé par défaut grâce à la ligne suivante dans votre /etc/rc.conf: moused_enable="YES" alors lisez les informations sur le curseur de souris dans le paragraphe suivant. moused Par défaut le curseur du pilote &man.syscons.4; de la console occupe la zone d'adresses 0xd0-0xd3 dans le jeu de caractères. Si votre langue utilise cette zone, vous devez déplacer la zone du curseur en dehors. Pour effectuer cela sous &os;, ajoutez la ligne suivante dans /etc/rc.conf: mousechar_start=3 Le nom_table_clavier provient ici du répertoire /usr/share/syscons/keymaps sans le suffixe .kbd. Si vous n'êtes pas sûr de la table de clavier à utiliser, vous pouvez employer &man.kbdmap.1; pour tester la table sans avoir à redémarrer. Le keychange est généralement utilisé pour programmer les touches de fonction pour correspondre avec le type de terminal sélectionné parce que les séquences de touches de fonction ne peuvent être définies dans la table de clavier. Soyez également sûr de configurer le type de console correct dans le fichier /etc/ttys pour toutes les entrées ttyv*. Les correspondances actuellement pré-définies sont: Jeu de caractères Type de terminal ISO8859-1 ou ISO8859-15 cons25l1 ISO8859-2 cons25l2 ISO8859-7 cons25l7 KOI8-R cons25r KOI8-U cons25u CP437 (jeu de caractères VGA par défaut) cons25 US-ASCII cons25w Pour les langues au caractères étendus ou multi-octets, utilisez le logiciel porté adéquat de votre répertoire /usr/ports/langue. Certains logiciels apparaissent comme utilisant la console alors que le système lui voit un vtty série, par conséquent vous devez réserver suffisamment de vttys pour X11 et la console pseudo-série. Voici une liste partielle des applications pour utiliser d'autres langues sous la console: Langue Emplacement Chinois traditionnel (BIG-5) chinese/big5con Japonais japanese/kon2-16dot ou japanese/mule_freewnn Coréen korean/han Configuration d'X11 Bien qu'X11 ne fasse pas partie du projet FreeBSD, nous avons inclus quelques éléments d'informations ici pour les utilisateurs de FreeBSD. Pour plus de détails, référez-vous au site Web d'&xorg; ou à celui du serveur X11 que vous utilisez. Dans le fichier ~/.Xresources, vous pouvez en plus adapter les paramètres I18N spécifiques des applications (e.g., polices de caractères, menus, etc...). Affichage des polices de caractères serveur de polices de caractères True Type pour X11 Installez le serveur &xorg; (x11-servers/xorg-server) ou le serveur &xfree86; (x11-servers/XFree86-4-Server), puis installez les polices de caractères &truetype; de la langue concernée. Un paramétrage correct des “locales” devrait vous permettre de visualiser les menus dans la langue que vous avez choisie etc. Saisie de caractères non-anglais X11 Input Method (XIM) Le protocole “X11 Input Method” - méthode de saisie pour X11 (XIM) est un nouveau standard pour tous les clients X11. Toutes les applications X11 devraient être écrites en tant que clients XIM qui reçoivent les entrées de serveurs de saisie XIM. Il existe différents serveurs XIM disponibles pour différentes langues. Configuration de l'imprimante Certains jeux de caractères de la bibliothèque C sont généralement codés en dur dans les imprimantes. Les jeux de caractères étendus ou multi-octets demandent une configuration spéciale et nous recommandons d'utiliser apsfilter. Vous pouvez également convertir le document en format &postscript; ou PDF en utilisant des convertisseurs spécifiques à la langue. Noyau et systèmes de fichiers Le système de fichiers rapide de FreeBSD (FFS) est complètement sur 8 bits, et peut donc être utilisé avec n'importe quel jeu de caractères de la bibliothèque C (voir &man.multibyte.3;), mais il n'y a aucun jeu de caractères de stocké dans le système de fichiers; i.e., c'est du 8 bits brut et le système ne sait rien sur l'ordre du codage. Officiellement, le FFS ne supporte encore aucun jeu de caractères étendus ou multi-octets. Cependant, certains jeux de caractères étendus ou multi-octets disposent de correctifs indépendants pour FFS activant un tel support. Ce sont seulement des solutions temporaires non portables ou des “bidouilles” et nous avons décidé de ne pas les inclure dans l'arborescence des sources. Référez-vous aux sites Internet des langues respectives pour plus d'informations et pour les correctifs. DOS Unicode Le support FreeBSD du système fichiers &ms-dos; a la capacité paramétrable de faire la conversion entre jeux de caractères &ms-dos;, Unicode et les jeux de caractères choisis pour le système de fichiers FreeBSD. Voir la page de manuel &man.mount.msdosfs.8; pour plus de détails. Compiler des programmes I18N De nombreux logiciels ont été portés pour FreeBSD avec le support I18N. Certains d'entre eux sont identifiés avec -I18N dans le nom du logiciel porté. Ces derniers et beaucoup d'autres programmes intègrent le support I18N et ne nécessitent aucune considération spéciale. MySQL Cependant, certaines applications comme MySQL nécessitent d'avoir un fichier Makefile configuré avec le jeu de caractères spécifiques. Ceci est en général fait dans le Makefile ou effectué en passant une valeur à configure dans les sources. Localiser FreeBSD pour des langues spécifiques Andrey Chernov Contribution originelle de Russe (codage KOI8-R) localisation russe Pour plus d'informations sur le codage KOI8-R, consultez les Références KOI8-R (Jeu de caractères russes pour Internet). Configuration des “locales” Ajoutez les lignes suivantes dans votre fichier ~/.login_conf: me:My Account:\ :charset=KOI8-R:\ :lang=ru_RU.KOI8-R: Voir plus haut dans ce chapitre pour des exemples de configuration des “locales”. Configuration de la console Ajoutez la ligne suivante à votre fichier /etc/rc.conf: mousechar_start=3 Ajoutez également les paramétres suivants dans /etc/rc.conf: keymap="ru.koi8-r" scrnmap="koi8-r2cp866" font8x16="cp866b-8x16" font8x14="cp866-8x14" font8x8="cp866-8x8" Pour chaque entrée ttyv* dans /etc/ttys, utilisez cons25r comme type de terminal. Voir plus haut dans ce chapitre pour des exemples de configuration de la console. Configuration de l'imprimante imprimantes Comme la plupart des imprimantes avec un jeu de caractères russes ont un “code page” matériel CP866, un filtre de sortie spécial pour la conversion du KOI8-R vers le CP866 est nécessaire. Un tel filtre est installé par défaut sous /usr/libexec/lpr/ru/koi2alt. Une entrée de /etc/printcap pour imprimante russe devra ressembler à: lp|Russian local line printer:\ :sh:of=/usr/libexec/lpr/ru/koi2alt:\ :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs: Consultez la page de manuel &man.printcap.5; pour plus de détails. Système de fichiers &ms-dos; et noms de fichiers russes L'exemple suivant d'entrée du fichier &man.fstab.5; active le support des noms de fichiers russes sur les systèmes de fichiers &ms-dos; montés: /dev/ad0s2 /dos/c msdos rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0 L'option la “locale” utilisée, et fixe la table de conversion de caractères. Pour utiliser l'option assurez-vous de monter /usr avant la partition &ms-dos;, + class='directory'>/usr avant la partition &ms-dos;, car en effet les tables de conversion sont situées dans le répertoire /usr/libdata/msdosfs. Pour plus + class='directory'>/usr/libdata/msdosfs. Pour plus d'informations, consultez la page de manuel &man.mount.msdosfs.8;. Configuration de X11 Effectuez tout d'abord la configuration des “locales” comme décrit plus haut dans ce chapitre. Si vous utilisez &xorg;, installez le paquetage x11-fonts/xorg-fonts-cyrillic. Contrôlez la section "Files" de votre fichier /etc/X11/xorg.conf. Les lignes suivantes doivent être ajoutées avant toute autre entrée FontPath: FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/misc" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi" FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi" Si vous utilisez un mode vidéo haute résolution, intervertissez les lignes 75 dpi et 100 dpi. Consultez le catalogue des logiciels portés pour plus de fontes cyrilliques. Pour mettre en service un clavier russe, ajoutez ce qui suit à la section "Keyboard" de votre fichier xorg.conf: Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:toggle" Vérifiez également que XkbDisable est désactivé (mis en commentaire). Pour l'option grp:caps_toggle le passage de russe à latin se fera par l'intermédiaire de Right Alt, pour grp:ctrl_shift_toggle, le passage se fera à l'aide de la séquence CtrlShift. L'ancienne fonctionnalitée de la touche CapsLock est toujours disponible via ShiftCapsLock (en mode latin uniquement). Pour l'option grp:toggle le passage du russe au latin se fera par l'intermédiaire de la touche Right Alt. L'option grp:caps_toggle ne fonctionne pas sous &xorg; pour une raison inconnue. Si vous disposez de touches “&windows;” sur votre clavier, et que vous constatez que certaines touches non-alphabétiques ne sont pas appariées correctement en mode russe, ajoutez la ligne suivante à votre fichier xorg.conf: Option "XkbVariant" ",winkeys" Le clavier russe XKB peut ne pas fonctionner avec des applications non localisées. localisées. Pour être un minimum localisée, une application devrait appeler la fonction XtSetLanguageProc (NULL, NULL, NULL); assez tôt dans le programme. Consulter KOI8-R pour X Window pour plus d'instructions sur la localisation des applications pour X11. Localisation du chinois traditionnel pour Taiwan localisation chinois traditionnel Le projet FreeBSD taiwanais dispose d'un guide sur FreeBSD en chinois à l'adresse utilisant de nombreuses applications du répertoire chinese du catalogue des logiciels portés. Le rédacteur du guide sur &os; en chinois est Shen Chuan-Hsing statue@freebsd.sinica.edu.tw. Chuan-Hsing Shen statue@freebsd.sinica.edu.tw a créé la collection FreeBSD chinoise (CFC) de logiciels en utilisant le document zh-L10N-tut taiwanais. Les logiciels pré-compilés et les fichiers de procédures sont disponibles à l'adresse . Localisation pour la langue allemande (valable également pour tous les langues respectant le standard ISO 8859-1) localisation allemand Slaven Rezic eserte@cs.tu-berlin.de a rédigé un guide sur l'utilisation des “umlauts” sur une machine FreeBSD. Le guide est écrit en allemand et est disponible sur . Localisation pour le japonais et le coréen localisation japonaise localisation coréenne Pour le japonais, référez-vous à , et pour le coréen à . Documentation FreeBSD dans d'autres langues que l'anglais Certains contributeurs à FreeBSD ont traduit des parties de la documentation FreeBSD dans d'autres langues. Les traductions sont disponibles grâce à des liens sur le site principal ou dans /usr/share/doc. Index: projects/xml-tools/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml =================================================================== --- projects/xml-tools/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml (revision 41366) +++ projects/xml-tools/fr_FR.ISO8859-1/books/handbook/linuxemu/chapter.xml (revision 41367) @@ -1,3932 +1,3932 @@ Jim Mock Restructuré et en partie mis à jour par Brian N. Handy Contribution originelle de Rich Murphey Compatibilité binaire avec Linux &trans.a.fonvieille; Synopsis compatibilité binaire avec Linux compatibilité binaire Linux &os; fournit une compatibilité binaire avec plusieurs autres systèmes d'exploitation du type &unix;, y compris Linux. A ce point, vous devez vous demander pourquoi exactement &os; a besoin d'être capable d'exécuter des binaires Linux? La réponse à cette question est très simple. De nombreuses entreprises et de nombreux développeurs ne développent que pour Linux, puisque que c'est la dernière chose “à la mode” dans le monde de l'informatique. Cela ne laisse aux utilisateurs de &os; que la possibilité de réclamer auprès des ces mêmes entreprises et développeurs des versions native pour &os; de leurs applications. Le problème est, que la plupart de ces entreprises ne réalisent pas vraiment combien de personnes utiliseraient leur produit si il y aurait une version pour &os; également, et la plupart continuent de développer uniquement pour Linux. Donc que doit faire un utilisateur de &os;? C'est là que la compatibilité binaire avec Linux entre en scène. En bref, la compatibilité permet aux utilisateurs de &os; d'exécuter environ 90% des applications Linux sans aucune modification. Cela inclus des applications comme &staroffice;, la version Linux de &netscape;, &adobe; &acrobat;, &realplayer;, VMware, &oracle;, &wordperfect;, Doom, Quake, et plus. On rapporte également que dans certaines situations, les binaires Linux sont plus performants sous &os; que sous Linux. Il existe cependant certaines caractéristiques spécifiques à Linux qui ne sont pas supportées sous &os;. Les binaires Linux ne fonctionneront pas sous &os; s'ils utilisent massivement des appels &i386; spécifiques, comme activation du mode virtuel 8086. Après la lecture de ce chapitre, vous connaîtrez: Comment activer la compatibilité binaire avec Linux sur votre système. Comment installer des bibliothèques partagées Linux supplémentaires. Comment installer des application Linux sur votre système &os;. Les détails de l'implémentation de la compatibilité Linux sous &os;. Avant de lire ce chapitre, vous devrez: Savoir comment installer des logiciels tiers (). Installation KLD (kernel loadable object) La compatibilité binaire avec Linux n'est pas activée par défaut. La manière la plus simple pour activer cette fonctionnalité est de charger le KLD linux (Kernel LoaDable object—objet chargeable par le noyau, ce que l'on nomme couramment un module). Vous pouvez charger ce module en tapant ce qui suit sous l'utilisateur root: &prompt.root; kldload linux Si vous désirez que la compatibilité Linux soit toujours activée, alors vous devrez ajouter la ligne suivante au fichier /etc/rc.conf: linux_enable="YES" La commande &man.kldstat.8; peut être utilisée pour vérifier que le KLD est chargé: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko options du noyau LINUX Si pour quelques raisons vous ne voulez ou pouvez charger le KLD, alors vous pouvez lier statiquement la compatibilité binaire Linux dans votre noyau en ajoutant options COMPAT_LINUX à votre fichier de configuration du noyau. Puis installez votre noyau comme décrit dans la . Installer les bibliothèques Linux Linux installer les bibliothèques Linux Cela peut être fait de deux manières, soit en utilisant le logiciel porté linux_base, soit en les installant à la main. Installation à l'aide du logiciel porté linux_base catalogue des logiciels portés C'est de loin la méthode la plus simple pour installer les bibliothèques. La procédure est juste identique à l'installation d'un autre logiciel porté à partir du catalogue des logiciels portés. Faites ce qui suit: &prompt.root; cd /usr/ports/emulators/linux_base-fc4 &prompt.root; make install distclean La compatibilité binaire Linux devrait maintenant fonctionner. Certains programmes pourront se plaindre de versions mineures incorrectes de certaines bibliothèques systèmes. Cela semble, en général, ne pas vraiment être un problème. Il peut y avoir de multiples versions disponibles du logiciel porté emulators/linux_base, correspondant à différentes distributions et versions de Linux. Vous devez installez la version la plus proche de ce que nécessite les applications Linux que vous désirez installer. Installer les bibliothèques à la main Si vous n'avez pas le catalogue des logiciels portés installé, vous pouvez à la place installer les bibliothèques à la main. Il vous faudra les bibliothèques partagées Linux dont à besoin le programme et l'éditeur de lien dynamiques. Vous devrez également créer un répertoire racine “masquant” (“shadow root”), /compat/linux, pour les bibliothèques Linux sur votre système &os;. Toute bibliothèque partagée ouverte par les programmes Linux exécutés sous &os; iront d'abord voir dans cette arborescence. Ainsi, si un programme Linux charge, par exemple, /lib/libc.so, &os; essayera d'abord d'ouvrir /compat/linux/lib/libc.so, puis si cette bibliothèque n'existe pas, /lib/libc.so. Les bibliothèques partagées doivent donc être installées sous l'arborescence /compat/linux/lib plutôt que sous les chemins d'accès mentionnés par la commande Linux ld.so. Généralement, vous ne devrez cherchez à savoir de quelles bibliothèques partagées dépendent les binaires Linux que les premières fois que vous installerez des programmes Linux sur votre système &os;. Au bout d'un moment, vous disposerez d'un jeu suffisant de bibliothèques partagées Linux sur votre système pour être en mesure d'exécuter les binaires Linux nouvellement importés sans effort supplémentaire. Comment installer des bibliothèques partagées supplémentaires bibliothèques partagées Que faire si vous avez installé le logiciel porté linux_base et que votre application se plaint toujours qu'il lui manque des bibliothèques partagées? Comment savoir quelles bibliothèques partagées ont besoin les binaires Linux, et où se les procurer? Il a habituellement deux possibilités (pour suivre les instructions ci-dessous, vous devrez être en session sous le compte super-utilisateur root). Si vous avez accès à un système Linux, déterminez de quelles bibliothèques partagées l'application a besoin, et copiez-les sur votre système &os;. Soit l'exemple suivant: Supposons que vous veniez de télécharger le binaire Linux de Doom, et que vous l'avez installé sur un système Linux. Vous pouvez alors vérifier de quelles bibliothèques partagées il a besoin pour fonctionner avec la commande ldd linuxdoom: &prompt.user; ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 liens symboliques Vous devrez récupérer tous les fichiers mentionnés dans la dernière colonne, et les installer sous /compat/linux, en utilisant les noms de la première colonne comme liens symboliques qui pointent dessus. Cela signifie que vous aurez éventuellement les fichiers suivants sur votre système &os;: /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Remarquez que si vous avez déjà une bibliothèque partagée de même numéro de version majeure que celle indiquée par la première colonne du résultat de la commande ldd, il est inutile de copier le fichier donné par la dernière colonne sur votre système, celui que vous avez déjà devrait suffire. Il est cependant recommandé de recopier malgré tout la bibliothèque partagée si c'est une version récente. Vous pouvez supprimer l'ancienne version, du moment que le lien symbolique pointe sur la nouvelle. Par exemple, si vous avez les bibliothèques suivantes sur votre système: /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 et que vous avez un nouveau binaire qui d'après le résultat de la commande ldd semble avoir besoin d'une version plus récente: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Si vous n'avez qu'une ou deux versions de retard sur le dernier indice, alors ne vous souciez pas d'installer la version /lib/libc.so.4.6.29 plus récente, parce que le programme devrait fonctionner sans problème avec une version légèrement antérieure. Vous pouvez néanmoins décider de remplacer libc.so, ce qui devrait vous donner quelque chose comme: /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Le mécanisme de lien symbolique n'est nécessaire que pour les binaires Linux. L'éditeur de liens dynamiques de &os; se charge lui-même de trouver les numéros de versions majeures adéquats et vous n'avez pas à vous en préoccuper.
Installer des binaires Linux ELF Linux binaires ELF Une étape supplémentaire est parfois nécessaire pour les binaires ELF: le “marquage”. Si vous tentez d'exécuter un binaire ELF non marqué, vous obtiendrez un message d'erreur ressemblant à ce qui suit: &prompt.user; ./mon-binaire-elf-linux ELF binary type not known Abort Pour que le noyau &os; puisse distinguer un binaire ELF &os; d'un binaire Linux, vous devez employer l'utilitaire &man.brandelf.1;: &prompt.user; brandelf -t Linux mon-binaire-elf-linux outils GNU Les outils GNU incorporent désormais automatiquement les marques nécessaires dans les binaires ELF, vous aurez donc de moins en moins besoin de passer par cette étape à l'avenir. Configurer le résolveur de noms de domaines Si le DNS ne fonctionne pas, ou si vous avez les messages: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword Vous devrez configurer un fichier /compat/linux/etc/host.conf contenant: order hosts, bind multi on Où l'ordre ci-dessus spécifie qu'il faut tout d'abord regarder dans le fichier /etc/hosts puis interroger le DNS. Quand le fichier /compat/linux/etc/host.conf n'existe pas, les applications Linux trouvent le fichier /etc/host.conf de &os; et se plaignent de sa syntaxe &os; incompatible. Supprimez bind si vous n'avez pas configuré de serveur de noms avec le fichier /etc/resolv.conf.
Boris Hollas Mis à jour pour &mathematica; 5.X par Installer &mathematica; applications Mathematica Ce document décrit l'installation de la version Linux de &mathematica; 5.X sur un système &os;. La version Linux de &mathematica; ou la version &mathematica; for Students peut être commandée directement auprès de Wolfram à l'adresse . Utiliser l'installeur &mathematica; En premier lieu vous devez indiquer à &os; que les binaires Linux de &mathematica; utilisent l'ABI Linux. La méthode la plus simple pour y parvenir est le marquage par défaut des binaires ELF non marqués comme étant des binaires Linux, ce marquage se faisant avec la commande: &prompt.root; sysctl kern.fallback_elf_brand=3 Avec cela &os; supposera que les binaires ELF non marqués sont des binaires Linux, et donc vous devriez être en mesure d'exécuter le programme d'installation directement depuis le CDROM. Copiez ensuite sur votre disque dur le fichier MathInstaller: &prompt.root; mount /cdrom &prompt.root; cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/ et dans ce fichier, remplacez /bin/sh sur la première ligne par /compat/linux/bin/sh. Cela permet de garantir que l'installeur est exécuté par la version Linux de &man.sh.1;. Ensuite, remplacez toutes les occurrences de Linux) par FreeBSD) à l'aide d'un éditeur de texte ou la procédure proposée dans la section suivante. Cela indique à l'installeur &mathematica;, qui fait appel à la commande uname -s pour déterminer le système d'exploitation, de traiter &os; comme un système d'exploitation de type Linux. Lancer maintenant la commande MathInstaller procédera à l'installation de &mathematica;. Modifier les exécutables &mathematica; Les procédures que &mathematica; a créé lors de l'installation doivent être modifiées avant que vous ne puissiez les utiliser. Si vous avez choisi /usr/local/bin comme répertoires pour les exécutables &mathematica;, vous trouverez alors dans ce répertoire des liens symboliques vers les fichiers nommés math, mathematica, Mathematica, et MathKernel. Dans chacun d'entre eux, remplacez Linux) par FreeBSD) avec un éditeur de texte ou la procédure suivante: #!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done Obtenir votre mot de passe pour &mathematica; Ethernet adresse MAC Quand vous lancez &mathematica; pour la première fois, un mot de passe vous sera demandé. Si vous n'avez pas encore récupéré votre mot de passe auprès de Wolfram, lancez le programme mathinfo présent dans le répertoire d'installation afin d'obtenir l'identifiant de votre machine. Cet identifiant de machine est basé uniquement sur l'adresse MAC de votre première carte Ethernet, vous ne pouvez donc pas utiliser votre copie de &mathematica; sur une machine différente. Quand vous vous enregistrez auprès de Wolfram, par courrier électronique, téléphone, ou fax, vous leur communiquerez l'“identifiant” de la machine et ils vous donneront en réponse le mot de passe correspondant qui a la forme de plusieurs groupes de nombres. Exécuter l'interface de &mathematica; via le réseau &mathematica; utilise des polices de caractères spécifiques pour afficher des caractères qui ne sont pas présents dans l'ensemble standard de polices (caractère intégrale, somme, lettres grecques, etc.). Le protocole X a besoin que ces polices de caractères soient installées localement. Cela signifie que vous devrez copier sur votre machine locale ces polices à partir du CDROM ou d'une machine avec &mathematica; installé. Ces polices sont normalement stockées dans /cdrom/Unix/Files/SystemFiles/Fonts sur le CDROM, ou dans /usr/local/mathematica/SystemFiles/Fonts sur votre disque dur. En fait les polices sont dans les sous-répertoires Type1 et X. Il existe différentes manières de les utiliser, comme décrit ci-dessous. La première manière est de les copier dans un des répertoires de polices de caractères existant dans /usr/X11R6/lib/X11/fonts. Il faudra alors éditer le fichier fonts.dir, y ajouter les noms des polices, et changer le nombre de polices sur la première ligne. Alternativement, vous devriez pouvoir juste exécuter &man.mkfontdir.1; dans le répertoire dans lequel vous avez copié les polices de caractères. La deuxième manière est de copier les répertoires dans /usr/X11R6/lib/X11/fonts: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Maintenant ajoutez les nouveaux répertoires de polices à votre chemin de recherche des polices de caractères: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash Si vous utilisez le serveur &xorg;, vous pouvez charger ces répertoires de polices automatiquement en les ajoutant à votre fichier xorg.conf. Sous les serveurs &xfree86;, le fichier de configuration se nomme XF86Config. polices de caractères Si vous n'avez pas déjà de répertoire appelé /usr/X11R6/lib/X11/fonts/Type1, vous pouvez modifier le nom du répertoire MathType1 dans l'exemple ci-dessus par Type1. Aaron Kaplan Contribution de Robert Getschmann Remerciements à Installer &maple; applications Maple &maple; est un programme mathématique commercial similaire à &mathematica;. Vous devez acquérir ce logiciel auprès de et vous enregistrer pour obtenir un fichier de licence. Pour installer ce logiciel sous &os;, veuillez suivre les étapes suivantes: Exécutez la procédure INSTALL fournie avec le logiciel. Choisissez l'option “RedHat” quand le programme vous le demandera. Un répertoire d'installation typique devrait être: /usr/local/maple. Si vous ne l'avez pas déjà fait, demandez une licence pour &maple; auprès de Maple Waterloo Software () et copiez-la sous /usr/local/maple/license/license.dat. Installez le gestionnaire de licence FLEXlm en exécutant la procédure d'installation INSTALL_LIC fournie avec &maple;. Précisez le nom de la machine au serveur de licence. Modifiez le fichier /usr/local/maple/bin/maple.system.type avec le correctif suivant: ----- snip ------------------ *** maple.system.type.orig Sun Jul 8 16:35:33 2001 --- maple.system.type Sun Jul 8 16:35:51 2001 *************** *** 72,77 **** --- 72,78 ---- # the IBM RS/6000 AIX case MAPLE_BIN="bin.IBM_RISC_UNIX" ;; + "FreeBSD"|\ "Linux") # the Linux/x86 case # We have two Linux implementations, one for Red Hat and ----- snip end of patch ----- Remarquez qu'après "FreeBSD"|\ aucun espace ne doit être ajouté. Ce correctif demande à &maple; de reconnaître “FreeBSD” comme étant un type de système Linux. La procédure bin/maple fait appel à la procédure bin/maple.system.type qui à son tour appelle uname -a pour déterminer le nom du système d'exploitation. En fonction de ce nom, la procédure déterminera quels binaires utiliser. Lancez le serveur de licence. La procédure suivante, installée sous le nom /usr/local/etc/rc.d/lmgrd.sh est une façon pratique de lancer lmgrd: ----- snip ------------ #! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX export PATH LICENSE_FILE=/usr/local/maple/license/license.dat LOG=/var/log/lmgrd.log case "$1" in start) lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2 echo -n " lmgrd" ;; stop) lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2 ;; *) echo "Usage: `basename $0` {start|stop}" 1>&2 exit 64 ;; esac exit 0 ----- snip ------------ Testez &maple;: &prompt.user; cd /usr/local/maple/bin &prompt.user; ./xmaple Cela devrait fonctionner. Assurez-vous d'écrire à Maplesoft pour leur indiquer que vous désirez une version native pour &os;! Pièges courants Le gestionnaire de licence FLEXlm peut être difficile à utiliser. De la documentation supplémentaire à ce sujet est disponible à l'adresse . lmgrd est connu pour être très capricieux au sujet du fichier de licence et de planter si il y a un quelconque problème. Un fichier de licence correct devrait ressembler à ceci: # ======================================================= # License File for UNIX Installations ("Pointer File") # ======================================================= SERVER chillig ANY #USE_SERVER VENDOR maplelmg FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \ PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \ ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \ SN=XXXXXXXXX Le numéro de série et la clé ont été ici remplacés par des X. chillig est le nom de la machine. L'édition du fichier de licence est possible tant que vous ne touchez pas à la ligne “FEATURE” (qui est protégée par la clé de la licence). Dan Pelleg Contribution de Installer &matlab; applications MATLAB Ce document décrit l'installation de la version Linux de &matlab; version 6.5 sur un système &os;. Le logiciel fonctionne plutôt bien, à l'exception de la &jvm;, machine virtuelle &java; (voir la ). La version Linux de &matlab; peut être commandée directement auprès de The MathWorks à l'adresse . Assurez-vous d'avoir le fichier de licence ou les instructions pour le créer. Pendant que vous y êtes, faites-leur savoir que vous désireriez une version &os; native de leur logiciel. Installer &matlab; Pour installer &matlab;, faites ce qui suit: Insérez le CD d'installation et montez-le. Ouvrez une session super-utilisateur (root), comme recommandé par la procédure d'installation. Pour lancer la procédure d'installation tapez: &prompt.root; /compat/linux/bin/sh /cdrom/install Le programme d'installation est graphique. Si vous obtenez une erreur disant que le programme est incapable d'ouvrir une instance d'affichage, tapez setenv HOME ~utilisateur, où utilisateur est l'utilisateur à partir duquel vous avez fait un &man.su.1;. Quand on vous demande le répertoire racine pour &matlab;, tapez: /compat/linux/usr/local/matlab. Pour faciliter la suite de l'installation et réduire les frappes inutiles, tapez à l'invite de l'interpréteur de commandes ceci: set MATLAB=/compat/linux/usr/local/matlab Editez le fichier de licence comme précisé lors de l'obtention de la licence &matlab;. Vous pouvez préparer d'avance ce fichier en utilisant votre éditeur favori, et en le copiant sous le nom $MATLAB/license.dat avant que le programme d'installation ne vous demande de l'éditer. Terminez le processus d'installation. A ce point, votre installation de &matlab; est terminée. Les étapes suivantes rajoutent le nécessaire pour l'intégrer à votre système &os;. Démarrage du gestionnaire de licence Créez des liens symboliques pour les procédures du gestionnaire de licence: &prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW &prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW Créez un fichier de démarrage nommé /usr/local/etc/rc.d/flexlm.sh. L'exemple ci-dessous est une version modifiée du fichier $MATLAB/etc/rc.lm.glnx86 fourni. Les modifications concernent l'emplacement des fichiers, et le lancement du gestionnaire de licence sous l'émulation Linux. #!/bin/sh case "$1" in start) if [ -f /usr/local/etc/lmboot_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u utilisateur && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 fi ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0 Le fichier doit être rendu exécutable: &prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.sh Vous devez remplacer utilisateur dans la procédure par un nom d'utilisateur valide sur votre système (et non pas root). Lancez le gestionnaire de licence avec la commande: &prompt.root; /usr/local/etc/rc.d/flexlm.sh start Lier l'environnement d'exécution &java; (“&java; Runtime Environment”) Modifiez le lien vers le “&java; Runtime Environment” (JRE) pour un lien fonctionnant correctement sous &os;: &prompt.root; cd $MATLAB/sys/java/jre/glnx86/ &prompt.root; unlink jre; ln -s ./jre1.1.8 ./jre Création d'une procédure de lancement pour &matlab; Placez la procédure de démarrage suivante dans le répertoire /usr/local/bin/matlab: #!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@" Puis tapez la commande chmod +x /usr/local/bin/matlab. En fonction de la version emulators/linux_base utilisée, vous pouvez rencontrer des problèmes lors de l'utilisation de cette procédure. Pour éviter cela, éditez le fichier /compat/linux/usr/local/matlab/bin/matlab, et modifiez la ligne qui dit: if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then (dans la version 13.0.1, c'est la ligne 410) en: if test -L $newbase; then Créer une procédure d'arrêt pour &matlab; Ce qui suit est nécessaire pour corriger le fait que &matlab; ne peut être quitter correctement. Créez un fichier $MATLAB/toolbox/local/finish.m, et y mettre la ligne suivante: ! $MATLAB/bin/finish.sh $MATLAB doit être écrit tel quel. Dans le même répertoire, vous trouverez les fichiers finishsav.m et finishdlg.m, qui vous permettront de sauvegarder l'environnement avant de quitter. Si vous utilisez l'un d'eux, insérez la ligne ci-dessus après la commande save. Créez un fichier $MATLAB/bin/finish.sh, qui contiendra ce qui suit: #!/usr/compat/linux/bin/sh (sleep 5; killall -1 matlab_helper) & exit 0 Rendez le fichier exécutable: &prompt.root; chmod +x $MATLAB/bin/finish.sh Utilisation de &matlab; A ce point, vous êtes prêt à taper la commande matlab et à commencer à l'utiliser. Marcel Moolenaar Contribution de Installer &oracle; applications Oracle Préface Ce document décrit le processus d'installation d'&oracle; 8.0.5 et d'&oracle; 8.0.5.1 Enterprise Edition pour Linux sur une machine &os;. Installer l'environnement Linux Assurez-vous d'avoir installé les deux logiciels emulators/linux_base et devel/linux_devtools du catalogue des logiciels portés. Si vous rencontrez des problèmes avec ces logiciels portés, il se peut que vous ayez à utiliser les versions pré-compilées ou des versions plus anciennes disponibles dans le catalogue des logiciels portés. Si vous désirez installer l'agent intelligent, vous devrez également installer le “package” Red Hat Tcl: tcl-8.0.3-20.i386.rpm. La commande générale pour installer des RPMs avec le logiciel RPM (archivers/rpm) est: &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package L'installation du package ne devrait pas générer d'erreur. Créer l'environnent &oracle; Avant de pouvoir installer &oracle;, vous devez configurer un environnement propre. Ce document ne décrit que ce qu'il y a faire spécifiquement pour utiliser &oracle; pour Linux sous &os;, et non pas ce qui a été décrit dans le guide d'installation d'&oracle;. Optimisation du noyau optimisation du noyau Comme décrit dans le guide d'installation d'&oracle;, vous devez configurer une taille maximale pour la mémoire partagée. Sous &os; n'utilisez pas l'option SHMMAX. SHMMAX est simplement calculée à partir de SHMMAXPGS et PGSIZE. Définissez donc l'option SHMMAXPGS. Toutes les autres options peuvent être configurées comme décrit dans le guide. Par exemple: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Configurez ces options en fonction de l'utilisation prévue d'&oracle;. Assurez-vous également de la présence des options suivantes dans votre fichier de configuration du noyau: options SYSVSHM #SysV shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication Compte &oracle; Créez un compte oracle de la même manière que vous créerez un autre compte utilisateur. Le compte oracle n'a de spécial que le fait que vous devez lui donner un interpréteur de commandes Linux. Ajoutez /compat/linux/bin/bash au fichier /etc/shells et fixez l'interpréteur de commande du compte oracle à /compat/linux/bin/bash. Environnement En plus des variables d'environnement normales d'&oracle; comme ORACLE_HOME et ORACLE_SID vous devez fixer les variables d'environnement suivantes: Variable Valeur LD_LIBRARY_PATH $ORACLE_HOME/lib CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip PATH /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin Il est conseillé de définir toutes les variables d'environnement dans le fichier .profile. Un exemple complet est: ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH Installer &oracle; En raison d'une particularité de l'émulateur Linux, vous devez créer un répertoire appelé .oracle dans /var/tmp avant de lancer le programme d'installation. Faites en sorte que l'utilisateur oracle en soit le propriétaire. Vous devriez être en mesure d'installer &oracle; sans problème. Si vous rencontrez cependant des problèmes, contrôlez tout d'abord votre distribution d'&oracle; et/ou configuration! Après avoir installé &oracle;, appliquez les correctifs décrits dans les deux sous-sections suivantes. Un problème fréquent est que l'interface au protocole TCP n'est pas correctement installée. Avec comme conséquence l'impossibilité d'écouter le trafic TCP. Les opérations suivantes aident à résoudre ce problème: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install N'oubliez pas de lancer à nouveau root.sh! Appliquer un correctif au fichier root.sh Quand on installe &oracle;, certaines opérations, qui doivent être effectuées en tant que root, sont enregistrées dans une procédure d'interpréteur de commandes appelée root.sh. Cette procédure se trouve dans le répertoire orainst. Appliquez le correctif suivant au fichier root.sh, pour faire en sorte qu'il utilise le chemin correct pour chown, ou exécute une procédure sous un interpréteur de commandes Linux natif. *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script Quand vous n'installez pas &oracle; à partir d'un CD, vous pouvez modifier les sources de root.sh. La procédure se nomme rthd.sh et se trouve dans le répertoire orainst dans l'arborescence des sources. Patching genclntsh La procédure genclntsh est utilisée pour créer une simple bibliothèque partagée cliente. Elle est utilisée lors de la construction des démos. Appliquez le correctif suivant pour commenter la définition de la variable d'environnement PATH: *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst Exécuter &oracle; Après avoir suivi les instructions précédentes, vous devriez être en mesure d'exécuter &oracle; comme si le programme tournait sous Linux. Holger Kipp Contribution de Valentino Vaschetto Conversion en SGML par Installer &sap.r3; applications &sap.r3; Les installations de systèmes &sap; sous &os; ne seront pas supportées par l'équipe de support de SAP — ils n'assurent que le support pour des plateformes ceritifiées. Préface Ce document décrit une façon d'installer un système &sap.r3; avec la base de données &oracle; pour Linux sur une machine &os;, comprenant l'installation de &os; et d'&oracle;. Deux configurations différentes seront décrites: &sap.r3; 4.6B (IDES) avec &oracle; 8.0.5 sous &os; 4.3-STABLE &sap.r3; 4.6C avec &oracle; 8.1.7 sous &os; 4.5-STABLE Même si ce document tente de décrire toutes les étapes importantes de façon détaillée, il n'est pas destiné à remplacer les guides d'installation d'&oracle; et &sap.r3;. Veuillez consulter la documentation fournie avec la version Linux de &sap.r3; et les questions spécifiques à &oracle;, ainsi que les ressources d'&oracle; et de &sap; OSS. Logiciels Les CD-ROMs suivants ont été utilisés pour les installations de &sap;: &sap.r3; 4.6B, &oracle; 8.0.5 Nom Numéro Description KERNEL 51009113 Noyau SAP Oracle / Installation / AIX, Linux, Solaris RDBMS 51007558 Oracle / RDBMS 8.0.5.X / Linux EXPORT1 51010208 IDES / DB-Export / Disque 1 sur 6 EXPORT2 51010209 IDES / DB-Export / Disque 2 sur 6 EXPORT3 51010210 IDES / DB-Export / Disque 3 sur 6 EXPORT4 51010211 IDES / DB-Export / Disque 4 sur 6 EXPORT5 51010212 IDES / DB-Export / Disque 5 sur 6 EXPORT6 51010213 IDES / DB-Export / Disque 6 sur 6 De plus, nous avons utilisé le CD d'&oracle; 8 Serveur (version 8.0.5 de pré-production pour Linux, noyau 2.0.33) qui n'est pas vraiment nécessaire, et &os; 4.3-STABLE (une version plus vieille de quelques jours que la 4.3-RELEASE). &sap.r3; 4.6C SR2, &oracle; 8.1.7 Nom Numéro Description KERNEL 51014004 Noyau SAP Oracle / Noyau SAP Version 4.6D / DEC, Linux RDBMS 51012930 Oracle 8.1.7/ RDBMS / Linux EXPORT1 51013953 Version 4.6C SR2 / Export / Disque 1 sur 4 EXPORT1 51013953 Version 4.6C SR2 / Export / Disque 2 sur 4 EXPORT1 51013953 Version 4.6C SR2 / Export / Disque 3 sur 4 EXPORT1 51013953 Version 4.6C SR2 / Export / Disque 4 sur 4 LANG1 51013954 Version 4.6C SR2 / Langue / DE, EN, FR / Disque 1 sur 3 En fonction des langues que vous désirez installer, des CDs propres à ces langues pourront être nécessaires. Ici nous utilisons juste l'allemand (DE) et l'anglais (EN), donc seul le premier CD propre aux langues sera nécessaire. Notez que le numéro des quatre CDs EXPORT est identique (c'est différent du numérotage des CDs 4.6B IDES). Au moment de l'écriture de ces lignes, cette installation utilise &os; 4.5-STABLE (du 20 mars 2002). Notes concernant &sap; Les notes suivantes devraient être lues avant d'installer &sap.r3; et ont prouvé leur utilité durant l'installation: &sap.r3; 4.6B, &oracle; 8.0.5 Numéro Titre 0171356 SAP sous Linux: Remarques importantes 0201147 INST: 4.6C R/3 Inst. sur UNIX - Oracle 0373203 Mise à jour / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX 0072984 Digital UNIX 4.0B pour Oracle 0130581 Fin de l'étape DIPGNTAB de R3SETUP 0144978 Votre système n'a pas été installé correctement 0162266 Questions et conseils pour R3SETUP sous Windows NT / W2K &sap.r3; 4.6C, &oracle; 8.1.7 Numéro Titre 0015023 Initialisation de la table TCPDB (RSXP0004) (EBCDIC) 0045619 R/3 avec plusieurs langues ou languages or typefaces 0171356 SAP sous Linux: Remarques importantes 0195603 RedHat 6.1 version entreprise: problèmes connus 0212876 Le nouvel outil d'archivage SAPCAR 0300900 Linux: matériel DELL 0377187 RedHat 6.2: remarques importantes 0387074 INST: R/3 4.6C SR2 Installation sous UNIX 0387077 INST: R/3 4.6C SR2 Inst. sous UNIX - Oracle 0387078 SAP sous UNIX: Dépendances 4.6C SR2 Matériel nécessaire L'équipement suivant est suffisant pour l'installation d'un système &sap.r3;. Bien sûr pour une utilisation en production, un choix plus pointu du matériel est nécessaire: Composant 4.6B 4.6C Processeur 2 x 800MHz &pentium; III 2 x 800MHz &pentium; III Mémoire 1Go ECC 2Go ECC Espace disque 50-60Go (IDES) 50-60Go (IDES) Pour une utilisation en production, des processeurs &xeon; avec un cache important, un accès disque rapide (SCSI, contrôleur RAID matériel) et de la mémoire ECC. L'espace disque nécessaire est important en raison du système IDES pré-configuré, qui créé une base de données de 27 Go durant l'installation. Cet espace est également suffisant pour démarrer des systèmes destinés à la production. &sap.r3; 4.6B, &oracle; 8.0.5 Le matériel suivant fut utilisé: une carte mère bi-processeurs avec 2 processeurs &pentium; III 800 MHz, une carte SCSI &adaptec; 29160 Ultra160 (pour utiliser un lecteur de bande 40/80 Go DLT et un lecteur de CDROM), une carte &mylex; &acceleraid; (2 canaux, firmware 6.00-1-00 avec 32 Mo de RAM). Au contrôleur RAID &mylex; sont reliés deux disques durs de 17 Go (miroirs) et quatre disques de 36 Go (RAID niveau 5). &sap.r3; 4.6C, &oracle; 8.1.7 Pour cette installation un &dell; &poweredge; 2500 a été utilisé: une carte mère bi-processeurs avec deux processeurs &pentium; III 1000 MHz (256 Ko de cache), 2 Go PC133 ECC SDRAM, un contrôleur PERC/3 DC PCI RAID avec 128 Mo, et un lecteur DVD-ROM EIDE. Au contrôleur RAID sont reliés deux disques durs 18 Go (miroirs) et quatre disques de 36 Go (RAID niveau 5). Installation de &os; Tout d'abord vous devez installer &os;. Il existe de nombreuses manière d'installer &os;, pour plus d'informations consultez la . Organisation des disques Pour rester simple, la même organisation des disques a été utilisée pour les installations de &sap.r3; 46B et &sap.r3; 46C SR2. Seuls les noms de périphériques ont changé, comme les installations ont été effectuées sur du matériel différent (/dev/da et /dev/amr respectivement, aussi si l'on utilise un contrôleur AMI MegaRAID, on verra /dev/amr0s1a à la place de /dev/da0s1a): Système de fichiers Taille (blocs de 1k) Taille (Go) Monté sous /dev/da0s1a 1.016.303 1 - / + / /dev/da0s1b 6 swap /dev/da0s1e 2.032.623 2 - /var + /var /dev/da0s1f 8.205.339 8 - /usr + /usr /dev/da1s1e 45.734.361 45 - /compat/linux/oracle + /compat/linux/oracle /dev/da1s1f 2.032.623 2 - /compat/linux/sapmnt + /compat/linux/sapmnt /dev/da1s1g 2.032.623 2 - /compat/linux/usr/sap + /compat/linux/usr/sap Configurez et initialisez les deux disques logiques à l'avance avec les logiciels &mylex; ou PERC/3 RAID. Ces logiciels peuvent être lancés lors de la phase de démarrage du BIOS. Notez que l'organisation du disque diffère légèrement des recommandations de SAP, comme SAP suggère de monter séparément les sous-répertoires d'&oracle; (et d'autres) — nous avons décidé de simplement créer de véritables sous-répertoires directement. Utiliser <command>make world</command> et compiler un nouveau noyau Téléchargez les sources -STABLE les plus récentes. Recompilez l'intégralité du système et votre noyau personnalisé après avoir configuré votre fichier de configuration du noyau. Là, vous devriez également ajouter les paramètres du noyau requis par &sap.r3; et &oracle;. Installer l'environnement Linux Installer le système de base Linux Tout d'abord le logiciel porté linux_base doit être installé (en tant que super-utilisateur): &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean Installer l'environnement de développement Linux L'environnement de développement Linux est nécessaire, si vous désirez installer &oracle; sous &os; comme cela est décrit dans la : &prompt.root; cd /usr/ports/devel/linux_devtools &prompt.root; make install distclean L'environnement de développement Linux a été installé en vue de l'installation de &sap.r3; 46B IDES. Ce n'est pas nécessaire si &oracle; DB n'est pas liée sur un système &os;. C'est le cas si vous utilisez l'archive tar &oracle; en provenance d'un système Linux. Installer les RPMs nécessaires RPMs Pour lancer le programme R3SETUP, le support PAM est nécessaire. Lors de la première installation de &sap; sous &os; 4.3-STABLE, nous avons tenté d'installer PAM avec tous les “packages” nécessaires, et nous avons finalement forcé l'installation du “package” PAM, ce qui a fonctionné. Pour &sap.r3; 4.6C SR2, nous avons directement forcé l'installation du RPM PAM, ce qui fonctionne également, il semble donc que les RPMs de dépendance ne sont pas nécessaires: &prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.i386.rpm Pour utiliser l'agent intelligent d'&oracle; 8.0.5, nous devons également installer la version RedHat de Tcl tcl-8.0.5-30.i386.rpm (sinon l'édition de liens durant l'installation d'&oracle; ne fonctionnera pas). Il existe d'autres problèmes à ce niveau, mais ils concernent directement la version Linux d'&oracle;, et ne sont donc pas spécifiquent à &os;. Quelques conseils supplémentaires Cela peut être une bonne idée d'ajouter linprocfs au fichier /etc/fstab, pour plus d'informations consultez la page de manuel &man.linprocfs.5;. Un autre paramètre à positionner est kern.fallback_elf_brand=3, ce qui doit être fait dans le fichier /etc/sysctl.conf. Créer l'environnement SAP/R3 Créer les systèmes de fichiers et points de montage nécessaires Pour une simple installation, il est suffisant de créer les systèmes de fichiers suivants: point de montage taille en Go - /compat/linux/oracle + /compat/linux/oracle 45 Go - /compat/linux/sapmnt + /compat/linux/sapmnt 2 Go - /compat/linux/usr/sap + /compat/linux/usr/sap 2 Go Il est également nécessaire de créer certains liens. Sinon l'intalleur &sap; se plaindra, lors du contrôle des liens créés: &prompt.root; ln -s /compat/linux/oracle /oracle &prompt.root; ln -s /compat/linux/sapmnt /sapmnt &prompt.root; ln -s /compat/linux/usr/sap /usr/sap Un message d'erreur possible durant l'installation (ici avec un système PRD l'installation de &sap.r3; 4.6C SR2): INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200 Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to /sapmnt/PRD/exe. Creating if it does not exist... WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400 Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The program cannot go on as long as this link exists at this location. Move the link to another location. ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0 can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content '/sapmnt/PRD/exe' Création des utilisateurs et des répertoires &sap.r3; a besoin de deux utilisateurs et de trois groupes. Les noms d'utilisateurs dépendent du système d'ID de &sap; (SID) qui est composé de trois lettres. Certains de ces SIDs sont réservés par &sap; (par exemple SAP et NIX. Pour une liste complète consultez la documentation de &sap;). Pour l'installation IDES, nous avons utilisé IDS, pour l'installation 4.6C SR2 PRD, comme ce système était destiné à la production. Nous avons cependant les groupes suivants (les identifiants de groupe peuvent être différents, ce sont seulement les valeurs que nous avons utilisés dans notre installation): groupe ID nom du groupe description 100 dba Administrateur de la base de données 101 sapsys Système &sap; 102 oper Opérateur de la base de données Pour une installation d'&oracle; par défaut, seul le groupe dba est utilisé. Tout comme le groupe oper, certains utilisent également le groupe dba (Voir les documentations d'&oracle; et de &sap; pour plus d'information). Nous avons également besoin des utilisateurs suivants: ID utilisateur nom d'utilisateur nom générique groupe groupes supplémentaires description 1000 idsadm/prdadm sidadm sapsys oper Administrateur &sap; 1002 oraids/oraprd orasid dba oper Administrateur de la base de données &oracle; L'ajout des utilisateurs avec la commande &man.adduser.8; nécessite les entrées suivantes (notez l'interpréteur de commandes et le répertoire utilisateur) pour l'“Administrateur &sap;”: Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash) et pour l'“Administrateur de la base de données &oracle;”: Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash) Ceci devrait également inclure le groupe oper au cas où vous utiliseriez les deux groupes dba et oper. Création des répertoires Ces répertoires sont généralement créés sous forme de systèmes de fichiers séparés. Cela dépend entièrement de vous besoins. Nous avons choisi de créer de simple répertoires, comme ils sont placés sur le même système RAID 5: Nous positionnerons tout d'abord les propriétaires et les droits de certains répertoires (en tant que root): &prompt.root; chmod 775 /oracle &prompt.root; chmod 777 /sapmnt &prompt.root; chown root:dba /oracle &prompt.root; chown sidadm:sapsys /compat/linux/usr/sap &prompt.root; chmod 775 /compat/linux/usr/sap Ensuite nous crérons les répertoires en tant qu'utilisateur orasid. Ce seront tous les répertoires du type - /oracle/SID: + /oracle/SID: &prompt.root; su - orasid &prompt.root; cd /oracle/SID &prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB &prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 &prompt.root; mkdir saparch sapreorg &prompt.root; exit Pour l'installation d'&oracle; 8.1.7 des répertoires supplémentaires sont nécessaires: &prompt.root; su - orasid &prompt.root; cd /oracle &prompt.root; mkdir 805_32 &prompt.root; mkdir client stage &prompt.root; mkdir client/80x_32 &prompt.root; mkdir stage/817_32 &prompt.root; cd /oracle/SID &prompt.root; mkdir 817_32 Le répertoire client/80x_32 est + class='directory'>client/80x_32 est créé tel quel. Ne remplacez pas le x par quelque chose d'autre. La dernière étape consiste à créer les répertoires en tant qu'utilisateur sidadm: &prompt.root; su - sidadm &prompt.root; cd /usr/sap &prompt.root; mkdir SID &prompt.root; mkdir trans &prompt.root; exit Entrées dans <filename>/etc/services</filename> &sap.r3; a besoin de certaines entrées dans le fichier /etc/services, qui ne seront pas créées durant son installation sous &os;. Veuillez ajouter les entrées suivantes (vous avez besoin au moins des entrées correspondant au numéro d'instance — dans notre cas, 00. Cela ne posera pas de problème d'ajouter toutes les entrées de 00 à 99 pour dp, gw, sp et ms). Si vous allez utiliser SAProuter ou vous devez accéder au &sap; OSS, vous avez également besoin de l'entrée 99, comme le port 3299 est généralement utilisé par le processus SAProuter sur le système cible: sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number sapsp00 3400/tcp # 3400 + Instance-Number sapms00 3500/tcp # 3500 + Instance-Number sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number “Locales” nécessaires locale &sap; nécessite au moins deux “locales” qui ne font pas partie de l'installation RedHat par défaut. SAP propose les RPMs nécessaires en téléchargement à partir de leur serveur FTP (qui est uniquement accessible si vous êtes un client avec un accès OSS). Consultez la note 0171356 pour la liste des RPMs dont vous avez besoin. Il est également possible de créer just les appropriés (par exemple à partir de de_DE et en_US), mais nous ne recommandons pas cela pour un système destiné à la production (bien que cela a fonctionné sans problème avec le système IDES). Les “locales” suivantes sont nécessaires: de_DE.ISO-8859-1 en_US.ISO-8859-1 Créez les liens comme suit: &prompt.root; cd /compat/linux/usr/share/locale &prompt.root; ln -s de_DE de_DE.ISO-8859-1 &prompt.root; ln -s en_US en_US.ISO-8859-1 S'ils n'existent pas, des problèmes apparaîtrons lors de l'installation. Si ces problèmes sont intentionnellement ignorés (en fixant la valeur de la variable STATUS des étapes pour lesquelles les problèmes sont apparus à la valeur OK dans le fichier CENTRDB.R3S), il sera impossible d'ouvrir une session sur le système &sap; sans effort supplémentaire. Optimisation du noyau optimisation du noyau Les systèmes &sap.r3; demandent beaucoup de ressources. Nous avons donc ajouté les paramètres suivants au fichier de configuration du noyau: # Set these for memory pigs (SAP and Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # System V options needed. options SYSVSHM #SYSV-style shared memory options SHMMAXPGS=262144 #max amount of shared mem. pages #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #max number of shared memory ident if. options SHMSEG=100 #max shared mem.segs per process options SYSVMSG #SYSV-style message queues options MSGSEG=32767 #max num. of mes.segments in system options MSGSSZ=32 #size of msg-seg. MUST be power of 2 options MSGMNB=65535 #max char. per message queue options MSGTQL=2046 #max amount of msgs in system options SYSVSEM #SYSV-style semaphores options SEMMNU=256 #number of semaphore UNDO structures options SEMMNS=1024 #number of semaphores in system options SEMMNI=520 #number of semaphore identifiers options SEMUME=100 #number of UNDO keys Les valeurs minimales sont précisées dans la documentation en provenance de SAP. Comme il n'y a pas d'éléments concernant Linux, consultez la section sur HP-UX (32bits) pour plus d'information. Comme le système utilisé pour l'installation de la version 4.6C SR2 dispose de plus de mémoire principale, les segments de mémoire partagée (“shared segments”) peuvent être plus larges pour &sap; et &oracle;, cependant choisissez un nombre plus important de page de mémoire partagée. Avec l'installation par défaut de &os; sur l'architecture &i386;, laissez MAXDSIZ et DFLDSIZ à une valeur de 1 Go maximum. Sinon, des erreurs étranges comme ORA-27102: out of memory et Linux Error: 12: Cannot allocate memory risquent d'apparaître. Installer &sap.r3; Préparer les CDROMs &sap; Il y a de nombreux CDROMs à monter et démonter lors de l'installation. Si vous disposez de suffisamment de lecteurs de CDROMs, vous pouvez tout simplement les monter tous. Nous avons décidé de copier le contenu des CDROMs dans les répertoires correspondant: /oracle/SID/sapreorg/nom-du-cd nom-du-cd est un nom parmi KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 et EXPORT6 pour l'installation de la version 4.6B/IDES, et KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 et LANG pour l'installation de la version 4.6C SR2. Tous les noms de fichiers sur les CDs montés devraient être en majuscules, sinon utilisez l'option pour le montage. Utilisez donc les commandes suivantes: &prompt.root; mount_cd9660 -g /dev/cd0a /mnt &prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/nom-du-cd &prompt.root; umount /mnt Exécuter la procédure d'installation Tout d'abord, vous devez préparer un répertoire - install: + install: &prompt.root; cd /oracle/SID/sapreorg &prompt.root; mkdir install &prompt.root; cd install Ensuite la procédure d'installation est lancée, qui copiera tous fichiers correspondant dans le répertoire install: + class='directory'>install: &prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH L'installation IDES (4.6B) est fournie avec un système &sap.r3; de démonstration complètement configuré, il y a donc six CDs EXPORT au lieu de juste trois CDs EXPORT. A ce point la configuration par défaut d'installation CENTRDB.R3S est destiné à l'installation d'une instance centrale standard (&r3; et base de données), et non pas l'instance centrale standard IDES, on doit donc copier le fichier CENTRDB.R3S correspondant du répertoire EXPORT1, sinon + class='directory'>EXPORT1, sinon R3SETUP ne demandera que trois CDs EXPORT. La nouvelle version &sap; 4.6C SR2 est fournie avec quatre CDs EXPORT. Le fichier de paramètres qui contrôle les étapes de l'installation est le fichier CENTRAL.R3S. Contrairement aux versions précédentes, il n'y a pas de modèle de configuration d'installation séparé pour une instance centrale avec ou sans base de données. &sap; utilise un modèle de configuration séparé pour l'installation de base de données. Pour relancer l'installation postérieurement, il suffit de la relancer avec le fichier d'origine. Pendant et après l'installation, &sap; a besoin que la commande hostname renvoie uniquement le nom de la machine et non pas le nom complet de la machine. Fixez donc le nom de la machine en fonction, ou créez un alias avec alias hostname='hostname -s' pour les utilisateurs orasid et sidadm (et pour le super-utilisateur root au moins durant les étapes de l'installation effectuées en tant que root). Il est également possible d'ajuster les fichiers .profile et .login des deux utilisateurs qui sont installés lors de l'installation de &sap;. Exécuter <command>R3SETUP</command> 4.6B Assurez-vous que la variable LD_LIBRARY_PATH est correctement positionnée: &prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib Lancez R3SETUP en tant que root à partir du répertoire d'installation: &prompt.root; cd /oracle/IDS/sapreorg/install &prompt.root; ./R3SETUP -f CENTRDB.R3S La procédure pose ensuite un certain nombre de questions (les valeurs par défaut sont entre crochets, suivies par les entrées clavier): Question Défaut Entrée(s) clavier Enter SAP System ID [C11] IDSEntrée Enter SAP Instance Number [00] Entrée Enter SAPMOUNT Directory [/sapmnt] Entrée Enter name of SAP central host [troubadix.domain.de] Entrée Enter name of SAP db host [troubadix] Entrée Select character set [1] (WE8DEC) Entrée Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 1Entrée Extract Oracle Client archive [1] (Yes, extract) Entrée Enter path to KERNEL CD [/sapcd] /oracle/IDS/sapreorg/KERNEL Enter path to RDBMS CD [/sapcd] /oracle/IDS/sapreorg/RDBMS Enter path to EXPORT1 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT1 Directory to copy EXPORT1 CD [/oracle/IDS/sapreorg/CD4_DIR] Entrée Enter path to EXPORT2 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT2 Directory to copy EXPORT2 CD [/oracle/IDS/sapreorg/CD5_DIR] Entrée Enter path to EXPORT3 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT3 Directory to copy EXPORT3 CD [/oracle/IDS/sapreorg/CD6_DIR] Entrée Enter path to EXPORT4 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT4 Directory to copy EXPORT4 CD [/oracle/IDS/sapreorg/CD7_DIR] Entrée Enter path to EXPORT5 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT5 Directory to copy EXPORT5 CD [/oracle/IDS/sapreorg/CD8_DIR] Entrée Enter path to EXPORT6 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT6 Directory to copy EXPORT6 CD [/oracle/IDS/sapreorg/CD9_DIR] Entrée Enter amount of RAM for SAP + DB 850Entrée (en mégaoctets) Service Entry Message Server [3600] Entrée Enter Group-ID of sapsys [101] Entrée Enter Group-ID of oper [102] Entrée Enter Group-ID of dba [100] Entrée Enter User-ID of sidadm [1000] Entrée Enter User-ID of orasid [1002] Entrée Number of parallel procs [2] Entrée Si vous n'avez pas copié les CDs en différent endroits, alors l'installeur &sap; ne peut trouver le CD nécessaire (identifié par le fichier LABEL.ASC sur le CD) et vous demandera alors d'insérer, de monter le CD et de confirmer ou d'entrer le chemin du point de montage. Le fichier CENTRDB.R3S peut ne pas être exempt de problème. Dans notre cas, il demanda à nouveau le CD EXPORT4 mais indiqua la clé correcte (6_LOCATION, puis 7_LOCATION, etc.), on peut donc juste continuer à saisir les bonnes valeurs. En dehors des problèmes mentionnés plus bas, tout devrait être assez direct jusqu'au moment où la base de données &oracle; doit être installée. Exécuter <command>R3SETUP</command> 4.6C SR2 Assurez-vous que la variable LD_LIBRARY_PATH est correctement positionnée. La valeur est différente de l'installation 4.6B avec &oracle; 8.0.5: &prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib Lancez R3SETUP en tant que root à partir du répertoire d'installation: &prompt.root; cd /oracle/PRD/sapreorg/install &prompt.root; ./R3SETUP -f CENTRAL.R3S La procédure pose ensuite un certain nombre de questions (les valeurs par défaut sont entre crochets, suivies par les entrées clavier): Question Défaut Entrée(s) clavier Enter SAP System ID [C11] PRDEntrée Enter SAP Instance Number [00] Entrée Enter SAPMOUNT Directory [/sapmnt] Entrée Enter name of SAP central host [majestix] Entrée Enter Database System ID [PRD] PRDEntrée Enter name of SAP db host [majestix] Entrée Select character set [1] (WE8DEC) Entrée Enter Oracle server version (2) Oracle 8.1.7 2Entrée Extract Oracle Client archive [1] (Yes, extract) Entrée Enter path to KERNEL CD [/sapcd] /oracle/PRD/sapreorg/KERNEL Enter amount of RAM for SAP + DB 2044 1800Entrée (en mégaoctets) Service Entry Message Server [3600] Entrée Enter Group-ID of sapsys [100] Entrée Enter Group-ID of oper [101] Entrée Enter Group-ID of dba [102] Entrée Enter User-ID of oraprd [1002] Entrée Enter User-ID of prdadm [1000] Entrée LDAP support 3Entrée (pas de support) Installation step completed [1] (continue) Entrée Choose installation service [1] (DB inst,file) Entrée Jusqu'ici, la création d'utilisateurs donne une erreur durant l'installation lors des phases OSUSERDBSID_IND_ORA (pour la création de l'utilisateur orasid) et OSUSERSIDADM_IND_ORA (création de l'utilisateur sidadm). En dehors des problèmes mentionnés plus bas, tout devrait être assez direct jusqu'au moment où la base de données &oracle; doit être installée. Installer &oracle; 8.0.5 Consultez les notes &sap; et les Readmes d'&oracle; concernant Linux et la base de données &oracle; pour de possibles problèmes. La plupart, si ce n'est pas tous, de ces problèmes proviennent de bibliothèques incompatibles. Pour plus d'informations au sujet de l'installation d'&oracle;, référez-vous au chapitre sur l'installation d'&oracle;. Installer &oracle; 8.0.5 avec <command>orainst</command> Si &oracle; 8.0.5 doit être utilisée, des bibliothèques supplémentaires sont nécessaires pour une édition de liens couronnée de succès, comme &oracle; 8.0.5 est liée avec une ancienne bibliothèque glibc (RedHat 6.0), cependant RedHat 6.1 utilise déjà une nouvelle version de la bibliothèque glibc. Vous devez donc installer les “packages” suivants pour s'assurer que l'édition de liens fonctionnera: compat-libs-5.2-2.i386.rpm compat-glibc-5.2-2.0.7.2.i386.rpm compat-egcs-5.2-1.0.3a.1.i386.rpm compat-egcs-c++-5.2-1.0.3a.1.i386.rpm compat-binutils-5.2-2.9.1.0.23.1.i386.rpm Consultez les notes &sap; et les Readmes d'&oracle; pour plus d'informations. On pourra utiliser les binaires d'origine (au moment de l'installation, nous n'avons pas eu le temps de contrôler cela), ou utiliser directement les binaires fraichement liés d'un système RedHat. Pour la compilation de l'agent intelligent, la version RedHat de Tcl doit être installée. Si vous ne pouvez vous procurer tcl-8.0.3-20.i386.rpm, un fichier plus récent comme tcl-8.0.5-30.i386.rpm pour RedHat 6.1 fera l'affaire. En dehors de ce problème de liens, l'installation est relativement directe: &prompt.root; su - oraids &prompt.root; export TERM=xterm &prompt.root; export ORACLE_TERM=xterm &prompt.root; export ORACLE_HOME=/oracle/IDS &prompt.root; cd $ORACLE_HOME/orainst_sap &prompt.root; ./orainst Confirmez tous les écrans en appuyant sur Entrée jusqu'à l'installation complète du logiciel, à l'exception de celui qui permet de déselectionner la “visionneuse de texte &oracle;” (&oracle; On-Line Text Viewer), comme cette dernière n'est pas disponible pour Linux. Ensuite &oracle; veut faire l'édition de liens avec i386-glibc20-linux-gcc à la place des gcc, egcs ou i386-redhat-linux-gcc disponibles. En raison d'un manque de temps, nous avons décidé d'utiliser les binaires d'une version &oracle; 8.0.5 PreProduction, après que la première tentative d'obtenir à partir du CD RDBMS une version fonctionnant eut échoué, et que nous avons trouvé qu'accéder aux bons RPMs était alors un véritable cauchemar. Installer la version &oracle; 8.0.5 Pre-production pour Linux (noyau 2.0.33) Cette installation est simple. Montez le CD, lancez l'installeur. Il vous demandera l'emplacement du répertoire utilisateur &oracle;, et y copiera tous les binaires. Nous n'avions, cependant, pas effacé les restes de nos précédentes tentatives d'installation RDBMS. Après cela, la base de données &oracle; put être installée sans encombres. Installer l'archive tar d'&oracle; 8.1.7 pour Linux Prennez l'archive tar que vous avez produite à partir du répertoire d'installation sur un système Linux, et désarchivez-la dans le répertoire /oracle/SID/817_32/. + class='directory'>/oracle/SID/817_32/. Poursuivre l'installation de &sap.r3; Tout d'abord vérifiez le paramétrage des environnements des utilisateurs idsamd (sidadm) et oraids (orasid). Ils devraient avoir, tous les deux, des fichiers .profile, .login et .cshrc qui utilisent la directement la commande hostname. Si le nom de machine du système est un nom complet d'hôte, vous devez modifier hostname pour hostname -s dans ces trois fichiers. Chargement de la base de données Ensuite, R3SETUP peut être soit relancé ou poursuivi (tout dépend si le programme a été quitté ou non). R3SETUP créé ensuite les tables pour les données et charge ces données (pour 46B IDES, à partir des disques EXPORT1 à EXPORT6, pour 46C à partir des disques DISK1 à DISK4) avec R3load dans la base de données. Quand le chargement de la base de données est achevé (cela peut prendre plusieurs heures), des mots de passe sont demandés. Pour les installations de tests, on peut utiliser les mots de passe par défauts connus (utilisez-en des différents si la sécurité est importante): Question Entrée(s) clavier Enter Password for sapr3 sapEntrée Confirum Password for sapr3 sapEntrée Enter Password for sys change_on_installEntrée Confirm Password for sys change_on_installEntrée Enter Password for system managerEntrée Confirm Password for system managerEntrée A ce point, nous avons eut quelques problèmes avec dipgntab durant l'installation de la version 4.6B. Programme d'écoute Démarrer le programme d'écoute (“listener”) d'&oracle; sous l'utilisateur orasid comme suit: &prompt.user; umask 0; lsnrctl start Sinon vous risquez d'obtenir l'erreur ORA-12546 comme les “sockets” n'auront pas les bonnes permissions. Consultez la note &sap; 072984. Mettre à jour les tables MNLS Si vous projetez d'importer des données utilisant des langues non latin-1 dans le système &sap;, vous devez mettre à jour les tables de support des langues internationales (“Multi National Language Support” — MNLS). Ceci est décrit dans les notes &sap; OSS 15023 et 45619. Sinon, vous pouvez ignorer cette question lors de l'installation de &sap;. Si vous n'avez pas besoin des tables MNLS, il est toujours nécessaire de contrôler la table TCPDB et l'initialiser si cela n'a pas déjà été fait. Consultez les notes 0015023 et 0045619 pour plus d'information. Etapes de post-installation Demander une clé licence pour &sap.r3; Vous devez demander votre clé &sap.r3;. Cette clé est indispensable étant donné que la licence temporaire qui a été installée lors de l'installation n'est valide que pendant quatre semaines. Tout d'abord récupérez la clé matérielle. Ouvrez une session sous l'utilisateur idsadm et lancez la commande saplicense: &prompt.root; /sapmnt/IDS/exe/saplicense -get Appeler saplicense sans paramètres affiche la liste des options disponibles. Après la réception de la clé, elle peut être installée en utilisant: &prompt.root; /sapmnt/IDS/exe/saplicense -install Vous devez ensuite entrer les valeurs suivantes: SAP SYSTEM ID = SID, 3 chars CUSTOMER KEY = hardware key, 11 chars INSTALLATION NO = installation, 10 digits EXPIRATION DATE = yyyymmdd, usually "99991231" LICENSE KEY = license key, 24 chars Créer les utilisateurs Créez un utilisateur sous le client 000 (certaines tâches doivent être effectuées sous le client 000, mais avec un utilisateur différent de sap* et ddic). Comme nom d'utilisateur, nous choisissons généralement wartung (ou service en français). Les profiles nécessaires sont sap_new et sap_all. Pour plus de sécurité les mots de passe des utilisateurs par défaut à l'intérieur de tous les clients devraient être modifiés (cela inclut les utilisateurs sap* et ddic). Configurer le système de transport, les profils, les modes d'opération, etc. Dans le client 000, avec un utilisateur autre que ddic et sap*, faire, au moins, ce qui suit: Tâche Transaction Configurez le système de transport, par exemple entité autonome de domaine de transport (Stand-Alone Transport Domain Entity) STMS Créez / Editez le profil système RZ10 Maintenez les modes d'opération et les instances RZ04 Cela et toutes les autres étapes de post-installation sont intégralement décrites dans les guides d'installation &sap;. Editer <filename>init<replaceable>sid</replaceable>.sap</filename> (<filename>initIDS.sap</filename>) Le fichier /oracle/IDS/dbs/initIDS.sap contient le profil de sauvegarde &sap;. Ici la taille de la bande à utiliser, le type de compression et ainsi de suite doivent être définis. Pour garantir un fonctionnement avec les commandes sapdba/brbackup, nous avons modifié les valeurs suivantes: compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0 Explications: compress: la bande que nous utilisons est une HP DLT1 qui fournie une compression matérielle. archive_function: définie le comportement par défaut en ce qui concerne l'archivage des fichiers journaux d'&oracle;: les nouveaux journaux sont sauvegardés sur la bande, ceux déjà sauvegardés le sont à nouveau et sont ensuite effacés. Cela évite de nombreux problèmes si vous devez rétablir la base de données, et qu'une des bandes de sauvegarde est endommagée. cpio_flags: l'indicateur par défaut est qui fixe la taille d'un bloc à 5120 octets. Pour les bande DLT, HP recommande une taille de bloc d'au moins 32Ko, aussi nous avons utilisé pour 64Ko. L'option est nécessaire car nous avons un nombre d'inodes supérieur à 65535. La dernière option, , est nécessaire sinon brbackup se plaint dès que cpio donne le nombre de blocs sauvés. cpio_in_flags: indicateurs nécessaires pour charger les données à partir de bandes. Le format est reconnu automatiquement. tape_size: cette variable donne la capacité brute de la bande. Pour des raisons de sécurité (nous utilisons une compression matérielle), la valeur est légèrement inférieure à la valeur réelle. tape_address: le périphérique non rembobinable devant être utilisé avec cpio. tape_address_rew: le périphérique rembobinable à utiliser avec cpio. Problèmes de configuration après l'installation Les paramètres &sap; suivants devraient être optimisés après l'installation (exemples pour IDES 46B, 1 Go de mémoire): Nom Valeur ztta/roll_extension 250000000 abap/heap_area_dia 300000000 abap/heap_area_nondia 400000000 em/initial_size_MB 256 em/blocksize_kB 1024 ipc/shm_psize_40 70000000 Note &sap; 0013026: Nom Valeur ztta/dynpro_area 2500000 Note &sap; 0157246: Nom Valeur rdisp/ROLL_MAXFS 16000 rdisp/PG_MAXFS 30000 Avec les paramètres donnés ci-dessus, sur un système avec 1Go de mémoire, on pourra avoir une utilisation de la mémoire similaire à: Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free Problèmes lors de l'installation Relancer <command>R3SETUP</command> après la correction d'un problème R3SETUP s'arrête s'il rencontre une erreur. Si vous avez examiné les fichiers journaux correspondants et corrigé l'erreur, vous devez relancer R3SETUP à nouveau, habituellement en sélectionnant comme option de la dernière étape pour laquelle R3SETUP avait rencontré un problème. Pour relancer R3SETUP, exécutez-le avec le fichier R3S correspondant: &prompt.root; ./R3SETUP -f CENTRDB.R3S pour la version 4.6B, ou avec &prompt.root; ./R3SETUP -f CENTRAL.R3S pour la version 4.6C, peu importe si l'erreur est apparue avec CENTRAL.R3S ou DATABASE.R3S. A certains points, R3SETUP suppose que la base de données et le processus &sap; sont en fonctionnement (comme s'il avait déjà complété ces étapes). Au cas où les erreurs se produiraient et que par exemple la base de données ne peut être lancée, vous devez lancer la base de données et &sap; à la main après avoir corrigé les erreurs et avant d'exécuter à nouveau R3SETUP. N'oubliez pas également de démarrer le programme d'écoute d'&oracle; à nouveau (en tant que orasid avec umask 0; lsnrctl start) s'il a également été stoppé (par exemple en raison d'un redémarrage du système). Etape OSUSERSIDADM_IND_ORA lors de l'utilisation de <command>R3SETUP</command> Si R3SETUP se plaint à ce stade, éditez le fichier modèle utilisé par R3SETUP à ce moment (CENTRDB.R3S (4.6B) ou CENTRAL.R3S ou DATABASE.R3S (4.6C)). Localisez la ligne [OSUSERSIDADM_IND_ORA] ou cherchez l'unique entrée STATUS=ERROR et éditez les valeurs suivantes: HOME=/home/sidadm (was empty) STATUS=OK (had status ERROR) Vous pouvez ensuite relancer R3SETUP. Etape OSUSERDBSID_IND_ORA lors de l'utilisation de <command>R3SETUP</command> Il est possible que R3SETUP se plaigne également à ce stade. L'erreur ici est similaire à celle durant la phase OSUSERSIDADM_IND_ORA. Editez juste le fichier modèle utilisé par R3SETUP à ce moment (CENTRDB.R3S (4.6B) ou CENTRAL.R3S ou DATABASE.R3S (4.6C)). Localisez la ligne [OSUSERDBSID_IND_ORA] ou cherchez l'unique entrée STATUS=ERROR et éditez la valeur suivante dans la section: STATUS=OK Puis relancez R3SETUP. Erreur <errorname>oraview.vrf FILE NOT FOUND</errorname> lors de l'installation d'&oracle; Vous n'avez pas désélectionné la visionneuse de texte en ligne d'&oracle; avant de débuter l'installation. Elle est sélectionnée par défaut même si cette option n'est actuellement pas disponible pour Linux. Désélectionnez cet élément dans le menu d'installation d'&oracle; et relancez l'installation. Erreur <errorname>TEXTENV_INVALID</errorname> lors du lancement de <command>R3SETUP</command>, RFC ou SAPgui Si cette erreur apparaît, la “locale” correcte n'est pas présente. La note &sap; 0171356 liste les RPMs nécessaires (e.g. saplocales-1.0-3, saposcheck-1.0-1 pour RedHat 6.1). Dans le cas où vous avez ignoré toutes les erreurs en rapport et modifié la valeur du STATUS correspondant de la valeur ERROR vers la valeur OK (dans CENTRDB.R3S) à chaque fois que R3SETUP s'est plaint et que vous avez relancé R3SETUP, le système &sap; ne sera pas correctement configuré et vous ne serez pas en mesure de vous connecter au système avec SAPgui, même si le système peut être lancé. Tenter de se connecter avec l'ancien SAPgui Linux donna les messages suivants: Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler Ce comportement est dû au fait que &sap.r3; est incapable d'assigner correctement une “locale” et n'est lui-même pas correctement configuré (entrées manquantes dans certaines tables de la base de données). Pour être en mesure de se connecter à &sap;, ajoutez les entrées suivantes au fichier DEFAULT.PFL (voir la note 0043288): abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B Redémarrer le système &sap;. Vous pouvez maintenant vous connecter au système, même si les paramétrages spécifiques à certaines langues peuvent ne pas fonctionner comme attendu. Après la correction des paramétrages de langue (et après avoir fourni les “locales” correctes), ces entrées peuvent être supprimées du fichier DEFAULT.PFL et le système &sap; peut être relancé. Erreur <errorcode>ORA-00001</errorcode> Cette erreur s'est produite uniquement avec &oracle; 8.1.7 sous &os;. La raison était que la base de données &oracle; ne pouvait pas s'initialiser correctement et plantait, laissant des sémaphores et de la mémoire partagée sur le système. La tentative suivante de démarrer la base de données retourna alors l'erreur ORA-00001. Retrouvez-les avec la commande ipcs -a et détruisez-les avec ipcrm. Erreur <errorcode>ORA-00445</errorcode> (le processus en tâche de fond PMON n'a pas démarré — “Background Process PMON Did Not Start”) Cette erreur s'est produite avec &oracle; 8.1.7. Cette erreur est rapportée si la base de données est démarrée avec la procédure startsap habituelle (par exemple startsap_majestix_00) en tant qu'utilisateur prdadm. Une solution possible est de démarrer la base de données sous l'utilisateur oraprd avec la commande svrmgrl: &prompt.user; svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit Erreur <errorcode>ORA-12546</errorcode> (Lancez le programme d'écoute avec les droits corrects — “Start Listener with Correct Permissions”) Démarrez le programme d'écoute (“listener”) d'&oracle; sous l'utilisateur oraids avec les commandes suivantes: &prompt.root; umask 0; lsnrctl start Sinon vous pourrez obtenir l'erreur ORA-12546 étant donné que les “sockets” n'auront pas les bonnes permissions. Consultez la note &sap; 0072984. Erreur <errorcode>ORA-27102</errorcode> (Mémoire épuisée — “Out of Memory”) Cette erreur s'est produite quand nous avons essayé des valeurs pour MAXDSIZ et DFLDSIZ supérieures à 1 Go (1024x1024x1024). De plus, nous avons eu l'erreur Linux Error 12: Cannot allocate memory. Erreur [DIPGNTAB_IND_IND] lors de l'utilisation de <command>R3SETUP</command> En général, vous devez consulter la note &sap; 0130581 (“R3SETUP step DIPGNTAB terminates”). Lors de l'installation d'IDES, pour certaines raisons le processus d'installation n'a pas utilisé le nom correct pour le système &sap; “IDS”, mais la chaîne de caractère "" à la place. Cela conduit à des problèmes mineurs d'accès aux répertoires, comme les chemins sont générés dynamiquement en utilisant l'identifiant système SID (dans ce cas IDS). Aussi au lieu d'accéder par: /usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00 les chemins suivants ont été utilisé: /usr/sap//SYS/... /usr/sap/D00 Afin de poursuivre l'installation, nous avons créé un lien et un répertoire supplémentaire: &prompt.root; pwd /compat/linux/usr/sap &prompt.root; ls -l total 4 drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00 drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans Nous avons également trouvé des notes &sap; (0029227 et 0008401) décrivant ce comportement. Nous n'avons pas rencontré un seul de ces problèmes lors de l'installation de SAP 4.6C. Erreur [RFCRSWBOINI_IND_IND] lors de l'utilisation de <command>R3SETUP</command> Lors de l'installation de SAP 4.6C, cette erreur est juste une conséquence d'une autre erreur survenant plus tôt dans l'installation. Dans ce cas, vous devez consulter les fichiers journaux correspondant et corriger le véritable problème. Si après avoir cherché dans les fichiers journaux cette erreur est confirmée (consultez les notes &sap;), vous pouvez modifier la valeur du STATUS de l'étape posant problème de la valeur ERROR à la valeur OK. Après l'installation, vous devez exécuter le report RSWBOINS à partir de la transaction SE38. Lire la note &sap; 0162266 pour des informations supplémentaires au sujet des phases RFCRSWBOINI et RFCRADDBDIF. Erreur [RFCRADDBDIF_IND_IND] lors de l'utilisation de <command>R3SETUP</command> Ici les même restrictions s'appliquent: assurez-vous en consultant les fichiers journaux, que cette erreur n'est pas causée par d'autres problèmes apparus précédemment. Si vous avez confirmation que la note &sap; 0162266 s'applique, modifiez juste la valeur du STATUS de l'étape posant problème de la valeur ERROR à la valeur OK (fichier CENTRDB.R3S) et relancez R3SETUP. Après l'installation, vous devez exécuter le report RADDBDIF à partir de la transaction SE38. Erreur <errorcode>sigaction sig31: File size limit exceeded</errorcode> Cette erreur s'est produite lors du lancement des processus &sap; disp+work. Si &sap; est démarré avec la procédure startsap, les sous-processus sont alors lancés, et lancent les autres processus &sap;. Cela a pour résultat le fait que la procédure ne remarquera pas si quelque chose se passe mal. Pour contrôler si les processus &sap; ont démarré correctement, consultez l'état des processus avec la commande ps ax | grep SID, qui vous donnera une liste de tous les processus &oracle; et &sap;. S'il semble que certains processus sont manquant ou que vous ne pouvez pas vous connecter au système &sap;, consultez les fichiers journaux correspondants qui peuvent être trouvés dans le répertoire /usr/sap/SID/DVEBMGSnr/work/. + class='directory'>/usr/sap/SID/DVEBMGSnr/work/. Les fichiers à consulter sont dev_ms et dev_disp. Le signal 31 se produit ici si la quantité de mémoire partagée utilisée par &oracle; et &sap; dépasse celle définie dans le fichier de configuration du noyau et ce problème peut être résolu en utilisant une valeur plus grande: # larger value for 46C production systems: options SHMMAXPGS=393216 # smaller value sufficient for 46B: #options SHMMAXPGS=262144 Le lancement de <command>saposcol</command> échoue Il y a quelques problèmes avec le programme saposcol (version 4.6D). Le système &sap; utilise saposcol pour collecter les données concernant les performances du système. Ce programme n'est pas nécessaire pour utiliser le système &sap;, aussi ce problème peut être considéré comme mineur. Les anciennes versions (4.6B) fonctionnent, mais ne récupèrent pas toutes les données (nombreux sont les appels qui retournent juste 0, par exemple pour l'utilisation du CPU). Sujets avancés Si vous êtes curieux de savoir comment la compatibilité binaire avec Linux fonctionne, cette section est faite pour vous. La plupart de ce qui suit est principalement basé sur un courrier électronique de Terry Lambert tlambert@primenet.com envoyé à la &a.chat; (Message ID: <199906020108.SAA07001@usr09.primenet.com>). Comme ça marche? chargeur de classe d'exécution &os; possède une abstraction appelée “chargeur de classe d'exécution”. C'est une portion de l'appel système &man.execve.2;. Ce qui se passe est que &os; dispose d'une liste de chargeurs, à la place d'un simple chargeur avec retour (“fallback”) vers le chargeur #! pour exécuter n'importe quel interpréteur de commandes ou procédure. Historiquement, l'unique chargeur sur les plate-formes &unix; examinait le nombre magique (généralement les 4 ou 8 premiers octets du fichier) pour voir si c'était un binaire connu par le système, et si c'était le cas, invoquait le chargeur binaire. Si ce n'était pas le type de binaire du système, l'appel &man.execve.2; retournait un échec, et l'interpréteur de commandes tentait de l'exécuter comme une commande d'interpréteur. Cette hypothèse est celle par défaut quelque soit l'interpréteur de commandes actuel. Plus tard, une modification a été faite sur &man.sh.1; pour examiner les deux premiers caractères, et s'ils étaient :\n, alors elle invoquait l'interpréteur de commandes &man.csh.1; à la place (nous pensons que l'entreprise SCO fut la première à faire cette modification). Ce que fait maintenant &os; est de parcourir une liste de chargeurs, avec un chargeur #! générique qui reconnaît les noms des interpréteurs qui se trouvent après le caractère espace suivant, puis avec un retour possible vers /bin/sh. ELF Pour le support de l'ABI Linux, &os; voit le nombre magique comme un binaire ELF (il ne fait pas la différence à ce niveau entre &os;, &solaris;, Linux, ou tout autre système d'exploitation qui dispose d'un type d'image ELF). Solaris Le chargeur ELF recherche une marque spécifique, qui se trouve dans une section de commentaire dans l'image ELF, et qui n'est pas présente dans les binaires SVR4/&solaris; ELF. Pour que les binaires Linux puissent fonctionner, ils doivent être marqués sous le type Linux avec &man.brandelf.1;: &prompt.root; brandelf -t Linux file Quand cela est fait, le chargeur ELF verra le marquage Linux sur le fichier. ELF marquage Lorsque le chargeur ELF voit le marquage Linux, le chargeur remplace un pointeur dans la structure proc. Tous les appels système sont indéxés par l'intermédiaire de ce pointeur (dans un système &unix; traditionnel, cela serait la structure sysent[], contenant les appels système). De plus, le processus est marqué pour une gestion spéciale du vecteur d'interruption (“trap”) pour le signal de code “trampoline”, et plusieurs autres corrections (mineures) qui sont gérées par le noyau Linux. Le vecteur d'appel système Linux contient, entre autres, une liste des entrées sysent[] dont les adresses résident dans le noyau. Quand un appel système est effectué par le binaire Linux, le code “trap” déréférence de la structure proc le pointeur de la fonction de l'appel système, et utilise les points d'entrée Linux, et non pas &os;, de d'appel système. De plus, le mode Linux redéfinit dynamiquement l'origine des requêtes; c'est, en effet, ce qu'effectue l'option (pas le type de système de fichiers unionfs!) de montage des systèmes de fichiers. Tout d'abord, une tentative est faite pour rechercher le fichier dans le répertoire /compat/linux/chemin-origine, + class='directory'>/compat/linux/chemin-origine, puis uniquement si cela échoue, la recherche est effectuée dans le répertoire /chemin-origine. + class='directory'>/chemin-origine. Cela permet de s'assurer que les binaires nécessitant d'autres binaires puissent s'exécuter (par exemple, l'ensemble des outils Linux peuvent tourner sous l'ABI Linux). Cela signifie également que les binaires Linux peuvent charger et exécuter les binaires &os;, s'il n'y a pas de binaires Linux correspondant présents, et vous pourriez placer une commande &man.uname.1; dans l'arborescence - /compat/linux pour vous + /compat/linux pour vous assurer que les binaires Linux ne puissent pas dire qu'ils ne tournent pas sous Linux. En effet, il y a un noyau Linux dans le noyau &os;; les diverses fonctions sous-jacentes qui implémentent tous les services fournis par le noyau sont identiques entre les deux tables d'entrées des appels systèmes &os; et Linux: les opérations sur les systèmes de fichiers, les opérations sur la mémoire virtuelle, la gestion des signaux, l'IPC System V, etc. La seule différence est que les binaires &os; utilisent les fonctions glue de &os;, et les binaires Linux celles de Linux (les plus anciens systèmes d'exploitation avaient uniquement leurs propres fonctions de glue: les adresses des fonctions dans une structure sysent[] statique globale, au lieu des adresses des fonctions déréférencées d'un pointeur initialisé dynamiquement pointant vers la structure proc du processus faisant l'appel). Laquelle est l'ABI native &os;? Cela n'a pas d'importance. Basiquement, la seule différence est que (actuellement, cela pourrait facilement changer dans les versions futures, et probablement après cela) les fonctions glue de &os; sont liées en statique dans le noyau, les fonctions glue Linux peuvent être liées statiquement, ou l'on peut y accéder via un module du noyau. Oui, mais est-ce vraiment de l'émulation? Non. C'est l'implémentation d'une interface binaire pour les applications (ABI). Il n'y a pas d'émulateur (ou de simulateur, pour couper court aux prochaines questions) impliqué. Mais pourquoi appelle-t-on parfois cela “émulation Linux”? Pour rendre difficile la vente des versions de &os;! Sérieusement, c'est dû au fait que l'implémentation historique a été faite à une époque où il n'y avait pas vraiment d'autres mots pour décrire ce qui était en développement; dire que &os; exécutait les binaires Linux n'était pas vrai si vous n'aviez pas compilé le code ou chargé un module, aussi un terme était nécessaire pour qualifier ce qui était chargé — donc l'“émulateur Linux”.