Pregunta

¿Tiene algún puntero sobre cómo escribir un script que busque en mi sistema aplicaciones, bibliotecas (es decir, / usr / local / lib y / usr / local), y binarios que son solo PPC?

Actualicé mi sistema de una Mac PPC a una Mac Intel con Leopard 10.5. Luego actualicé a Snow Leopard 10.6 que no viene con Rosetta. ¡Así que solo ahora me estoy dando cuenta de todas las cosas antiguas de PPC que quedan en mi sistema!

¿Fue útil?

Solución

El comando file puede detectar qué tipos binarios están disponibles en un archivo.

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

Entonces, solo es cuestión de usar buscar y filtrar adecuadamente. Algo como esto debería encontrar todos los binarios en el sistema que tengan una subsección PPC.

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

Sólo PPC es un poco más difícil. Para eso, querrá hacer tres comandos para crear 2 archivos en / tmp, el primero contiene una lista de archivos PPC y el segundo una lista de archivos x86 de 32 o 64 bits. Convenientemente, 'ppc' coincide con ppc y 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

Luego, ordena / une un poco (solo ordena las rutas y asegúrate de que cada binario aparezca solo una vez en la lista):

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

Luego, use diff (y un poco más de procesamiento) para arrojar la lista de archivos que son solo ppc:

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

El resultado final debe ser una lista de archivos que solo contengan secciones de mach-o ejecutables ppc. Yo sugeriría verificar la lista antes de ocultar cualquier cosa.

Algunas notas:

Todo lo anterior se hace en la Terminal.

Esto es solo un hack; funcionó bien en mi sistema y me alegro de que lo hayas preguntado porque quería saber lo mismo. Pero es solo un hack.

Otros consejos

Para encontrar aplicaciones, puedes usar el Perfilador del sistema (Información del sistema llamado en Lion).

Busque en " Software " en la barra lateral y seleccione " Aplicaciones " ... luego espere un largo tiempo mientras recopila información.

Basado en la respuesta de Kevin Ballard, este funciona en 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

También tenga en cuenta que Rosetta viene con 10.6, es solo una de las instalaciones opcionales. Comprueba el DVD que utilizaste para instalarlo.

De hecho, debería pedirle que lo instale cuando intente iniciar una de esas aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top