Найти все библиотеки PPC, двоичные файлы и приложения в Snow Leopard

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

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Команда 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. Я бы посоветовал проверить список, прежде чем уничтожать что-либо.

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

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

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

Другие советы

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

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

На основании ответа Кевина Балларда, этот работает в 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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top