Problemas con un Open Directory Replica

En el laboratorio hay un servidor encargado de mantener una lista de los usuarios permitidos en el área; así como otro que actúa como espejo de esta información. El problema en este caso es que ese espejo, o réplica, de momento se olvidó de algunos usuarios.

Mientras que en el servidor principal el usuario es indetificado, en la réplica simplemente es marcado como desconocido, por lo que el usuario en cuestión no puede acceder a los recursos que tiene asignados.

Para remediar el asunto es necesario a veces con reiniciar el servidor réplica, pero en esta ocasión ni eso fue suficiente, por lo que hubo que hechar mano de recursos más radicales.

De inicio de eliminó el papel de réplica del servidor, convirtiéndolo en servidor autónomo, pero para poder borrarle por completo la memoria y volver a comenzar, son necesarios varios pasos adicionales.

Afortunadamente esos pasos están documentados en el sitio de Apple y, aunque son para la versión 10.4 del Mac OS X Server, casi se aplican de igual forma en la versión 10.5. La única cosa que no aplica es un comando de nombre NeST.

Después de seguir esos pasos fue posible crear nuevamente la réplica y recuperar la conexión de los usuarios.

Reparación de la base de datos del servidor de correo

El Servidor de correo incluido en el Mac OS X está compuesto en realidad por varios programas, cada uno encargado de distintas tareas (recibir, entregar, procesar, filtrar) sobre los mensajes que recibe.

De vez en cuando alguno de estos programas puede presentar algún problema y todo el conjunto comienza a fallar. El principal de estos componentes es un programa llamado “cyrus“, encargado de la entrega de correo y comunicarse con todos los demás.

Todo el correo que procesa es almacenado en una base de datos, la cual es suceptible de dañarse. Dependiendo del tamaño del daño el correo puede solo presentar avisos o, en el peor de los casos, no procesarse o perderse por completo. Para que esto no ocurra el mismo cyrus revisa el estado de estas bases de datos periodicamente e intenta arreglarlas en el momento.

Ocasionalmente estas acciones no logran su objetivo y resulta necesario intervenir manualmente. Para ello es necesario seguir unos pasos sencillos:

  1. Detener el servidor de correo
  2. Como usuario root ejeccutar los siguientes comandos:
    • sudo -u cyrusimap /usr/bin/cyrus/bin/ctl_cyrusdb -r
    • sudo -u cyrusimap /usr/bin/cyrus/bin/ctl_cyrusdb -c
  3. Arrancar nuevamente el servidor de correo

El primero de los comandos sirve para recuperar la información de las bases de datos y hace una limpieza de las mismas. El segundo comando hace una revisión del estado de las bases de datos y realiza un respaldo de ellas.

Software Update Server 10.5 para clientes más recientes

Entre los servicios incluidos en el Mac OS X Server hay uno que le permite funcionar como servidor de actualizaciones, de este modo es posible redirigir las computadoras del laboratorio para que consulten con este servidor por posibles actualizaciones en lugar de mandar a todas a conectarse a Internet.

Uno de los beneficios que esto tiene es que la única computadora que establece un enlace al exterior es el servidor mismo, consultando la disponibilidad de actualizaciones y copiándolas a su disco duro. En cuanto están disponibles, el resto de las computadoras realizan una conexión mucho más rápida y pueden descargar la actualización inmediatamente.

Un problema surge cuando la versión del Mac OS X Server en el servidor y en los clientes es diferente, ya que con cada actualización nunca falta que algo haya cambiado. Este es el caso en el laboratorio, donde el servidor tiene instalada la versión 10.5, mientras que los clientes tienen una colección de versiones que van desde 10.4 hasta 10.6.

Versiones iguales o previas a la instalada en el servidor no tienen problemas, pero las más recientes simplemente no funcionan.

Afortunadamente es posible adaptar el servicio incluido en el servidor para que pueda atender a los clientes más nuevos, pero se requieren varios pasos para lograrlo. Las instrucciones necesarias las encontré en los foros de discusión de Apple en una rama sobre este mismo tema.

