Найти все библиотеки PPC, двоичные файлы и приложения в Snow Leopard - PullRequest
5 голосов
/ 10 сентября 2009

У вас есть какой-нибудь указатель на то, как написать скрипт, который будет искать в моей системе приложения, библиотеки (например, / usr / local / lib и / usr / local) и двоичные файлы, которые являются только PPC?

Я обновил свою систему с PPC Mac до Intel Mac с Leopard 10.5. Затем я обновился до Snow Leopard 10.6, который не поставляется с Rosetta. Так что я только сейчас осознаю все старые вещи PPC, которые остались в моей системе!

Ответы [ 5 ]

9 голосов
/ 11 сентября 2009

Команда 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

Итак, это просто вопрос правильного поиска и фильтрации. Примерно так должно найти все двоичные файлы в системе, которые имеют подраздел PPC.

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

КПП только немного сложнее. Для этого вам нужно выполнить три команды для создания 2 файлов в / tmp, первая из которых содержит список файлов PPC, а вторая - список 32- или 64-битных файлов x86. Для удобства 'ppc' соответствует ppc и 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

Затем немного сортируйте / uniq (просто сортирует пути и проверяет, что каждый двоичный файл указан только один раз):

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

Затем используйте diff (и немного больше обработки), чтобы выдать список файлов, которые только для ppc:

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

Конечным результатом должен быть список файлов, которые содержат только исполняемые ppc-разделы mach-o. Я бы посоветовал проверить список, прежде чем уничтожать что-либо.

Некоторые заметки:

Все вышеперечисленное выполняется в Терминале.

Это просто взломать; в моей системе все работало нормально, и я рад, что вы спросили, потому что я хотел знать то же самое. Но это всего лишь взлом.

3 голосов
/ 20 июля 2011

Чтобы найти Приложения, вы можете использовать System Profiler (Системная информация в Lion).

Посмотрите в разделе «Программное обеспечение» на боковой панели и выберите «Приложения» ... затем подождите долго, пока он собирает информацию.

2 голосов
/ 13 февраля 2013

Основываясь на ответе Кевина Балларда, этот работает в 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
1 голос
/ 11 сентября 2009

Также обратите внимание, что Rosetta поставляется с 10.6 - это только одна из опциональных установок. Проверьте DVD, который вы использовали для его установки.

0 голосов
/ 11 сентября 2009

На самом деле, он должен попросить вас установить его при попытке запустить одно из этих приложений.

...