Linux

CentOS 5.3

unzipsfx(1)


UNZIPSFX

NOM

unzipsfx − exécutable d’auto-décompactage à préfixer aux archives ZIP

SYNOPSIS

<nom du fichier contenant unzipsfx+archive> [−cfptuz[ajnoqsCLV$]] [file(s) ... [−x xfile(s) ...]]

DESCRIPTION

unzipsfx est une version modifiée de unzip(1L) conçue pour être préfixée à des archives ZIP existantes afin de les transformer en archives auto-décompactables. Plutôt que de prendre son premier paramètre sans tiret comme archive à extraire, unzipsfx cherche l’archive dans le nom de fichier sous lequel il a été appelé et teste ou décompacte le contenu de l’archive accolée. Comme la zone exécutable ajoute du volume à l’archive (alors que le but est qu’elle soit la plus petite possible), un certain nombre d’options moins importantes du unzip normal ont été enlevées. Parmi celles-ci on a l’écran d’aide à l’utilisation, les fonctions de listage et diagnostic (−l et −v), la possibilité de décompacter de vieux formats de compactage (les méthodes « reduce, » « shrink » et « implode »), et la possibilité de décompacter vers un autre dossier que le dossier courant. Le décryptage est supporté comme une option de compilation mais devrait être évité à moins que l’archive ne contienne des fichiers cryptés.

Remarquez que les archives auto-décompactables faites avec unzipsfx ne sont pas plus (ou moins) portables que l’exécutable unzip lui-même. En général, une archive auto-décompactable faite sur un système Unix particulier, par exemple, ne pourra être auto-décompactée que sous le même type d’Unix. Le unzip normal peut toujours être utilisé pour extraire l’archive intégrée comme si c’était une archive zip normale, même s’il va afficher un avertissement sans conséquence sur des octets en trop au début du fichier archive zip. Malgré ceci, cependant, l’archive auto-décompactable n’est pas techniquement une archive valide ZIP, et PKUNZIP peut ne pas être capable de travailler avec. Cette limitation est due à la manière simpliste dont l’archive est créée ; la structure interne n’est pas modifiée pour refléter les octets supplémentaires préfixés au fichier archive d’origine.

PARAMÃTRES

[fichier(s)]

Une liste optionnelle des membres de l’archive à traiter. Les jokers similaires à ceux du egrep(1) d’Unix peuvent être utilisés pour sélectionner des membres multiples. Ces jokers peuvent être :

*

équivaut à tout paquet de caractères (même de taille 0)

?

équivaut à tout caractère unique

[...]

équivaut à tout caractère dans la plage indiquée entre les crochets ; les plages sont spécifiées par un caractère, un trait horizontal, et un caractère de fin; si un « ! » ou un « ^ » suit le trait vertical de gauche, alors la plage est exclue. ( c’est-à -dire que tous les caractères sauf ceux spécifiés sont recherchés.)

(Assurez-vous d’encadrer par des guillemets tout caractère qui peut être interprété ou modifié par le système d’exploitation, particulièrement sous Unix et VMS.)

[−x xfile(s)]