Paso 1: Detener el “Software Update Server” (en adelante “SUS“).

Paso 2: Descargar la lista de catálogos que utiliza Apple.

Esta lista se encuentra en http://swscan.apple.com/content/meta/mirror-config-1.plist y deberá copiarse a: /usr/share/swupd/html/content/meta/mirror-config-1.plist

Paso 3: Modificar el archivo recién copiado.

Con nuestro editor de texto favorito hay que modificar el archivo dejándolo así:

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple Computer//DTD PLIST 1.0//EN”
    ”http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
    <dict>
        <key>PrimaryCatalog</key>
        <string>http://swscan.apple.com/content/catalogs/index.sucatalog</string>
        <key>CatalogsList</key>
        <array>
            <string>http://swscan.apple.com/content/catalogs/index.sucatalog</string>
            <string>http://swscan.apple.com/content/catalogs/others/index-leopard.merged-1.sucatalog</string>
            <string>http://swscan.apple.com/content/catalogs/others/index-leopard-snowleopard.merged-1.sucatalog</string>
        </array>
    </dict>
</plist>

Con estos cambios le estamos indicando al “SUS” qué archivos descargar, los cuales contienen los catálogos de las actualizaciones para cada versión del Mac OS.

Paso 4: Editar las preferencias del “SUS“.

Este archivo se localiza en /etc/swupd/swupd.plist y es neceario modificar la entrada metaIndexURL para que se vea así:

<key>metaIndexURL</key>
    <string>http://miservidor.com:8088/content/meta/mirror-config-1.plist</string>
<key>portToUse</key>

Con esto le indicamos al “SUS” que utilice esa lista en lugar de buscarla en el sitio de Apple (desde luego habrá que cambiar miservidor.com por la dirección correcta del servidor).

Paso 5: Reiniciar el “SUS“, esperar que decargue los catálogos de actualizaciones y haga las versiones locales de los mismos (van a aparecer en el directorio /usr/share/swupd/html/content/catalogs/others).

Paso 6: Crear algunos enlaces simbólicos necesarios.

Para que el “SUS” incluido en el Mac OS X Server 10.5 funcione como el de la versión 10.6, es necesario agregar unos enlaces que apunten a los catálogos recién copiados. Utilizando la Terminal:

cd /usr/share/swupd/html
ln -s /usr/share/swupd/html/content/catalogs/index.sucatalog .
ln -s /usr/share/swupd/html/content/catalogs/others/index-leopard.merged-1.sucatalog .
ln -s /usr/share/swupd/html/content/catalogs/others/index-leopard-snowleopard.merged-1.sucatalog .

Paso 7: Solo por si acaso, reiniciar el “SUS“.

Paso 8: Esperar a que el “SUS” baje todas las actualizaciones.

Paso 9: Hacer que los clientes pregunten al servidor por las actualizaciones.

Dependiendo de la versión del Sistema Operativo de cada computadora cambiará el catálogo de actualizaciones por el que pregutará. En cada equipo se deberá ejecutar el siguiente comando (como súper usuario y en una sola línea):

10.4:
defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL “http://miservidor.com:8088/index.sucatalog”

10.5:
defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL “http://miservidor.com:8088/index-leopard.merged-1.sucatalog”

10.6:
defaults write /Library/Preferences/com.apple.SoftwareUpdate CatalogURL “http://miservidor.com:8088/index-leopard-snowleopard.merged-1.sucatalog”

Igual que en el paso 4, deberá cambiarse miservidor.com por la dirección correcta del servidor.

Paso 10: Abrir el “Software Update” en las computadoras y ver como realizan el proceso de actualizción más rápido que nunca.

Maya 2010 en la línea de comandos

Entre las múltiples sorpresas que se pueden encontrar con las apliaciones para Mac OS X, especialmente cuando tienen tanta historia como Maya, es que no solo pueden funcionar a través de la interfaz gráfica, también pueden ejecutarse mediante la Terminal.

