Trucos

MacPorts Unable to execute port: can’t read «build.cmd» (Xcode cmd tools)

MacPorts Unable to execute port: can’t read «build.cmd» (Xcode cmd tools)

Hay que reconocer que para los que venimos de Linux, tener a nuestra disposición los repositorios de MACPORTS en OSX es una gran comodidad. Por ello, como no podia ser de otra forma, he ido instalando, en mi viejo portatil, las herramientas primordiales para trabajar y mis pequeños proyectos y entre ellas los MacPorts y el Xcode.

La verdad es que no se si ha sido por no hacerlo en orden o si es porque las nuevas versiones de Xcode, al venir por la tienda de Apple en un formato diferente, no instalan todas las tools que antes estaban en el paquete, pero el caso es que, tras un tiempo avisando de que podría tener problemas con algún paquete (Warning: The Command Line Tools for Xcode don’t appear to be installed; most ports will likely fail to build.), me encontré con que la amenaza se materializó a la hora de ponerme a hacer un script en python.

Pensé, oye, voy a instalar Geany, que hace mucho que no lo uso y me dispuse a utilizar la comodidad de los macports cuando me encontré con el problema:


alvaro@mb1 [/SCRIPTS/python]$ sudo port install geany
Warning: The Command Line Tools for Xcode don't appear to be installed; most ports will likely fail to build.
Warning: See http://guide.macports.org/chunked/installing.xcode.html for more information.
---> Computing dependencies for geanyError: Unable to execute port: can't read "build.cmd": Failed to locate 'make' in path: '/opt/local/bin:/opt/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin' or at its MacPorts configuration time location, did you move it?
alvaro@mb1 [/SCRIPTS/python]$

El caso es que en este momento ya tenia instalado el Xcode pero supongo que haberlo hecho después de instalar y usar macports me esta pasando factura. Así pues vamos a configurarlo para que detecte las herramientas necesarias para compilar.

Lo primero que hice fue actualizar los macports:


alvaro@mb1 [/SCRIPTS/python]$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.1.3 installed,
MacPorts base version 2.1.3 downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version

The ports tree has been updated. To upgrade your installed ports, you should run
port upgrade outdated

Como no, tenia que probar ‘por si acaso’ pero el resultado seguía siendo el mismo, protestaba porque no encontraba las herramientas de compilar así que reemprendí la configuración necesaria ya que hoy era el editor Genie y podía prescindir de él pero mañana podría ser algo más urgente o importante y estaba claro que me iba a arrepentir de no haber seguido estos pasos hoy.

Asi que , manos a la obra:

Primero, abrir Xcode y seguir estos pasos:

Menu Superior –> Xcode –> Open Developer Tools –> More Developer tools

developerTools

Esto nos llevará a una página de apple donde lo primero que nos encontraremos será la necesidad de validar la entrada al sitio con nuestro appleID de desarrolladores (Tranquilos, la cuenta gratuita de desarrollador vale, no es necesario estar dado de alta en ninguno de los programas de desarrollador de pago).

Una vez allí tendremos que localizar el paquete que necesitamos para nuestra versión de OSX (y el que más actualizado esté) En mi caso ha sido fácil puesto que era el primero. Esto me hace pensar que los ordena según desde donde hayas llegado a esta web (Entiendo que la versión de Xcode) porque en este caso estoy desde Lion y hay paquetes mas nuevos de Mountain Lion, que deberían estar delante si solo se ordenase por fecha/version.

Tras haber localizado el paquete necesario para mi sistema, solo queda bajarlo:

Este el paquete en mi caso:

dscription

Al bajarlo, vemos que el instalador esta automatizado en un paquete estandar, así que solo nos queda hacer doble clic sobre el para que se inicie el clásico instalador.

Insisto, en mi caso es para un sistema Lion pero esto depende de la versión de OSX que tengamos.

 

install

Y una vez terminado ya podremos hacer uso de MacPorts sin problemas de que no encuentre las tools de Xcode que necesita.

Como nota adicional:

