Parte de recuperar mi MacBook 2015 para desarrollo en 2026 fue reinstalar el entorno de trabajo desde cero, incluyendo Node.js y Claude Code. El primer obstáculo fue uno clásico que cualquiera que haya instalado paquetes globales de npm en macOS conoce: el error EACCES.
El error clásico
Este error aparece porque, por configuración de fábrica, npm intenta instalar paquetes globales en una carpeta del sistema (normalmente /usr/local/lib/node_modules) que pertenece al usuario root, no al usuario actual. Cualquier intento de escribir ahí sin permisos elevados falla.
Por qué la solución NO es sudo
La reacción más común es anteponer sudo al comando: sudo npm install -g algún-paquete. Funciona, pero introduce un problema a futuro: mezcla archivos instalados como root con archivos instalados como usuario normal dentro de la misma carpeta de Node. La próxima vez que intentes actualizar un paquete sin sudo, puede volver a fallar por permisos — o peor, puede crear inconsistencias difíciles de rastrear entre versiones de paquetes instalados con y sin privilegios de administrador.
La solución correcta: cambiar el prefix de npm
En vez de forzar permisos de administrador sobre una carpeta del sistema, la práctica recomendada es decirle a npm que instale los paquetes globales en una carpeta dentro del home del usuario, donde nunca hacen falta permisos elevados:
Estas cuatro líneas crean una carpeta propia para los paquetes globales, le dicen a npm que use esa carpeta como prefix, y agregan su ruta de binarios al PATH del shell para que los comandos instalados globalmente (como claude) se reconozcan desde cualquier carpeta.
Instalar Claude Code
Con el prefix configurado, la instalación de Claude Code queda limpia, sin necesidad de sudo:
Y para fijar el modelo por defecto según el plan que uses:
Buenas prácticas en hardware limitado
Con el entorno instalado, hay hábitos que hacen la diferencia en una Mac con RAM o CPU limitada:
- Lanzar
claudedesde la carpeta específica del proyecto, no desde el home — reduce el contexto que la herramienta necesita escanear - Evitar correr Docker y Claude Code al mismo tiempo durante builds pesados — ambos compiten activamente por CPU y memoria
- Cerrar pestañas de navegador innecesarias mientras trabajas con herramientas de terminal intensivas — como vimos en el artículo sobre Chrome vs Safari, cada pestaña de Chrome es un proceso adicional compitiendo por los mismos recursos
Ninguna de estas prácticas es exclusiva de hardware viejo — son buenos hábitos en cualquier máquina. Pero en una Mac 2015 con recursos limitados, la diferencia entre seguirlas o no es la que separa un entorno de desarrollo fluido de uno frustrante.
IA para empresas
Uso Claude Code en proyectos reales de clientes — desde diagnóstico hasta implementación. Si tu empresa quiere integrar IA en su flujo de desarrollo, hablemos.
Ver integración de IA para empresas →