En el interior del paquete que es la aplicación “Maya 2010.app” se pueden encontrar varios mini-programas que únicamente pueden ejecutarse en la línea de comandos. Aunque uno no lo ve directamente cuando se abre el software de la manera regular, todos estos programas proporcionan la funcionalidad al Maya, resultando la interfaz gráfica una envolvente que los unifica y presenta de una manera más amable al usuario.

Hasta ahí todo va bien, si se utiliza la interfaz gráfica todos estos programas pueden irse llamando conforme se necesite y detrás de lo que vemos en pantalla realizan sus tareas obedientemente. Pero si se intenta utilizar la línea de comandos las cosas no funcionan tan sencillo.

Cuando se utiliza la línea de comandos normalmente se hace con archivos que ya no requieren de alteraciones y que se les aplicará alguna transformación o proceso específicos. De este modo se elimina la sobrecarga que implica cargar todos los recursos que utiliza la interfaz gráfica y dedicar el procesador de la computadora de lleno al proceso que nos interese aplicar a nuestros archivos.

Resulta que al intentar utilizar la línea de comandos para correr algún programa de Maya lo primero y único que sale es un error como el siguiente:

alex$ /Applications/Autodesk/maya2010/Maya.app/Contents/bin/maya myArchivo.mb
Error: could not find installed copy of Maya. Please install maya
or set MAYA_LOCATION environment variable to point to location

Al momento lo único que se me ocurrió fue intentar definir la variable de entorno MAYA_LOCATION de forma manual, para ver si con eso era suficiente:

alex$ export MAYA_LOCATION='/Applications/Autodesk/maya2010/Maya.app/Contents/bin'

No funcionó, al tratar de correr maya nuevamente apareció el error, pero ahora con algo distinto:

Error: No version of Maya found at MAYA_LOCATION
    MAYA_LOCATION = /Applications/Autodesk/maya2010/Maya.app/Maya.app
Error: could not find installed copy of Maya. Please install maya
or set MAYA_LOCATION environment variable to point to location

Intenté cambiar la variable de ambiente y ver qué pasaba:

alex$ export MAYA_LOCATION='/Applications/Autodesk/maya2010/Maya.app'

Exactamente el mismo error.

Buscando por Internet no encontré algo específico que ayudara a resolver este dilema, pero lo que si hallé en varios lugares fue una referencia a un archivo de nombre “maya.env“, en el cual supuestamente se define esa variable junto con otras más que los comandos de línea necesitan (ni idea que existieran más variables, posiblemente habría tenido de comenzar casi de cero si la primera hubiera funcionado y otra más apareciera en su lugar).

Resulta que tal archivo no existe por ningun lugar en los directorios del Maya, pero sí encontré otro de nombre “MayaENV.sh” y tal como era de esperarse, ahí están las definiciones de esa y las demás variables de ambiente.

Al ser un script lo indicado sería invocarlo directamente, pero resulta que no tiene los atributos de ejecución, por lo que no puede ser llamado; aunque lo de menos sería activarlos, lo ideal sería dejar la instalación del programa intacta, especialmente en el entorno de laboratorios donde el usuario de todas maneras no podría realizar esa modificación.

Pero lo que si se puede es cargar el contenido del archivo como parte de la inicialización del entorno de la Terminal:

alex$ source /Applications/Autodesk/maya2010/Maya.app/Contents/bin/MayaENV.sh

¡Listo!. Ya no más errores al momento de ejecutar el comando de Maya.

Para no tener que hacer esto cada vez que se quiera utilizar alguna de las herramientas de comandos, se puede modificar el archivo de perfil de la Terminal, agregando justo la línea anterior al archivo “~/.bash_profile“.

Cómo instalar iMovie HD en Snow Leopard

Cuando aparecío la versión de iMovie incluida el el paquete iLife ’08 mucha gente quedó decepcionada por que la nueva versión carecía de muchas de las opciones presentes en la anterior.