En el caso de geany, hay instrucciones diferentes a la inmensa mayoría de los macports. Son optativas pero hacen que luzca mejor con un par de pasos extra que, en mi caso, no han funcionado por un problema de incompatibilidades pero eso, es otro articulo 🙂

Sea como sea, os demo el enlace official pro si queries prober suerte, aunque repito, solamente afecta a temas estéticos:

http://wiki.geany.org/howtos/osx/running

Por mi parte, aquí termino, que por hoy, ya está bien 🙂

leer más

Mostrar una imagen o película desde applescript con Quicklook

Una de las tareas que, hoy por hoy, no podemos realizar con applescript (Y sin herramientas o aplicaciones de terceros) es mostrar una imagen o reproducir un video. Ciertamente, si bien es posible hacerlo llamado a alguna aplicación que si lo haga, si queremos que nuestro script sea portable y que funcione en cualquier equipo, esto es un problema puesto que no todo el mundo tendrá la aplicación que usemos para tales tareas y/o ganas de instalarla. Otro método que si nos permitiría reproducir el video o mostrar una imagen, sería recurrir al nuevo (Bueno, ya no tan nuevo) applescript studio basado en cocoa pero es algo más complicada la curva de aprendizaje, al menos inicialmente y requiere invertir un tiempo que no siempre tenemos así que si desechamos estas opciones vemos que hoy por hoy no es posible ¿O si?

Una de las características que más uso de OSX es el QuickLock, esa maravillosa ventanita que si tenemos un archivo seleccionado y pulsamos la barra espaciadora, nos muestra su contenido sin importar que sea video, imagen o archivos de texto (Eso sin contar con los plugins que permiten mostrar prácticamente de todo) así que ¿Porque no recurrir a ella desde nuestro script? Está claro que es la solución más rápida y factible que tenemos puesto que no es nada complicado de invocar y sabemos que está en cualquier Mac en el que se ejecute nuestro script así que, una vez más… manos a la obra 🙂

Esta vez es un script lo suficientemente pequeño y sencillo para no tener que ir explicando más profundamente de lo que lo que hacen las lineas de comentarios en el mismo script.

-- Primero definimos el handler
on abreQuicklook(elArchivo)
-- Convertimos el formato de la ruta
set laRuta to quoted form of (POSIX path of elArchivo) as string
-- Llamamos a Quicklook desde la linea de comandos
do shell script ("qlmanage -p " & laRuta)
end abreQuicklook

-- Solicitamos un archivo
set elArchivo to (choose file with prompt "Seleccione una imagen o video…")

-- Llamamos a nuestro hadler pasándole la ruta al archivo
abreQuicklook(elArchivo)

Y ya!! con esto veremos que, con muy pocas lineas, tenemos un script capaz de mostrar contenido multimedia, sin recurrir a ninguna app de terceros, la cuál es posible que no esté instalada en cualquier mac.

leer más

Solución a los iconos bloqueados en la barra de herramientas de Finder tras la actualización a Lion

Con la actualización a Lion, tenia una pequeña aplicación (llamada Go2Shell) que ha dejado de funcionar. Dicha aplicación, descargada de la Mac App Store, tenia como finalidad «Abrir la terminal» y el sitio optimo para utilizarla era arrastrándola a la barra de herramientas del Finder (La barra que hay en la parte superior de toda ventana del Finder, si está habilitada la opcion de que se muestre en el menú Visualizacion del mismo Finder) para que, en cualquier carpeta que visualizaras a través del Finder, estuviese el botoncito que, al pulsarlo, abría una terminal en la misma carpeta, haciendo bastante cómodo el proceso. Por desgracia, este botón ha comenzado a mostrar un error al pulsarlo y para mi sorpresa, al tratar de eliminarlo de la barra de herramientas del Finder, no se puede.

