Parche OSX y MAMP con Macports

Esta mañana he instalado el último parche de seguridad de OSX. Siempre me gusta tenerlo todo a la última por si las moscas, y con las actualizaciones Apple no me había ocasionado ningún problema hasta ahora. Ojo, que yo creo que ha sido esa actualización, que tiene huevos que ayer me funcionara y esta mañana me he levantado, he hecho la actualización y ¡¡voilá!!, ya no me funcionaba nada…

Apache no arrancaba y me decía que un montón de librerías de mi /opt/local/lib tenían la arquitectura incorrecta:

libexpat.1.dylib: mach-o, but wrong architecture

El caso es que he tenido que rehacer la instalación completa (Apache, MySQL, PHP). Hasta he vuelto a instalar las XCode Tools por si con eso se arreglaba todo, pero no habia manera.

Bueno, el tema ha estado en que he tenido que hacer de nuevo toda la instalación de MAMP con Macports. Cual es mi sorpresa cuando a mitad de instalación, cuando iba por la mitad de la instalación de MySQL me ha dado un error, concretamente poniendo el password al usuario root:

mysqladmin5 -u root -p password <new-password>

Me decía algo como que no encontraba el socket de conexión a mysql “/opt/local/var/run/mysql5/mysqld.sock”. ¿Cómo podía ser? ¿¿Recien instalado todo?? Al principio he creido que podía ser algún problema de permisos pero nada más lejos de la realidad. He ido a la carpeta y efectivamente, el archivo mysqld.sock no estaba.

Después de darle muchas vueltas, de desinstalar y vuelta a instalar como unas seis veces me he dado cuenta que el archivo se creaba al instalar el servidor de mysql mediante la orden sudo port install mysql5-server pero que desaparecía en algún paso de la explicación. Siguiendo paso a paso he descubierto que la línea que hace que se cargue el servidor de mysql en el arranque del sistema borraba el socket de conexión…

Si si, como lo estás leyendo. La orden

sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

borra el socket de conexión. Así es que si a alguien le pasa lo mismo que haga lo que he hecho yo… pasar olimpicamente de esa linea.

Son las 23:18 y me voy a la cama.

Gracias Mr Jobs por este gran día de alopecia estresil.

Macports


Hace unos dias decidí prescindir de MAMP y hacerme una instalación a pelo de mi entorno de desarrollo AMP (Apache, MySQL, PHP), más que nada por los quebraderos de cabeza que me podría dar a la hora de actualizar cualquier cosa.

Decidí usar la instalación que tiene por defecto Leopard OSX (Apache2, PHP 5.2.11) e instalarme MySQL por mi cuenta. Grave error. Esta instalación es lo más básico que hay. Al empezar a trabajar con Symfony me di cuenta que no podía avanzar porque le faltaban varias librerías PHP, incluyendo una muy importante, la pdo_mysql.

Buscando la librería por internet me bajé un par de archivos ya compilados para la versión que tenia entre manos (tanto de sistema operativo como de mysql y php) y no me funcionaba ninguno. Si que me la mostraba al hacer un infophp() pero al utilizar php en el terminal siempre me decía que no podía cargar la librería.

Así que decidí compilarla yo. Para eso me bajé el código fuente de la libreria pdo_mysql y seguí los siguientes 4 pasos según esta página:

  • phpize
  • ./configure
  • make
  • sudo make install

Que facil habría sido si solo hubiera tenido que hacer esos cuatro pasos. En un principio tenía mal instaladas las XTools para hacer correctamente la compilación y posterior linkado. Despues de muchos quebraderos de cabeza decidí reinstalar XTools y conseguí compilar la dichosa librería. Cual es mi sorpresa cuando al instalar la nueva librería y arrancar apache me seguí diciendo lo mismo que con las librerías que me había bajado por internet.

Así es que la única solución era hacerme una nueva instalación de AMP completa. Para ello lo mejor que encontré fue MacPorts.

MacPorts es una especie de Synaptic de Ubuntu pero para OSX y mediante terminal en vez de tener interfaz gráfica. Pues me vino a las mil maravillas.

Este software es lo mejorcito que he visto para OSX en mucho tiempo. Simplemente decides que paquetes quieres instalar de la larga lista de paquetes disponibles mediante un port list en terminal, o si quieres buscar uno específico utiliza port search xxx. Seleccionas el paquete que deseas instalar y simplemente port install xxx, y a partir de ahí, lo único que tienes que hacer es sentarte y esperar a que termine. Una vez terminado el proceso, si hace falta alguna configuración adicional te lo mostrará como un mensaje en la consola.

Lo dicho, de lo mejorcito que he visto…