Dar de alta un Mac mini usado que llegó con dos versiones de macOS de retraso
La máquina estaba bien. Dieciséis gigas, un Apple M4, un borrado limpio. También tenía macOS 15.6.1, y el Xcode que damos a todos los clientes no se abre por debajo de la 26.2. Aquí te contamos cómo saberlo y las partes de la actualización que no son obvias. Al final está la lista que ahora repasamos antes de pagar por un Mac usado.
Lee el mínimo en el propio Xcode
No lo adivines por las notas de la versión. Xcode declara su mínimo en su propia lista de propiedades.
$ /usr/libexec/PlistBuddy -c "Print :LSMinimumSystemVersion" \
/Applications/Xcode.app/Contents/Info.plist
26.2Una máquina por debajo de eso se da de alta sin problemas y luego falla en la primera build del cliente. Nuestro script de alta ahora lo comprueba antes que nada, y se detiene mostrando el comando exacto para descargar una versión más nueva.
Actualización de Software solo muestra la versión mayor más nueva
Desde macOS 15, Ajustes del Sistema ofrecía macOS 27 y nada más. Las versiones mayores anteriores siguen existiendo. Tienes que pedirlas por su nombre, desde la línea de comandos.
$ softwareupdate --list-full-installers * Title: macOS 27 Golden Gate, Version: 27.0, Build: 26A428 * Title: macOS Tahoe, Version: 26.7, Build: 25G229 * Title: macOS Tahoe, Version: 26.6.2 ... * Title: macOS Sequoia, Version: 15.8 ... $ softwareupdate --fetch-full-installer --full-installer-version 26.7
La lista depende del modelo, así que ejecútalo en la máquina en cuestión. En la nuestra solo se ofrecía la 27, así que instalamos la 27 a propósito y no por defecto. En una flota, esa diferencia importa.
Antes de instalar una versión mayor nueva en una máquina de la flota
Todas las fórmulas de Homebrew que instalamos ya tenían bottle para la nueva versión. Por eso el alta tardó lo de siempre y no una tarde entera compilando Ruby.
Qué verifica el alta antes de poner la máquina a la venta
Pasar la comprobación de versión es donde empieza el trabajo, no donde acaba. Antes de ofrecer una máquina a nadie, tiene que demostrar cuatro cosas, y cada una se mide en lugar de suponerse.
- Un escritorio real. Un cliente VNC pide un framebuffer y cuenta colores. Más de cien mil colores distintos son un escritorio. Dos son una pantalla negra.
- Una compilación real.
xcrun swiftccompila y ejecuta un binario con la cuenta del cliente. - Una sesión iniciada.
whomuestra una línea console para la cuenta del cliente. - Telemetría llegando. El hub ve la máquina, su versión de macOS y su sesión en el panel de la flota.
La nuestra pasó las cuatro con macOS 27. Por eso está a la venta, y no por el número de versión.
El susto que no era un bug
Los dos primeros arranques tras el alta no iniciaron sesión automáticamente. En una versión mayor de macOS recién salida, eso parece una regresión, y casi lo documentamos como tal. No lo era.
El primer arranque estaba indexando un Xcode de 3,8 GB recién copiado, con una carga media de más de 160. El inicio de sesión no terminó a tiempo, y macOS activó lastLoginPanic en las preferencias de loginwindow. Ese flag hace que también se salte el inicio de sesión automático en el siguiente arranque. Borrar ese bloqueo y reiniciar con la máquina ya tranquila funcionó, con la misma contraseña y los mismos scripts, tanto con 8 como con 32 caracteres.
sudo defaults delete /Library/Preferences/com.apple.loginwindow lastLoginPanic sudo shutdown -r now
Lo que demostró que no era el nuevo sistema fue una prueba de control. Ejecutamos el mismo comando de diagnóstico en una máquina sana con la versión mayor anterior y obtuvimos el mismo error. Esa historia, y otras cuatro parecidas, está en comprobaciones que no pueden fallar.
Qué comprobar al comprar un mini usado
Nada de esto es específico del CI. Es lo que deberías comprobar antes de pagar por cualquier Mac usado. Nosotros solo tenemos más motivos que la mayoría para hacerlo bien a la primera, porque la máquina va a un cliente en menos de una hora.
Preguntas
- ¿Cómo instalo una versión de macOS que no aparece en Actualización de Software?
- Ejecuta softwareupdate --list-full-installers para ver todas las versiones que Apple ofrece para ese modelo. Después ejecuta softwareupdate --fetch-full-installer --full-installer-version 26.7 con la versión que quieras. El instalador aparece en /Applications.
- ¿Xcode 26.6 funciona en macOS 27?
- Sí. LSMinimumSystemVersion en el Info.plist de Xcode es 26.2, y eso es un mínimo, no una versión fija. Se abre y compila en la 27.
- ¿Instalo sin más el macOS más nuevo en una máquina de CI?
- Solo si lo decides a propósito. Una unidad con una versión mayor distinta del resto de la flota rompe la reproducibilidad para los clientes de CI. Comprueba antes que existen bottles de Homebrew para la nueva versión, o cada instalación compilará desde el código fuente.
- ¿Qué debo comprobar antes de comprar un Mac mini usado?
- Número de serie y modelo, RAM, el tamaño real del disco, la versión de macOS, que FileVault y el Bloqueo de activación estén desactivados, que Buscar esté desactivado y que no haya inscripción en un MDM. El nuestro se vendió como de 500 GB y tenía 256.
Haz tus propias cuentas con la calculadora o alquila un runner.