Apartando por un momento este inconveniente, me he puesto a buscar un pequeño applescript que había hecho hacia tiempo para esto mismo con la finalidad de sustituir el programita pero, por despiste, he añadido otro script a la barra de herramientas de Finder, consiguiendo tener 2 iconos en dicha barra que no funcionaban y que no podía quitar por lo que me he puesto a investigar un poco y, por suerte, he encontrado una soluciónpara eliminar dichos botones, que resultan bastante molestos al no servir para nada.

Estos son los pasos a seguir…

Lo primero que hay que hacer es ir a la siguiente ruta….


Carpeta de usuario/Library/Preferences

Hay nos encontraremos varios archivos del tipo «com.apple.xxxxx.xxxxx»

Estos archivos son los famosos property list (PLIST) en formato binario y antes de tocar ninguno de ellos, el primer paso a realizar es hacer una copia del que vamos a editar, por si se tocase algo más de lo debido y generásemos un nuevo problema.

Dado que el archivo sobre el que vamos a trabajar es «com.apple.finder.plist», lo que toca es realizar una copia del mismo a un lugar seguro.

Ahora que ya tenemos una «red de seguridad» ante posibles accidentes 😉 tendremos que editarlo y dado que está en binario, si no tenemos un editor de archivos PLIST, tocará convertirlo a formato de texto. Para este paso tendremos que abrir un terminal y ejecutar el siguiente comando….


plutil -convert xml1 com.apple.finder.plist

Una vez aplicada la conversión del formato, ya podemos abrirlo con un editor de texto como, por ejemplo, TextMate. Al hacerlo, veremos que tiene un montón de lineas aunque a nosotros solamente nos interesan dos de ellas (Dos han sido en mi caso, realmente es una por cada icono añadido por nosotros que queramos quitar y digo añadido por nosotros porque para los propios del Finder se puede hacer desde las opciones, sin falta de tanto paso)

Así pues, buscaremos un bloque parecido a este:

TB Item Identifiers

com.apple.finder.BACK
NSToolbarFlexibleSpaceItem
com.apple.finder.SWCH
com.apple.finder.ARNG
NSToolbarSpaceItem
com.apple.finder.QUIK
com.apple.finder.ACTN
NSToolbarFlexibleSpaceItem
com.apple.finder.loc
com.apple.finder.loc
com.apple.finder.INFO
NSToolbarFlexibleSpaceItem
com.apple.finder.SRCH

En este bloque, las lineas que tendremos que eliminar son las que ponen lo siguiente:


com.apple.finder.loc
com.apple.finder.loc

Una vez eliminadas ya habremos solucionado el problema y solamente nos quedaría reinciar el Finder. Para hacerlo, basta con aplicar desde una terminal el siguiente comando…


sudo killall Finder

Esta orden, nos solicitará la password y una vez aplicado veremos como el Finder se cierra y a continuación se vuelve a abrir solamente que esta vez, los molestos iconos no aparecerán en la barra de herramientas, dejando el espacio que ocupaban completamente libre para dejarlo vacío o para añadir nuevos botones (Eso si, sería bueno que, si añadimos nuevos botones, esta vez sean scripts o aplicaciones que funcionasen 😛 )

Como alternativa, también seria posible directamente eliminar dicho archivo y reinciar el Finder, ya que esto hace que se genere de nuevo y, aunque a priori pueda parecer más rápido o cómodo, hay que tener en cuenta que se perderían todos las configuraciones/personalizaciones que hubieran sido hechas sobre la barra de herramientas y por supuesto, que sería menos entretenido y menos didáctico que hacerlo a mano borrando las lineas implicadas.

leer más

Truco: Pseudo-Putty escondido en Mac

Truco: Pseudo-Putty escondido en Mac

El artículo de hoy trata sobre un sencillísimo truco que viene como anillo al dedo a todas esas personas que me encuentro en los foros buscando una versión de putty para Mac, la cual no es necesaria en la mayoría de los casos ya que se puede tener diferentes sesiones preconfiguradas, de prácticamente cualquier protocolo de conexión para el que tengamos una herramienta en la terminal. No obstante, siempre se puede recurrir a la versión de putty de Mac Ports , aunque a continuación verá que no es necesario recurrir a software de terceros.

