Par une réponse à une autre question vous pouvez définir la variable d'environnement non documentée ( ?) COPYFILE_DISABLE afin d'empêcher plusieurs programmes fournis par le système (notamment tar ) de donner une signification particulière à ._*
membres des archives. En particulier, cela les empêchera de :
-
le stockage des données d'attributs étendues (y compris les fourchettes de ressources) dans ._*
membres des archives
(c'est-à-dire ne pas "polluer" les archives créées sur Mac OS X mais destinées à être utilisées sur d'autres systèmes), et
-
en essayant d'extraire des attributs ou des ressources étendus de membres d'archives nommés comme ._*
(c'est-à-dire ne pas interpréter de manière erronée ._*
membres d'archives dans les archives d'autres systèmes).
La valeur que vous utilisez pour la variable d'environnement n'est pas importante (il peut même s'agir d'une chaîne vide). Des valeurs comme 0
y false
ne réactive pas la fonction. La seule chose qui compte est de savoir si la variable est activée (vous devez la "désactiver" pour réactiver la fonction).
Vous pouvez utiliser cette variable sur des commandes individuelles en profitant de la capacité des shells de type Bourne ( sh , ksh , bash , zsh etc.) pour préfixer les commandes avec des variables d'environnement supplémentaires.
COPYFILE_DISABLE=1 tar cf new.tar …
Si vous rencontrez ce problème plus souvent qu'à votre tour, alors vous pourriez vouloir définir et exporter cette variable dans l'un des fichiers d'initialisation de votre Shell.
# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE
Lorsque vous en avez besoin, vous pouvez alors désactiver la variable pour les commandes individuelles.
(unset COPYFILE_DISABLE; tar cf somefile.tar …)
Sur ce système Mac OS X 10.6, les commandes suivantes semblent toutes connaître COPYFILE_DISABLE :
-
/usr/bin/tar
(un lien symbolique vers bsdtar
)
/usr/bin/bsdtar
/usr/bin/gnutar
/bin/pax
COPYFILE_DISABLE est né sous Mac OS X 10.5. Si vous devez prendre en charge la version 10.4, il existe COPY_EXTENDED_ATTRIBUTES_DISABLE qui fonctionne de la même manière.