Frage

Haben Sie einen Zeiger auf, wie ein Skript zu schreiben, dass mein System für Anwendungen suchen, Bibliotheken (d / usr / local / lib und / usr / local) und Binärdateien, die PPC sind nur?

Ich habe ein Upgrade mein System von einem PPC Mac mit einem Intel-Mac Leopard läuft 10.5. Dann verbesserte ich auf Snow Leopard 10.6, die nicht mit Rosetta kommt. Also ich bin erst jetzt alle alten PPC Dinge realisieren, die auf meinem System gelassen werden!

War es hilfreich?

Lösung

Der file Befehl kann erkennen, was binäre Typen in einer Datei zur Verfügung stehen.

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

So, dann ist es nur eine Frage der in geeigneter Weise finden und Filterung. So etwas sollte alle Binärdateien auf dem System finden, die einen PPC Abschnitt haben.

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

PPC ist nur ein wenig schwieriger. Dafür sollten Sie drei Befehle tun 2 Dateien in / tmp zu erstellen, die erste enthält eine Liste der PPC-Dateien und die zweite eine Liste von 32 oder 64-Bit-x86-Dateien. Günstig 'ppc' passt ppc und 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

Dann sortieren / Unik ein bisschen (nur die Pfade sortiert und stellt sicher, dass jeder binäre nur einmal aufgeführt):

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

Dann Verwendung diff (und ein bisschen mehr Verarbeitung) die Liste der Dateien zu spucken, die ppc sind nur:

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

Das Endergebnis sollte eine Liste von Dateien, die nur ppc ausführbare mach-o Abschnitte enthalten. Ich würde vorschlagen, die Liste zu überprüfen, bevor irgendetwas nuking.

Einige Hinweise:

Alle oben im Terminal durchgeführt wird.

Dies ist nur ein Hack; es funktionierte gut auf meinem System, und ich bin froh, dass Sie gefragt, weil ich das gleiche wissen wollte. Aber es ist nur ein Hack.

Andere Tipps

Anwendungen finden, können Sie System Profiler (Called Systeminformationen in Lion).

Sehen Sie unter „Software“ in der Seitenleiste und wählen Sie „Programme“ ... dann lange warten, während es Informationen sammelt.

Auf der Grundlage von Kevin Ballard Antwort, diese funktioniert 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

Beachten Sie auch Rosetta kommt mit 10,6 - es ist nur eine der optionalen installiert ist. Überprüfen Sie die DVD, die Sie zum Installieren Sie es mit.

In der Tat, es sollten Sie bitten, es zu installieren, wenn Sie versuchen, eine dieser Anwendungen zu starten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top