Lo primero que haremos es abrir una terminal, ya sea desde Spotlight, otro lanzador de aplicaciones o simplemente desde aplicaciones –> Utilidades –> Terminal.

Una vez abierta la terminal, tendremos que situarnos en el menú de la aplicación (Barra superior) –> Terminal –> Preferencias (O bien pulsar las teclas «comando + ,») para seleccionar la pestaña AJUSTES.

Preferencias del terminal en OSX

Preferencias del terminal en OSX

Ahora vamos a añadir una nueva configuración a las ya existentes en el terminal. Para ello solamente habrá que pulsar el botón «+» (El que está marcado en la anterior captura) y asignarle un nombre.

IMPORTANTE: Cuidado con esto, al menos en mi caso, cuando creo una nueva configuración para la terminal, se asigna de forma automática la marca «Por omisión». Esto significa que será la configuración que se abrirá por defecto cuando iniciemos la aplicación terminal. Para cambiarlo, solamente tendremos que situarnos en la que queramos que sea la configuración por defecto al abrirse y pulsar el botón a la derecha del «+», el que trae escrito «Por omisión» y veremos como le añade ese mismo texto a la opción seleccionada.

Si no cambiamos de pestaña (Texto) tras ponerle nombre a la nueva configuración creada, en las opciones de la derecha podremos cambiar el color de las letras, del cursor… etc. Para cambiar el color del fondo, tendremos que avanzar una pestaña más y situarnos en «VENTANA» donde además del color de fondo podremos ponerle un nombre (El que aparece en la parte de arriba de la ventana), establecer el tamaño inicial de la misma y algunas otras cosillas.

Para continuar configurando lo importante de este artículo tendremos que situarnos en la pestaña «SHELL» donde podremos ver en primer lugar un campo check sin marcar bajo el que está la opción «Ejecutar comando».

Pestaña Shell en las preferencias del terminal

Pestaña Shell en las preferencias del terminal

Esa opción es la que nos permitirá iniciar de forma automatizada una sesión de cualquier tipo siempre y cuando esté instalado el comando adecuado para ello y teniendo en cuenta que OSX contiene ssh, ftp, rlogin, telnet, samba.. etc etc, las posibilidades son enormes.

No obstante, para seguir con el ejemplo, veamos como se configuraría alguna de las sesiones.

Lo primero seria, por supuesto, marcar la casilla de «Ejecutar comando» para poder escribir, en el campo de texto, el comando en cuestión que sería, por ejemplo:

Para una sesión normal y corriente de ssh:

ssh nombre_usuario@maquina -p puerto   (El puerto estándar se puede obviar)
ssh fulanito@Servidorejemplo.com -p 2222
En caso de que el servidor en cuestión no admita el nombre de usuario de la anterior forma, se puede escribir así también:

ssh ServidorEjemplo.com -l fulanito -p 2222

Por supuesto, el comando ssh admite muchísimos más parámetros pero sería estirar demasiado el artículo de hoy y para eso ya existen muchos manuales en la red, el comando man y documentación bastante. Respecto al resto de comandos como telnet, ftp o cualquier otro, el método sería el mismo, habría que añadir los parámetros correspondientes al comando para que inicie la terminal en cuestión arrancando una sesión preestablecida.

Ahora bien, para iniciar cualquiera de las configuraciones o sesiones preconfiguradas que hemos añadido, tendremos 2 opciones:

La primera es, desde esa misma ventana de preferencias, una vez esté terminada la configuracion del terminal en cuestión, solamente tendremos que arrastrarla desde su respectivo icono de la parte izquierda de la ventana (El que tiene la imagen en minuatura de la consola y el nombre de la misma) hasta donde queramos ubicar el archivo lanzador de la misma. Por supuesto, si se hace doble clic sobre ese archivo, la sesión se inicia.

Creando un botón para la sesión preconfigurada

Creando un botón para la sesión preconfigurada

