¿Cómo saber si M1 Mac tiene instalado Rosetta?

Estoy tratando de ejecutar solo software nativo. Así que me gustaría poder monitorear si Rosetta 2 está disponible o no.

No estoy preguntando si Rosetta 2 está funcionando . Estoy preguntando si Rosetta 2 está presente , es capaz de funcionar.

Sé que puedo clasificar en la columna Tipo de la lista de procesos que se ve en la aplicación Monitor de actividad para encontrar un proceso que se esté ejecutando actualmente a través de Rosetta 2 o que se esté ejecutando de forma nativa ("Apple"). Pero quiero saber si la capacidad de Rosetta en general se ha instalado/activado en general en mi Mac, incluso si ninguna aplicación se está ejecutando actualmente de esa manera.

Tengo instalado Rosetta, así que no puedo probarlo, pero arch -arch x86_64 CMDintento ejecutar CMD en modo x86. No estoy seguro de qué tipo de error obtiene si Rosetta no está instalado
En Información del sistema/Aplicaciones, puede ver si tiene uno de Intel. Si no, Rosetta 2 no funcionará.
Rosetta nunca se ejecuta como tal, solo se activa si inicia un ejecutable x86.
@nohillside Y la primera vez que lo hace, macOS pasa por un proceso para instalar/activar Rosetta 2 después de confirmarlo con el usuario. Estoy preguntando cómo saber si esa instalación/activación se ha realizado o no.
También recomiendo esta respuesta: stackoverflow.com/a/65347893/6852081
@ShaharGino ¡Qué bien! Sin embargo, no ayuda a determinar si Rosetta está instalada.

Respuestas (3)

El instalador de Rosetta 2 parece instalar al menos tres archivos:

$ lsbom -f /Library/Apple/System/Library/Receipts/com.apple.pkg.RosettaUpdateAuto.bom
./Library/Apple/usr/lib/libRosettaAot.dylib 100755  0/0 322368  1011814917
./Library/Apple/usr/libexec/oah/libRosettaRuntime   100755  0/0 352176  1937385839
./Library/Apple/usr/share/rosetta/rosetta   100644  0/0 64  1875722922

Por lo tanto, probar la existencia de cualquiera de ellos (o el contenido en /usr/libexec/rosetta) debería mostrarle si Rosetta realmente se instaló.

Gracias por una solución; votado a favor Espero algo un poco más de alta tecnología o más simple, como un valor oculto en la herramienta Informe del sistema.
No veo ninguna entrada de Rosetta 2 en la aplicación Información del sistema . Tampoco encuentro ninguna entrada útil de Rosetta en el .spxarchivo exportado desde esa aplicación. ¿A qué se refiere en Información del sistema como un indicador de que Rosetta está disponible?

Otra opción es verificar si el proceso oahd se está ejecutando;

pgrep oahd

Rosetta internamente se conoce como OAH . Si devuelve una identificación de proceso, sabrá que Rosetta está instalada. Yo uso el siguiente oneliner en mis guiones;

if [ $(/usr/bin/pgrep oahd >/dev/null 2>&1;echo $?) -eq 0 ]; then echo 'rosetta installed'; fi
Puedes hacerlo más corto simplemente usandoif [ $(/usr/bin/pgrep oahd) ]; then echo 'rosetta installed'; fi

Esta simple línea de una línea simplemente imprimirá Sí o No:

/usr/bin/pgrep -q oahd && echo Yes || echo No

Si está utilizando Jamf, este código creará un atributo de extensión y lo completará en consecuencia:

#!/bin/sh
#
# reports status of rosetta install

RESULT=$(/usr/bin/pgrep -q oahd && echo Yes || echo No)

echo "<result>$RESULT</result>"
La pregunta es: ¿Rosetta se está postulando?
@mmmmmm AFAIK oahdse ejecuta siempre (si Rosetta está instalado).