Je suis en train d'utiliser l'outil de ligne de commande zip sur OS X pour compresser un dossier de projet Xcode.
Ce dossier contient un fichier .framework pour OS X qui comprend des liens symboliques tels que xx.framework/Versions/Current
qui pointe vers xx.framework/Versions/A
. Lorsque je compresse le projet, puis le décompresse, les dossiers Versions/A et Versions/Current contiennent le même ensemble de fichiers - essentiellement ils sont contenus deux fois dans l'archive - je dois éviter cela.
Cependant, j'ai aussi des liens symboliques dans le dossier du projet qui pointent vers des fichiers de ressources qui doivent être copiés dans l'archive zip. Donc je ne peux pas simplement utiliser les options zip globales pour stocker les liens symboliques plutôt que les fichiers/répertoires pointés.
Comment puis-je créer un seul fichier ZIP où seuls certains liens symboliques sont stockés tandis que d'autres stockeront le contenu vers lequel ils pointent?
Est-ce même possible avec zip? Existe-t-il un autre outil compatible avec zip que je pourrais utiliser? Pourrais-je exécuter la commande zip plusieurs fois, en excluant/incluant certains fichiers tout en stockant les fichiers dans la même archive pour obtenir ce que je veux?
PS : Je ne peux pas avoir un zip à l'intérieur du zip. Une fois décompressé, le projet doit être utilisable et ne pas nécessiter la décompression d'un zip contenu.
Les choses que j'ai essayées:
zip -rq4y $ZIPFILE $TARGETFOLDER/xx.framework
zip -rq4u $ZIPFILE $TARGETFOLDER
L'idée était de d'abord zipper le .framework, en préservant les liens symboliques. Puis mettre à jour l'archive pour ajouter le reste des fichiers, y compris les fichiers/répertoires pointés par les liens symboliques qui ne sont pas déjà dans l'archive (ou du moins je l'espérais). Résultat: archive corrompue (Erreur 20 - Ce n'est pas un répertoire).
J'ai également essayé l'approche inverse, en excluant le framework lors du premier passage puis en mettant à jour l'archive avec le framework:
zip -rq4 $ZIPFILE $TARGETFOLDER -x xx.framework
zip -rq4uy $ZIPFILE $TARGETFOLDER
Résultat: archive corrompue (Erreur 21 - C'est un répertoire).