Debido a ello Apple decidió que los usuarios de iLife ’08 pudieran instalar la versión anterior y puso en su sitio web un instalador del iMovie HD (6.0), el cual primero verifica la existencia de la versión recién lanzada de iLife antes de permitir la instalación.

Cuando se lanzó el iLife ’09 la liga para descargar el iMovie HD desapareció, presumiblemente por que la versión de iMovie incluida ya igualaba en capacidades a la anterior. Desafortunadamente esto deja fuera a aquellas personas que prefieren la forma de trabajar que ofrece el iMovie HD por encima del iMovie ’09.

Quienes han intentado instalar el iMovie HD teniendo la versión del iLife ’09 se han encontrado con que no es posible instalarlo, ya que forzosamente busca la versión ’08 antes de permitir continuar.

Afortunadamente la solución es sencilla y sólo requiere una breve visita a la Terminal. Como usuario administrador y en una sola línea el comando es:

touch /Library/Preferences/com.apple.iLife08.plist

Lo que hace el comando es crear un archivo de preferencias vacío que, sorpresivamente, es todo lo que necesita el instalador del iMovie HD para funcionar.

Ajustando el tiempo de activación del ScreenSaver desde la Terminal

Esta tarea es sencilla: se abre el System Preferences, se selecciona Desktop & ScreenSaver, en la pestaña de ScreenSaver se ajusta el tiempo de activación y listo.

Desafortunadamente ya no es tan fácil cuando el ajuste debe de hacerse en decenas de computadoras, es ahí cuando interviene la automatización mediante scripts o comandos con el Apple Remote Desktop. En este caso el comado es:

defaults -currentHost write com.apple.screensaver idleTime 0

En este caso la parte “-currentHost” obtiene la dirección de la tarjeta de red de la computadora y la utiliza para acceder al archivo de preferencias adecuado para el equipo. Por otro lado, asignar un “0″ (cero) al tiempo de espera significa que el ScreenSaver no se activará, mientras que cualquier valor mayor a éste indicará la cantidad de minutos que deberán transcurrir para que comience a funcionar.

Forzando a “Mail” a copiar sólo la dirección de correo

En el programa de correo que viene con el Mac OS X es posible seleccionar alguna dirección incluida en el encabezado de un mensaje y ver que se despliega un menú con varias opciones para realizar con dicha dirección, entre ellas copiarla.

Lo que puede esperarse, y era la opción regular hasta el la versión 10.5 del Mac OS X, es que lo que se copie sea algo parecido a: nombreusuario@direccion.correo. Sin embargo en la versión de Mail incluida con el Mac OS X 10.6 “Snow Leopard” lo que se copia es algo como: Nombre Usuario <nombreusuario@direccion.correo>.

Para muchas cosas pudiera ser útil ese formato, pero en algún momento dado puede implicar un breve trabajo de edición para eliminar los signos de menor y mayor que, además del nombre de la persona. Para una sola dirección no es problema, pero si ha de repetirse varias veces entonces el proceso comienza a ser engorroso.

Para remediar eso es posible modificar las preferencias de Mail, desafortunadamente esa opción está oculta a la interfaz gráfica y únicamente es accesible mediante la Terminal a través del comando defaults.

Para hacer que Mail copie las dirección de la manera como hacía antes habrá que escribir en la Terminal (todo en una sola línea):

defaults write com.apple.mail AddressesIncludeNameOnPasteboard -bool NO

Si se quiere revertir el cambio y hacer que Mail se comporte como venía de fábrica entonces el comando será (también en una sola línea):

defaults delete com.apple.mail AddressesIncludeNameOnPasteboard

Hay que recordar que para que el cambio se efectúe es necesario cerrar Mail, ejecutar el comando y volver a abrir la aplicación.

Creación de un usuario utilizando la Terminal

Crear usuarios es una tarea fácilmente realizable mediante la interfaz gráfica del sistema, sin embargo, puede resultar útil para un administrador conocer el modo de hacer lo mismo mediante la línea de comandos, ya sea para agregar muchos usuarios de una sola vez o para un proceso de automatización.

