Trova tutte le librerie, i binari e le applicazioni PPC in Snow Leopard
-
05-07-2019 - |
Domanda
Hai qualche suggerimento su come scrivere uno script che cercherà nel mio sistema applicazioni, librerie (cioè / usr / local / lib e / usr / local) e binari che sono solo PPC?
Ho aggiornato il mio sistema da un Mac PPC a un Mac Intel con Leopard 10.5. Quindi ho aggiornato a Snow Leopard 10.6 che non viene fornito con Rosetta. Quindi ora sto solo realizzando tutte le vecchie cose PPC che sono rimaste sul mio sistema!
Soluzione
Il comando file
può rilevare quali tipi binari sono disponibili in un file.
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
Quindi, allora, si tratta solo di usare trova e filtrando in modo appropriato. Qualcosa del genere dovrebbe trovare tutti i file binari sul sistema che hanno una sottosezione PPC.
find / -perm -u+x ! -type d -exec file {} \; | grep ppc | awk '{print $1}'
Solo PPC è un po 'più difficile. Per questo, ti consigliamo di eseguire tre comandi per creare 2 file in / tmp, il primo contenente un elenco di file PPC e il secondo un elenco di file x86 a 32 o 64 bit. Convenientemente, "ppc" corrisponde a ppc e 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
Quindi, ordina / uniq un po '(ordina i percorsi e assicurati che ogni binario sia elencato una sola volta):
cat /tmp/x86 | sort | uniq > /tmp/x86.filtered
cat /tmp/ppc | sort | uniq > /tmp/ppc.filtered
Quindi, usa diff (e un po 'più di elaborazione) per visualizzare l'elenco di file che sono solo ppc:
diff /tmp/ppc.filtered /tmp/x86.filtered | grep -e '<' | awk '{print $2}' | perl -p -e 's/:$//'
Il risultato finale dovrebbe essere un elenco di file che contengono solo sezioni mach-o eseguibili ppc. Suggerirei di verificare l'elenco prima di eseguire l'annotazione di qualcosa.
Alcune note:
Tutto quanto sopra è fatto nel Terminale.
Questo è solo un trucco; ha funzionato perfettamente sul mio sistema e sono contento che tu l'abbia chiesto perché volevo sapere lo stesso. Ma è solo un trucco.
Altri suggerimenti
Per trovare le applicazioni, è possibile utilizzare System Profiler (Informazioni sul sistema chiamato in Lion).
Guarda sotto " Software " nella barra laterale e scegli " Applicazioni " ... quindi attendi a lungo mentre raccoglie informazioni.
Basato sulla risposta di Kevin Ballard, questo funziona in 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
Nota anche che Rosetta viene fornito con 10.6: è solo una delle installazioni opzionali. Controlla il DVD con cui lo hai installato.
In effetti, dovrebbe chiederti di installarlo quando tenti di avviare una di quelle applicazioni.