La otra forma que hay es más tradicional y es, abrir una terminal y moverse por el menú de la aplicación (Barra superior) –> Shell –> Nueva Ventana –> Sesión (Aquí aparecerá el nombre que se le ha puesto en la ventana de configuración).

Iniciar sesión preconfigurada

Iniciar sesión preconfigurada

Por supuesto, partiendo de estas dos formas, existen ya múltiples variedades como lanzador de aplicaciones, servicios, asociación de atajos de teclado…etc etc pero eso, es otro artículo 😉

leer más

MiniScript VBS para avisar de nuevo correo

Este pequeño Script fue ideado para un caso muy concreto aunque se puede adaptar bastante más según las necesidades. En este caso, lo explicaré según el ámbito para el que fué ideado y que no es otro que el estar asociado a una regla de Outlook para activarse en cuanto llegue un correo de extrema importancia que no puede demorarse sin ser procesado.

Como he dicho antes, este VBScript fue diseñado para un entorno muy concreto que puedo resumir así:

  • Existen varias máquinas virtuales destinadas a la monitorización con diferentes herramientas.
  • Cada una de las máquinas tiene un Outlook configurado con la cuenta del cliente que representa.
  • Evidentemente, las máquinas están monitorizando por lo que no pueden tener el Outlook en pantalla.
  • Esto hace que, además de un equipo para trabajar, tengamos múltiples monitores con sus respectivas herramientas de monitorización abiertas de continuo.

En este entorno de trabajo se incorpora una nueva premisa: Si llegan correos de cierta aplicación, hay que procesarlos cuanto antes ya que tienen un tiempo de vida. En principio esto no es un problema pero dado que son varios monitores, que están a unos metros y que quienes los controlan tienen otras tareas, es relativamente sencillo que el paupérrimo aviso que nos muestra el Outlook se nos pase desapercibido de forma que solamente veremos ese correo tan urgente si hacemos un repaso máquina por máquina de forma manual, lo que tambien es bastante sencillo que transcurra más tiempo del debido entre repaso y repaso por lo que volvemos a influir negativamente en el tiempo de respuesta al correo urgente.

Si bien es cierto que las propias reglas del Outlook incluyen la posibilidad de mostrar un aviso en pantalla, este tampoco es realmente eficaz, al menos en este entorno, ya que no siempre se muestra encima de todas las ventanas (Haciéndolo quedar oculto) sino que alguna que otra vez falla y no sabemos porque, aunque con tanta máquina virtual, no es la primera aplicación que se nos vuelve loca. Así que tras barajar todas las posibilidades y probar algunas alternativas me he decantado por crear este pequeño VBScript que está resultando realmente eficaz y sencillo, combinación que lo hacen ser la solución perfecta, al menos en este caso. Además, gracias a su sencillez, es posible implementarlo en otros entornos haciendo unos cambios mínimos en el mensaje.

Veamos el Script:
Dim Shell : Set Shell = CreateObject("Shell.Application") : Shell.MinimizeAll
msgbox("Ha llegado un nuevo correo de APLICACION_ENVIADORA")

.Esta 2 lineas son el 75% de todo el proceso ya que el 25% restante es la regla que enlaza con este Script al darse la condición que le digamos.

La primera de las dos lineas lo que hará es ocultar TODAS las ventanas que tengamos visibles, es decir, es lo mismo que pulsar el boton de «Mostrar Escritorio».

Una vez que solo veamos el escritorio, nos mostrará un mensaje de advertencia informando de que ha llegado un nuevo correo de APLICACION_ENVIADORA. (Evidentemente la aplicación real no se llama así pero no creo que sea relevante para la explicación cual sea el nombre real de la aplicación).

Ahora solo nos queda ir al Outlook y entrar en:

Herramientas –> Reglas y alertas –> Nueva regla –> Comenzar regla en Blanco

Esto nos abrirá un pequeño asistente en el que podremos ir confeccionando los parámetros de la regla que, en este caso, quedarían así una vez terminada:

Aplicar esta regla a todos los mensajes procedentes

de  APLICACION_ENVIADORA@loquesea.com

