Trouvez toutes les bibliothèques, binaires et applications PPC dans Snow Leopard

StackOverflow https://stackoverflow.com/questions/1406456

  •  05-07-2019
  •  | 
  •  

Question

Avez-vous un pointeur sur la façon d'écrire un script qui recherchera dans mon système des applications, des bibliothèques (c'est-à-dire / usr / local / lib et / usr / local) et des fichiers binaires exclusivement PPC?

J'ai mis à niveau mon système d'un Mac PPC vers un Mac Intel équipé de Leopard 10.5. Ensuite, je suis passé à Snow Leopard 10.6, qui n’est pas fourni avec Rosetta. Donc, je ne fais que maintenant réaliser toutes les vieilles choses PPC qui restent sur mon système!

Était-ce utile?

La solution

La commande file peut détecter les types binaires disponibles dans un fichier.

file -b /usr/bin/atrm
setuid Mach-O universal binary with 3 architectures
/usr/bin/atrm (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/atrm (for architecture i386): Mach-O executable i386
/usr/bin/atrm (for architecture ppc7400): Mach-O executable ppc

Il suffit donc d’utiliser la recherche et le filtrage de manière appropriée. Quelque chose comme ceci devrait trouver tous les fichiers binaires sur le système qui ont une sous-section PPC.

find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}'

Seul le PPC est un peu plus difficile. Pour cela, vous voudrez faire trois commandes pour créer 2 fichiers dans / tmp, la première contenant une liste de fichiers PPC et la seconde une liste de fichiers 32 ou 64 bits x86. De manière pratique, 'ppc' correspond à ppc et ppc64.

find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}' > /tmp/ppc
find / -perm -u+x ! -type d -exec file {} \; | grep i386 | awk '{print $1}' > /tmp/x86
find / -perm -u+x ! -type d -exec file {} \; | grep x86_64 | awk '{print $1}' >> /tmp/x86

Ensuite, triez un peu / uniq (trie simplement les chemins et s'assure que chaque fichier binaire n'est répertorié qu'une seule fois):

cat /tmp/x86 | sort | uniq > /tmp/x86.filtered
cat /tmp/ppc | sort | uniq > /tmp/ppc.filtered

Ensuite, utilisez diff (et un peu plus de traitement) pour cracher la liste des fichiers au format ppc uniquement:

diff /tmp/ppc.filtered /tmp/x86.filtered | grep -e '<' | awk '{print $2}' | perl -p -e 's/:$//'

Le résultat final devrait être une liste de fichiers qui ne contiennent que des sections mach-o exécutables de ppc. Je suggèrerais de vérifier la liste avant de lancer quoi que ce soit.

Quelques notes:

Tout ce qui précède est effectué dans le terminal.

Ceci est juste un hack; cela fonctionnait parfaitement sur mon système et je suis heureux que vous ayez posé la question car je voulais savoir la même chose. Mais ce n'est qu'un hack.

Autres conseils

Pour rechercher des applications, vous pouvez utiliser System Profiler (Informations système appelées dans Lion).

Recherchez sous "Logiciels". dans la barre latérale et choisissez "Applications" ... puis attendez longtemps avant de collecter des informations.

D'après la réponse de Kevin Ballard, celui-ci fonctionne dans Mountain Lion:

mdfind -0 'kMDItemContentTypeTree == "public.executable"' | xargs -0 -n 1 sh -c 'lipo="$(lipo -info "$1" 2>/dev/null)"; if [[ "$lipo" == *ppc* && "$lipo" != *i386* && "$lipo" != *x86_64* ]]; then echo "$1"; fi' sh

Notez également que Rosetta est fourni avec la version 10.6 - il ne s’agit que d’une des installations optionnelles. Vérifiez le DVD que vous avez utilisé pour l’installer.

En fait, il devrait vous demander de l'installer lorsque vous essayez de lancer l'une de ces applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top