Notes de version de Solaris 10 6/06

Commandes et standards Solaris

La section suivante décrit les changements de comportement dans certaines commandes et standards du Solaris 10.

Bash 2.0.5b ne définit plus certaines variables d'environnement

Le Solaris 10 comporte Bash 2.0.5b. Ce shell n'exporte plus automatiquement les variables suivantes dans l'environnement :

Ce nouveau comportement s'applique même si le shell attribue des valeurs par défaut à ces variables.

Solution : exportez ces variables manuellement.

Le nouvel utilitaire ln nécessite l'option -f

Le comportement de /usr/bin/ln a changé de manière à adhérer à tous les standards de SVID3 à XCU6. Si vous utilisez la commande ln sans l'option -f pour créer un lien vers un fichier cible existant, le lien n'est pas établi. À la place, un message de diagnostic est écrit pour signaler une erreur de standard et la commande lie les fichiers source restants. Finalement, la commande ln se termine avec une valeur d'erreur.

Par exemple, si le fichier b existe, la syntaxe ln a b génère le message suivant :


ln: b: File exists

Ce changement de comportement a une incidence sur les scripts de shell existants ou les programmes qui comportent la commande ln sans l'option -f. Les scripts qui fonctionnaient auparavant peuvent maintenant échouer dans le Solaris 10.

Solution : utilisez l'option -f avec la commande ln. Si vous disposez de scripts qui exécutent l'utilitaire de liens, modifiez ces scripts pour qu'ils soient conformes au nouveau comportement de cette commande.

Le nouveau tcsh rejette les noms de variables setenv qui comportent un tiret ou un signe égal

Dans le Solaris 10, tcsh a été mis à niveau vers la version 6.12. Cette version n'accepte plus les variables d'environnement dont le nom comporte un tiret ou un signe égal. Les scripts qui contiennent les lignes setenv et qui fonctionnent dans les versions antérieures de Solaris peuvent générer des erreurs dans la version actuelle du Solaris\~10. Le message d'erreur suivant apparaît :


setenv: Syntax error

Pour plus d'informations, consultez la page man tcsh pour le Solaris 10.

Solution : n'utilisez pas de tirets ni de signes égal dans les variables d'environnement.

Changement de comportement de la condition STDIO getc Family EOF

Les applications créées en stricte conformité avec le standard C sont concernées par les changements de comportement de certaines fonctions de bibliothèque. Par exemple, des applications compilées à l'aide du mode de compilation cc -Xc ou c89. Le comportement des fonctions de bibliothèque suivantes a changé :

Selon l'interprétation formelle du standard 1990 C, une fois qu'une condition de marquage de fin de fichier end-of-file est appliquée, aucune donnée ne doit plus être retournée du fichier à la suite d'opérations d'entrée ; sauf si le pointeur de fichier est repositionné ou si l'erreur ou les indicateurs de fin de fichier sont explicitement supprimés par l'application.

Le comportement de tous les autres modes de compilation ne changent pas. En particulier, les interfaces peuvent lire les dernières données écrites en provenance du flux après que l'indicateur de fin de fichier end-of-file a été appliqué.

Solution : appelez fseek() ou clearerr() sur le flux pour lire les données supplémentaires après que la condition EOF a été signalée sur celui-ci.

Les colonnes de sortie de la commande ps sont élargies

En raison d'ID utilisateur et d'ID processeur plus grands, ainsi que d'un temps d'exécution cumulatif plus long, les colonnes de sortie de la commande ps ont été élargies. Par conséquent, les scripts des utilisateurs ne doivent pas être destinés à des colonnes de sortie fixes.

Solution : les scripts doivent utiliser l'option -o de la commande ps.

Pour plus d'informations, consultez la page manps(1) .

La commande ping -v ne fonctionne pas sur les adresses IPv6 (4984993)

La commande ping -v échoue lorsqu'elle est appliquée à des adresses qui utilisent la version 6 du protocole Internet IP (IPv6). Le message d'erreur suivant apparaît :


ping: setsockopt IPV6_RECVRTHDRDSTOPTS Invalid argument

Solution : Aucune. Pour obtenir les mêmes informations de paquet ICMP que celles fournies par la commande ping -v, utilisez la commande snoop .