Pergunta

Você tem alguma dica sobre como escrever um script que irá procurar em meu sistema por aplicativos, bibliotecas (ou seja,/usr/local/lib e /usr/local) e binários que são apenas PPC?

Atualizei meu sistema de um Mac PPC para um Mac Intel rodando Leopard 10.5.Então atualizei para o Snow Leopard 10.6, que não vem com o Rosetta.Então só agora estou percebendo todas as coisas antigas do PPC que sobraram no meu sistema!

Foi útil?

Solução

O file O comando pode detectar quais tipos binários estão disponíveis em um arquivo.

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

Então, é apenas uma questão de usar localizar e filtrar adequadamente.Algo assim deve encontrar todos os binários no sistema que possuem uma subseção PPC.

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

Apenas PPC é um pouco mais difícil.Para isso, você vai querer executar três comandos para criar 2 arquivos em /tmp, o primeiro contendo uma lista de arquivos PPC e o segundo uma lista de arquivos x86 de 32 ou 64 bits.Convenientemente, 'ppc' corresponde 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

Em seguida, classifique/uniq um pouco (apenas classifica os caminhos e garante que cada binário seja listado apenas uma vez):

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

Em seguida, use diff (e um pouco mais de processamento) para exibir a lista de arquivos que são apenas ppc:

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

O resultado final deve ser uma lista de arquivos que contêm apenas seções mach-o executáveis ​​​​ppc.Eu sugeriria verificar a lista antes de destruir qualquer coisa.

Algumas notas:

Todos os itens acima são feitos no Terminal.

Isto é apenas um hack;funcionou muito bem no meu sistema e estou feliz que você tenha perguntado porque eu queria saber o mesmo.Mas é apenas um hack.

Outras dicas

Para encontrar aplicativos, você pode usar o System Profiler (chamado de informações do sistema em leão).

Olhe em "Software" na barra lateral e escolha "Aplicativos" ... depois aguarde muito tempo enquanto ele reúne informações.

Com base na resposta de Kevin Ballard, este funciona em 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

Observe também Rosetta vem com 10.6 - é apenas uma das instalações opcionais. Verifique o DVD com o qual você costumava instalá -lo.

De fato, ele deve solicitar que você o instale quando você tentar iniciar um desses aplicativos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top