Delirios de un Informático

Cómo añadir el locale gallego en Mac OS X

Apple no proporciona el locale gallego para Mac (el listado puede obtenerse con locale -a) por lo que al desarrollar aplicaciones que utilicen fechas en gallego se mostrarán las fechas en el idioma por defecto.

Añadir este locale es fácil (duplicar el español y editarlo) pero un script que lo automatice es mucho más cómodo. Por eso he añadido el repositorio Galician locale for Mac a mi GitHub con lo necesario.

Para hacerlo aún más rápido:

curl -fsSL https://raw.githubusercontent.com/vaites/galician-locale-for-mac/master/install.sh | bash

Lógicamente esto no añade las traducciones de la interfaz de Mac, sólo las definiciones para su uso en desarrollo….

Instalar Phalcon en el PHP “nativo” de Mac OS X

Phalcon es un excelente framework para PHP con la particularidad de estar programado en C como una extensión del lenguaje. Ha evolucionado muchísimo y se ha convertido, en mi opinión, en uno de los frameworks más completos e interesantes después de Laravel.

La instalación en Mac puede realizarse con Homebrew pero realiza la instalación de una versión de PHP aparte de la versión nativa de Mac OS X. Si queremos compilar la extensión de Phalcon sin más dependencias, los pasos a seguir difieren un poco de las instrucciones oficiales:

brew install gettext
brew link --force gettext
git clone https://github.com/phalcon/cphalcon
cd cphalcon/build/64bits
git checkout 1.3.4
phpize
./configure --enable-phalcon
make
sudo cp modules/phalcon.so /usr/lib/php/extensions/no-debug-non-zts-20121212

Siguiendo las instrucciones de la web oficial, nos encontramos con dos problemas: el primero es que no localiza el archivo libintl.h (de ahí el uso de Homebrew para instalar GetText) y el segundo es un fallo con _libintl_setlocale en ciertas versiones, que provoca el siguiente error:

dyld: lazy symbol binding failed: Symbol not found: _libintl_setlocale
  Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20100525/phalcon.so
  Expected in: flat namespace

dyld: Symbol not found: _libintl_setlocale
  Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20100525/phalcon.so
  Expected in: flat namespace

Este error se evita haciendo el checkout a la última versión publicada.

Cómo traducir nombres de directorios en Mac

Mac tiene una lista de directorios de sistema que se traducen automáticamente, como ~/Pictures, que se traduce a Imágenes en Finder. La lista de directorios y sus traducciones se encuentra en el siguiente archivo:

/System/Library/CoreServices/SystemFolderLocalizations/es.lproj/SystemFolderLocalizations.strings

Este archivo puede editarse para añadir nuevos elementos, pero está en formato binario, por lo que para editarlo hay que convertirlo previamente:

plutil -convert xml1 SystemFolderLocalizations.strings
vim SystemFolderLocalizations.strings
plutil -convert binary1 SystemFolderLocalizations.strings

Una vez añadidas las traducciones (o modificadas las traducciones existentes) es necesario que dentro de cada directorio traducido exista el archivo vacío .localized, para que Finder entienda que ese directorio tiene traducción. Hecho esto, hay que matar Finder (killall Finder) para que los cambios se apliquen.

Cómo instalar SQL::Translator en Mac OS X

Casi todas mis entradas que hablan sobre desarrollo asumen un funcionamiento sobre Linux, como esta sobre SQL::Translator. Al desarrollar ahora en Mac OS X he tenido que recurrir a este software, cuya instalación en Mac OS X es sencilla pero no tan rápida como tirar del repositorio de turno. Los comandos para realizar la instalación son:

sudo cpan
install SQL::Translator

La primera vez que se ejecuta CPAN tardará, ya que se configura pidiendo unos datos básicos y actualiza. Luego, una vez dentro del intérprete de Perl, el comando de instalación del módulo hará que se descargue e instale todo automáticamente, pero tardará un buen rato debido a las dependencias.

Solución al error “Operation not permitted” en Mac OS X

Tengo un disco duro formateado en HFS+ que me permite compartir archivos entre Linux y Mac OS X, ya que es el único sistema de ficheros que no me da dolores de cabeza en ninguno de los sistemas operativos. Tras unos meses de uso me topé con un directorio que no podría modificar desde Mac OS X de ningún modo, ni siendo administrador. Con estos casos, siempre recurro a la línea de comandos, pero ni aún así podía cambiar nada y obteniendo siempre el mensaje Operation not permitted al usar chown o chmod.

Tras intentar arreglar el problema sin éxito con chflags nouchg y chflags noschg tocó investigar un poco hasta dar con la respuesta: los flags de Mac OS X, que se pueden obtener con ls -lO:

tyrell:Shared david$ ls -lO
total 0
drwxr-xr-x   7 david  staff  -                        238 23 feb 09:19 Backup
drwxrwxrwx  13 david  staff  uappnd,opaque,compressed 442 13 mar 14:39 Common
drwx------@ 13 david  1000   -                        442 29 ene 09:20 Dropbox

El problema en mi caso es el flag opaque, que puede eliminarse del siguiente modo (al igual que el resto de atributos):

sudo chflags -R nouappnd,noopaque,nocompressed Common

Con estos comandos por fin pude modificar los archivos y eliminar los archivos de la papelera que siempre me indicaba que estaban bloqueados.