y solo en esta máquina

iniciar Script_AppEnviadora.vbs


La primera parte de la regla es la condición, que en este caso comprobará si se cumple que el remitente de cada nuevo correo sea  APLICACION_ENVIADORA@loquesea.com que, en este caso, se trata de una aplicación y la parte otra parte de la regla, la relativa a la acción a desarrollar cuando se produzca la condición, es iniciar la ejecución de un programa, que en este caso, más que un programa es nuestro script de 2 lineas:  Script_AppEnviadora.vbs.

Esta combinación funciona realmente bien, os lo puedo asegurar y en un entorno de monitorización no hay nada mejor para llamar la atención de quien esté en el puesto que ocultarle la herramienta con la que monitoriza, es infalible. Eso si, hay que tener en cuenta un punto realmente importante, esta regla que hemos creado es una regla de cliente y por tanto es completamente necesario que el cliente esté funcionando, es decir, es necesario tener el Outlook abierto para que se ejecute pero eso no lo voy a automatizar ya que mi intención es mejorar la efectividad y hacer más cómodo el trabajo, no sustituir a las personas por Scripts o automatizaciones, que ya hay bastante paro estos días en los que vivimos!!!!

Descargar el Script: SCRIPT.VBS

leer más

TextMate 1.5.8 y Snow Leopard: Combinación de teclas perdida

Este pequeño truco, para mi ha sido una bendición y aunque no es realmente mío, creo que debo publicarlo sin dudar ya que, al menos para mi, es vital. El caso es que tras pasarme a Snow Leopard fui actualizando los programas que suelo usar y entre ellos el TextMate (ver 1.5.8) y aunque a simple vista todo funcionaba correctamente, cuando comencé a darle un uso intensivo descubrí, para mi horror, que la combinación de teclas que más uso, la de las teclas COMANDO + CURSOR para seleccionar una linea completa o desde el punto en el que nos encontremos hasta uno de los extremos, ya sea hacia el principio de la linea usando COMADO + FLECHA IZQUIERDA o hacia el final de la misma mediante COMANDO + FLECHA DERECHA, no funcionaban. Lo extraño es que esa combinación funciona en todos los programas ya que es un atajo de teclado del sistema.

Lo primero que hice fue pensar que en la configuración de TextMate encontraría alguna opción para habilitarlo o que, quizás era una combinación asignada ya a otra función pero no encontré nada, lo que me llevo a recurrir a nuestro queridísimo amigo Google.

Por suerte, en un foro de MacUpdate, encontré la solución en un Post de un tal MISHA y consiste en crear una carpeta y un archivo, en el caso de que no existan, ya que si no, bastará con editarlos y añadir cierta información en él.

La ruta es:
Carpeta de usuario /Library/KeyBindings/DefaultKeyBinding.dict
Dicho archivo, tendremos que editarlo para añadir las siguientes líneas, tal y como aparecen a continuación, al final del mismo:
"@\UF702" = "moveToBeginningOfLine:";

"@\UF703" = "moveToEndOfLine:";

"$@\UF702" = "moveToBeginningOfLineAndModifySelection:";

"$@\UF703" = "moveToEndOfLineAndModifySelection:";
Una vez con la información añadida y el archivo guardado, solamente nos quedará reiniciar el TextMate y volveremos a disfrutar de una combinación que, al menos como digo, en mi caso es de las más usadas.

TextMateís command-left/right arrow key functionality (one of the most commonly used keystrokes) is broken in Mac OS X 10.6 (Snow Leopard).
Fortunatelyí thereís a fix. Edit (or create) the file named ~/Library/KeyBindings/DefaultKeyBinding.dict and add the following lines to the end:
«@\UF702» = «moveToBeginningOfLine:»;
«@\UF703» = «moveToEndOfLine:»;
«$@\UF702» = «moveToBeginningOfLineAndModifySelection:»;
«$@\UF703» = «moveToEndOfLineAndModifySelection:»;
Quit and re-launch TextMate, and your precious key-combo should be working again.
leer más