web-dev-qa-db-fra.com

Outils de ligne de commande Xcode 4.3

Apple a récemment publié Outils de ligne de commande :

  1. Quels sont les outils fournis dans le package Outils de ligne de commande?

  2. Y a-t-il une sorte de documentation autre que les pages de l'homme?

Veuillez noter que j'ai installé ces outils en ajoutant le composant spécifique en Xcode. En outre, il ne s'agit pas d'un projet Xcode, mais d'un package publié par Apple le 16 février 2012!

22
Alerty

Ouvrez les outils de commande DMG et vous trouverez un méta-package, que vous pouvez extraire avec la commande pkgutil --expand 'Command Line Tools.mpkg' metapackage. Ouvrez le metapackage/Distribution Fichier qui vient d'être extrait dans un éditeur de texte pour voir les packages comportant le méta-package:

com.Apple.pkg.DevSDK
com.Apple.pkg.X11SDK
com.Apple.pkg.QuickTimeSDK
com.Apple.pkg.OpenGLSDK
com.Apple.pkg.WebKitSDK
com.Apple.pkg.FireWireSDK
com.Apple.pkg.BluetoothSDK
com.Apple.pkg.CoreAudioSDK
com.Apple.pkg.JavaSDK
com.Apple.pkg.clang
com.Apple.pkg.llvm-gcc4.2
com.Apple.pkg.X11Documentation
com.Apple.pkg.DeveloperToolsCLI

Les fichiers de package correspondants se trouvent dans un répertoire caché Packages à côté de la métapackage. Leur contenu peut être répertorié avec pkgutil --payload-files.

Si vous avez un fichier sur disque et que vous voulez savoir quel paquet it provenait de:

$ pkgutil --file-info /usr/bin/clang
volume: /
path: /usr/bin/clang

pkgid: com.Apple.pkg.clang
pkg-version: 4.3.0.0.1.1249367152
install-time: 1342021874
uid: 0
gid: 0
mode: 755

Maintenant, certaines informations de bonus qui seront utiles si vous voulez Supprimer les outils de ligne de commande. Apple, dans leur sagesse infinie, déclinez-vous de fournir un outil pour le faire, mais nous pouvons obtenir les informations dont nous avons besoin en utilisant pkgutil pour afficher des informations sur les packages installés.

Premièrement, pkgutil --pkgs listera tous les packages installés. Comparez la sortie de la liste des packages ci-dessus.

pkgutil --info affichera des informations sur un package installé; par exemple:

$ pkgutil --info com.Apple.pkg.clang
package-id: com.Apple.pkg.clang
version: 4.3.0.0.1.1249367152
volume: /
location: /
install-time: 1342021874
groups: com.Apple.FindSystemFiles.pkg-group com.Apple.DevToolsBoth.pkg-group com.Apple.DevToolsNonRelocatableShared.pkg-group

pkgutil --files affichera le contenu d'un package installé, relatif aux champs volume et location champs donnés par pkgutil --info. Étant donné que les chemins absolus ne sont pas utilisés, vous ne pouvez pas simplement piper la sortie de cette commande à xargs rm -f Pour supprimer les fichiers d'un paquet; Vous devrez réparer vous-même les chemins vous-même, peut-être avec quelque chose comme pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done.

Une fois que les fichiers d'un paquet sont supprimés, pkgutil --forget devrait être exécuté pour supprimer des informations sur le package installé à partir de la base de données de packages.

Il devrait aller sans dire que vous devriez faire très attention si vous essayez ceci: vous êtes une faute de frappe à l'écart de la vissage de votre système si mal que vous " Je dois le réinstaller, ne rien dire de vos précieuses données!

pkgutil a quelques autres options utiles pour vérifier que les fichiers d'un paquet sont tous présents et pour la restauration de leurs autorisations; Voir sa page manuelle pour les détails.

En général, cela fonctionnera pour tout emballage, mais note que certains packages peuvent avoir des scripts intégrés qui sont exécutés lorsque le colis est installé; De toute évidence, simplement enlever les fichiers du paquet ne supprimera pas toutes les traces du colis de votre système. Vous devrez extraire le contenu de l'emballage et lire le code source de script, puis décider de la meilleure façon de défaire les effets du script vous-même.

12
Sam Morris

J'ai eu un problème similaire: je n'ai pas pu exécuter "faire" après la mise à niveau vers Xcode 4.3. Pour résoudre ce problème, je viens de définir ma variable de chemin pour inclure:

/Applications/Xcode.app/Contents/Developer/usr/bin
/Applications/Xcode.app/Contents/Developer/Tools

Une fois que j'ai été mis en place, remplacer mes anciennes entrées de chemin qui se réfèrent à/développeur, je pourrais exécuter une "marque" de la ligne de commande à nouveau.

1
S2VpdGgA