El programa a utilizar se llama dscl y he aquí algunos ejemplos de su uso (es necesario ejecutarlos como root):

Para crear un usuario nuevo en el sistema local:
dscl / -create /Users/nuevoUsuario
Asignación de un shell adecuado:
dscl / -create /Users/nuevoUsuario UserShell /bin/bash
Agregar el nombre completo del usuario:
dscl / -create /Users/nuevoUsuario RealName "Nuevo Usuario"
Asignarle un número de id:
dscl / -create /Users/nuevoUsuario UniqueID 99999
Asignarle un id de grupo:
dscl / -create /Users/nuevoUsuario PrimaryGroupID 1000000
Asignarle un directorio base (home folder):
dscl / -create /Users/nuevoUsuario NFSHomeDirectory /Users/nuevoUsuario
Finalmente asignarle una contraseña:
dscl / -passwd /Users/nuevoUsuario PASSWORD
o bien:
passwd nuevoUsuario
Si acaso se desea que el nuevo usuario pueda administrar el equipo:
dscl / -append /Groups/admin GroupMembership nuevoUsuario

Hay ocasiones que el comando tal como aparece no se ejecuta, dando lugar a un mensaje de error; en esos casos se deberá cambiar la sintaxis:

dscl / …

por:

dscl . …

Proximamente: Modificación de la sintaxis del comando para agregar usuarios a un directorio maestro residente en otra computadora.

Primeras impresiones con el “Snow Leopard”

Cada vez que Apple actualiza el Sistema Operativo para sus computadoras resulta interesante leer sobre las aventuras que tienen los primeros en realizar la actualización. Esta vez me toca ser uno de esos pioneros.

Hoy recibí el disco con la nueva versión de dicho Sistema Operativo, el Mac OS X 10.6 “Snow Leopard”, aunque durante casi todo el día hubo actividad y no fue posible hacer nada hasta poco antes de salir, no pude resistir las ganas de realizar la actualización hoy mismo.

Para comenzar el instalador es muy sencillo, solo basta con arrancar la computadora desde el disco de instalación, seleccionar el idioma base y dar unos pocos clics más sobre los botones para avanzar con el instalador. Poco menos de una hora después la computadora se reinició y arrancó utilizando sus nuevas instrucciones de operación.

Después de ingresar la contraseña del administrador para iniciar el sistema todo se ve aparentemente igual, a fin de cuentas sigue siendo un “Leopardo“. No había ninguna actualización pendiente y el Disk Utility no tuvo muchos avisos al reparar permisos. A reiniciar.

En esta ocasión ingresé los datos de mi usuario regular (en serio, no utilizo la cuenta de administrador de mi propia computadora) y aquí aparecieron los primeros “negritos en el arroz“.

El Finder parecía no arrancar y en el Dock había dos iconos del Software Update, otras aplicaciones de arranque automático abrieron bien pero toda la computadora parecía trabada. Resultó que las dos instancias del Software Update estaban solicitando contraseña de administrador para poder instalar “Roseta” (la parte del sistema que permite que funcionen las aplicaciones que todavía tienen código para procesadores PowerPC), sin embargo dicha ventana no era visible, ya que cada vez que se activaba cualquiera de las instancias solo se le veía aparecer y desaparecer inmediatamente, haciendo imposible ingresar la contraseña.

Una rápida búsqueda en Google (desde otra computadora) arrojó que no era el único con esos problemas, pero afortunadamente alguien dió con la solución y de inmediato la puse en práctica: Eliminar la carpeta ~/Library/Preferences/ByHost

Desafortunadamente hubo que forzar la salida de esas instancias y casi fue necesario aplicar el botonazo a la computadora para poderla apagar, pero finalmente cedió y pude reiniciarla.

Nuevamente ingresando como el usuario regular se lanzaron las aplicaciones de arranque automático y las dos instancias del Software Update aparecieron otra vez, pero ahora las ventanas de contraseña si fueron visibles.