Une liste optionnelle des membres de l’archive à exclure du traitement. Ãtant donné que les jokers sont valides pour les séparateurs de dossiers (« / »), cette option peut être utilisée pour exclure tout fichier se trouvant dans un sous-dossier. Par exemple, « foosfx *.[ch] -x */* » va extraire tous les fichiers source C dans le dossier principal, mais pas dans les sous-dossiers. Sans l’option −x, tous les fichiers source C dans tous les dossiers auraient été extraits.

Si unzipsfx est compilé avec SFX_EXDIR défini, l’option suivante est aussi disponible :

[−d exdir]

Un dossier optionnel où seront extraits les fichiers. Par défaut, tous les fichiers et sous-dossiers sont recréés dans le dossier courant ; l’option −d permet l’extraction vers un dossier donné (si vous avez la permission d’y écrire). L’option et le dossier peuvent être concaténés sans aucun espace entre eux, mais remarquez que ceci peut changer le comportement normal de l’environnement. En particulier, « −d ~ » (tilde) est interprété par les environnements Unix comme le nom du dossier racine de l’utilisateur courant, mais « −d~ » est traité comme un sous-dossier littéral « ~ » du dossier courant.

OPTIONS

unzipsfx supporte les options suivantes d’unzip(1L) : −c et −p (décompacter vers la sortie standard/l’écran), −f et −u (rafraîchir et mettre à jour les fichiers existant avant l’extraction), −t (tester l’archive) et −z (afficher le commentaire de l’archive). Toutes les options normales de listage (−l, −v et −Z) ont été enlevées, mais l’option de test (−t) peut être utilisée comme un maigre listage. Autre alternative, le créateur de l’archive auto-décompactable peut inclure une petite liste dans le commentaire du fichier zip.

Voir unzip(1L) pour une description plus complète de ces options.

MODIFICATEURS

unzipsfx supporte actuellement tous les modificateurs d’unzip(1L) : −a (convertir les fichiers texte), −n (ne jamais écraser), −o (écraser sans prompter), −q (traiter silencieusement), −C (traiter les noms sans tenir compte de la casse), −L (convertir les noms provenant de systèmes d’exploitation mono-casse en minuscules), −j (jeter les chemins) et −V (conserver les numéros de version) ; plus les options spécifiques à un système d’exploitation particulier suivantes : −X (restaurer les informations de propriétaire VMS), −s (convertir les espaces dans les noms de fichiers en tiret-bas [DOS, OS/2, NT]) et −$ (restaurer le nom du volume [DOS, OS/2, NT, Amiga]).

(Le support des conversions de texte ASCII peut être enlevée dans les versions futures, puisqu’il est assez simple pour le créateur de l’archive de s’assurer que le texte est au bon format pour le système d’exploitation local. La conversion EBCDIC va par contre être bien sûr gardée puisque le format zip implique un stockage ASCII des fichiers texte.)

Voir unzip(1L) pour une description plus complète de ces modificateurs.

OPTIONS D’ENVIRONNEMENT

unzipsfx les mêmes variables d’environnement qu’unzip(1L), bien que ceci ne concerne que ceux qui vont créer et tester l’archive auto-décompactable. Voir unzip(1L) pour les détails.

DÃCRYPTAGE

Le décryptage est supporté exactement comme avec unzip(1L) ; c’est-à -dire interactivement avec un prompt sans écho pour le(s) mot(s) de passe. Voir unzip(1L) pour les détails. Encore une fois, remarquez que si l’archive n’a pas de fichiers cryptés il n’y a pas de raison d’utiliser une version de unzipsfx avec support du décryptage ; ceci ne fait qu’aggrandir la taille de l’archive.

EXEMPLES

Pour créer une archive auto-décompactable letters à partir d’une archive zip letters.zip et changer les permissions du nouveau fichier afin qu’il soit exécutable par tous sous Unix :

cat unzipsfx letters.zip > letters
chmod 755 letters
zip -A letters

Pour créer la même archive sous MS-DOS, OS/2 ou NT (notez l’utilisation du paramètre /b [binaire] pour la commande copy) :

copy /b unzipsfx.exe+letters.zip letters.exe
zip -A letters.exe

Sous VMS :

copy unzipsfx.exe,letters.zip letters.exe
letters == "$currentdisk:[currentdir]letters.exe"
zip -A letters.exe

(La commande VMS append peut aussi être utilisée. La deuxième ligne installe le nouveau programme comme une « commande externe » pouvant recevoir des paramètres. La troisième ligne assume que Zip est déjà installé comme commande externe.) Sous AmigaDOS :

MakeSFX letters letters.zip UnZipSFX

(MakeSFX est inclus dans la distribution du code source d’UnZip et avec les distributions binaires pour Amiga. « zip -A » ne fonctionne pas avec les archives auto-décompactables Amiga.) Pour tester (ou lister) l’archive auto-décompactable nouvellement créée :

letters −t

Pour tester letters silencieusement, en affichant seulement un résumé indiquant si l’archive est OK ou pas :

letters −tqq

Pour décompacter tout le contenu dans le dossier courant, en recréant tous les fichiers et sous-dossiers si nécessaire :

letters

Pour extraire tous les fichiers texte *.txt (sous Unix encadrez le « * ») :

letters *.txt

Pour décompacter tout sauf les fichiers *.txt :

letters -x *.txt

Pour décompacter seulement le fichier README vers la sortie standard (l’écran) :

letters -c README

Pour afficher seulement le commentaire de l’archive zip :

letters −z

LIMITATIONS

La limitation principale et fondamentale d’unzipsfx est qu’il n’est pas portable à travers les architectures ou les systèmes d’exploitation, et ainsi le sont donc les archives résultantes. Pour certaines architectures il y a cependant une portabilité limitée (ex. quelques variantes d’Unix basées sur Intel).

Un autre problème avec l’implémentation actuelle est que toute archive ayant du « déchet » préfixé au début n’est plus techniquement un fichier zip (à moins que zip(1) soit utilisé pour ajuster les points d’entrée stockés dans l’archive de manière appropriée, comme mentionné ci-dessus). unzip(1) prend en compte les octets en préfixe et les ignore puisque certains protocoles de transfert de fichiers, notablement MacBinary, sont aussi connus pour préfixer des octets inutiles. Mais la suite d’archivage de PKWARE peut ne pas être capable de traiter l’archive modifiée à moins que ses points d’entrée n’aient été ajustés.

unzipsfx ne connaît pas le PATH de l’utilisateur courant, donc en général l’archive auto-décompactable doit être dans le dossier courant quand elle est lancée, ou alors un chemin complet doit être fourni. Si un utilisateur tente de décompacter une archive dans le PATH mais pas dans le dossier courant, unzipsfx va afficher un avertissement, « je ne peux pas me trouver. » Ceci est toujours vrai sous Unix, et peut être vrai dans certains cas sous MS-DOS, suivant le compilateur utilisé (Microsoft C donne le nom complet du programme, mais d’autes compilateurs peuvent ne pas le faire). Sous OS/2 et NT il y a des appels système qui fournissent le chemin complet, donc l’archive peut être appelée depuis n’importe quel dossier du PATH de l’utilisateur. Le cas n’est pas connu sous AmigaDOS, Atari TOS, MacOS, etc.

Comme mentionné ci-dessus, certaines fonctions de unzip(1L) ont été supprimées pour diminuer la taille de unzipsfx : informations d’utilisation et de diagnostic, fonctions de listage et d’extraction vers d’autres dossiers. De plus, une seule méthode de compactage est supportée. Cependant, cette dernière limitation ne concerne que les créateurs des archives SFX.

Les utilisateurs de VMS doivent savoir comment déclarer les archives auto-décompactables comme commande externe afin d’utiliser les options d’unzipsfx. Ceci n’est pas nécessaire pour une simple extraction, mais la commande devient alors, par exemple, « run letters » (pour continuer les exemples donnés ci-dessus).

unzipsfx requiert sur Amiga un programme spécial, MakeSFX, afin de créer des archives auto-décompactables qui fonctionnent ; une simple concaténation ne fonctionne pas. (Pour les utilisateur techniciens, l’archive attachée est définie comme un « debug hunk. ») Il peut y avoir des problèmes de compatibilité entre les niveaux de ROM des anciens Amigas et les plus récents.

Tous les bogues actuels d’unzip(1L) sont aussi dans unzipsfx.

DIAGNOSTICS

Les valeurs de retour d’unzipsfx sont identiques à celles de unzip(1L) ; veuillez vous référer à la page de man correspondante.

VOIR AUSSI

funzip(1L), unzip(1L), zip(1L), zipcloak(1L), zipgrep(1L), zipinfo(1L), zipnote(1L), zipsplit(1L)

URL

La page de Info-ZIP est actuellement sur ftp://ftp.info-zip.org/pub/infozip/ .

AUTEURS

Greg Roelofs est responsable des modifications de base faites à UnZip afin de créer UnZipSFX. Voir unzip(1L) pour la liste actuelle des auteurs de Zip-Bugs, ou le fichier CONTRIBS dans la distribution du source Unzip pour une version complète.

TRADUCTEUR

José Jorge <jose.jorge@oreka.com> 2001


unzipsfx(1)