El problema en este momento fue la conexión a Internet de la Universidad ya que no fue posile descargar el instaldor de Roseta, por lo que tendrá que esperar hasta mañana.

Y antes de salir corriendo al camión me di cuenta de otra cosa: entre los scripts que vienen con el sistema había unos para el Finder con los que se pueden realizar operaciones con los nombres de los archivos de forma masiva (y que utilizo con frecuencia)… ¡Ya no están, han desaparecido!

Ahora será hasta mañana que intente averiguar qué otras cosas han sido modificadas en este nuevo “Leopardo“.

Ajustando la Terminal

La interfaz gráfica de la Macintosh ha tenido bastante desarrollo durante los años, es sencillo hacer modificaciones al sistema y personalizarlo de alguna manera, sin embargo, cuando apareció el Mac OS X todo lo que ocurre bajo la superficie pasó a ser manejado por una base Unix.

En ese momento el desarrollo de la interfaz gráfica ya no fue suficiente para alcanzar todos los rincones del nuevo Sistema Operativo, quedando como única alternativa el uso de la Terminal (o interfaz de línea de comandos) para realizar ajustes y personalizaciones más a detalle.

Si parte del trabajo es administrar una instalación masiva de equipos y varios servidores, desafortunadamente no hay escapatoria, se vuelve obligatorio aprender comandos Unix y meter las manos a la Terminal.

Aunque llevo varios años trabajando con la Terminal no había hecho modificaciones mayores a lo que viene de fábrica, sólo cambiar el color del texto y del fondo así como las dimensiones de la ventana.

En la versión del Mac OS X 10.5 la Terminal ahora tiene algunas opciones predeterminadas en lo que se refiere a los colores y hasta hace poco supe que, fuera de los colores base que se especifiquen, es posible que la Terminal muestre otros más mientras se trabaja. Desafortunadamente los resultados no son muy alentadores y hay momentos donde es difícil leer lo que aparece en pantalla:

Primera opción de presentación para la Terminal
Primera opción de presentación para la Terminal (tema “Homebrew”).

Segunda opción de presentación para la Terminal
Segunda opción de presentación para la Terminal (tema “Pro”).

Buscando un poco encontré que no es posible modificar los colores que utiliza la Terminal, al menos no de la manera como otras variantes de Unix o Linux pueden hacerlo. Sin embargo, siempre existe alguien más hábil que encuentra soluciones ingeniosas y en este otro blog me topé con la respuesta:

A black OS X Leopard Terminal theme that is actually readable

Él a su vez hace referencia a otro blog de Ciarán Walsh, quien modificó una extensión para la Terminal para que funcione en Leopard.

En resumen lo que hay que hacer es:

Hasta aquí ya es posible hacer modificaciones a los colores de la Terminal, pero se puede seguir un poco más para utilizar una plantilla:

  • Descargar el archivo con el tema base del blog de Todd Werth.
  • Ya descargado y descomprimido, hacer doble click al archivo IR_Black.terminal para instalarlo.
  • Marcarlo como ‘default’ si se quiere utilizar siempre.

El resultado es algo como esto:

Opción de presentación para la Terminal con el tema 'IR_Black'
Opción de presentación para la Terminal con el tema “IR_Black”.

Después de todo esto es posible modificar los colores a placer, tanto los iniciales como texto y fondo, como los adicionales que identifican los tipos de archivos en los listados:

Nuesvas opciones para modificación de colores adicionales
Nuevas opciones para modificación de colores adicionales.
Haz click sobre la imagen para ver una ampliación

Y para cerrar, en el mismo blog de Todd Werth encontré otro artículo que explica cómo personalizar la consola que se usa en la Terminal, agregando atajos, opciones para autocompletar comandos y otra serie de detalles que pueden hacer la talacha más llevadera mientras se utiliza esta interfaz:

Fun and profit by modifying your Bash startup files in OS X, Linux, and other fine unices