jueves, 31 de diciembre de 2009

Linux en Compact Flash

Para un cliente, al que ya le he realizado otros trabajos, tengo que preparar esta vez un servidor de copias de seguridad remoto.

Es bien sabido que las copias de seguridad son necesarias. Y por eso ya están haciendo copias de seguridad en un disco duro externo local. Si la máquina se estropea, se borran los datos accidentalmente, o cualquier cosa similar, recuperan los datos, que son imprescindibles para el negocio.

¿Y si un ladrón entra en la oficina y se lleva la máquina con el disco externo?

Ahí es donde entran las copias de seguridad remotas. Y este ordenador, que no va a tener otro trabajo que chupar datos remotos y guardarlos. Absolutamente nada más.

Por eso he elegido un ordenador pequeño, con una placa un poco más pequeña que una Nano-ITX, al que le he puesto una tarjeta Compact Flash de 2GiB como disco duro.

Y aquí viene lo bueno: instalar Linux en una tarjeta Compact Flash. Y la verdad es que no ha sido difícil.

La máquina es un Epatec eTC 2300. La verdad es que la empresa no me cae nada bien (por varias cosas), pero la maquinita es justo lo que necesitaba para este cliente. El arranque por PXE hizo la mitad del trabajo, y Debian el resto. Todo fue cosa de bajar el sistema netinst (instalación por red), poner un servidor DHCP y un servidor TFTP, y configurarlos para que mandaran el netinst como sistema operativo del eTC. Con eso, el eTC arrancó y empecé una instalación de una Debian normal y corriente. Lo único con lo que tuve un poco de cuidado fue al particionar (todas las particiones usan noatime) y luego poner particiones tmpfs para ciertas secciones muy variables como /tmp o /var/lock y /var/run. Ah, y por supuesto, /etc/mtab ya no es un fichero, es un enlace a /var/run/mtab.

Voy a tener un problema con /var/log. Se modifica bastante, pero no quiero perder los logs ni puedo enviarlos a otra máquina, precisamente porque si tengo que mirarlos es por un problema de red. Veremos cuanto aguanta la Compact Flash.

Pues eso... no es un Linux Embebido ni nada semejante, es una Debian normal y corriente, o casi.

miércoles, 18 de noviembre de 2009

Autoridad Certificadora OpenSSL

Ya una vez hablé en esta desbitácora de cómo crear una Autoridad de Certificación. Hoy retomo el tema, habiendo ampliado mis conocimientos acerca de OpenSSL un poco más desde entonces.

Sin entrar en detalles de qué es y para qué sirve una Autoridad Certificadora, voy a exponer en breve los pasos a seguir para tener una CA casera propia.

Estos pasos hay que llevarlos a cabo en un directorio cualquiera, dentro del cual aparecerá un nuevo directorio llamado demoCA.


  1. Generamos la clave privada de la CA con
    openssl genrsa -des3 -out CA_key.pem 4096
    que nos preguntará y verificará la contraseña con la que queremos proteger la clave.

  2. Creamos el certificado autofirmado de la CA con
    openssl req -x509 -key CA_key.pem -new -set_serial 0 -out CA_cert.pem
    que nos preguntará varios datos. El CN no puede estar vacío.

  3. Generamos la estructura de la CA con
    /usr/lib/ssl/misc/CA.pl -newca
    que nos preguntará por el certificado de la CA, a lo que responderemos
    CA_cert.pem


  4. Generamos el fichero de números de serie con
    echo 01 > demoCA/serial

  5. Movemos la clave de la CA y su certificado a los sitios previstos
    mv CA_key.pem demoCA/private/cakey.pem
    mv CA_cert.pem demoCA/cacert.pem


  6. Extraemos (si queremos) la cave pública de la CA a partir de la privada con
    openssl rsa -pubout -in demoCA/private/cakey.pem -out demoCA/cakey_public.pem



Y ya tenemos nuestra CA casera lista para trabajar.

Ojo: no pierdas nunca la contraseña que has introducido para cifrar la clave privada de la CA. Sin esa contraseña, toda la estructura de la CA queda inutilizada.

viernes, 6 de noviembre de 2009

Harto de correo basura que pasa el filtro

Pues eso, que me he hartado de ver que hay mensajes de correo basura que pasan el filtro de mi spamassasin. El problema no es el programa, que funciona muy bien, sino que hay mensajes que son emitidos correctamente, con reverse-DNS y todo eso, pero que sin embargo tienen un contenido que es pura carne en lata, o eso que los Monty Python dieron en llamar SPAM.

Pues nada, ni corto ni perezoso, y como ya me he hartado (y me fío del discriminado bayesiano del spamassasin) me he ido al /etc/spamassassin/local.cf y he añadido estas líneas al final:


score BAYES_80 4.0
score BAYES_95 4.5
score BAYES_99 5.0


Hala. Como mi umbral está en 5, arreglado.

martes, 20 de octubre de 2009

No perder datos ni tiempo

En el mundo empresarial los datos son dinero, y el tiempo también. Un estudio de arquitectura, por ejemplo, que pierda sus datos (planos, informes, fotografías, etc.) irá a la ruina o, como mínimo, pasará un muy mal trago. Así que hay que asegurarse de que los datos no se pierden, para lo que tenemos soluciones como RAID 1 para los fallos de los discos.

Pero los fallos de los discos no son la única causa de que se pierdan datos. De hecho, ni siquiera son la principal. Un error del usuario al borrar un fichero, o un fallo del programa, o cualquier otra causa que vaya al sistema RAID y corrompa el sistema de ficheros puede suponer un desastre casi tan grave, y mucho más probable. Así que hay que asegurarse de que los datos están en más de un sitio a la vez. RAID 1 solamente nos permite seguir trabajando si un disco se estropea mientras llega su recambio. Para las copias de seguridad, tenemos el maravilloso rsync y su intefaz dirvish.

Y como comentaba arriba, no se puede tampoco perder tiempo, así que los datos no solamente deben estar a salvo en la copia de seguridad, sino que en caso de que falle la máquina deben poder ser utilizados inmediatamente mientras el servidor de ficheros es reparado, con lo que las copias de seguridad deben realizarse en un disco externo que pueda enchufarse, provisionalmente, a otra máquina.

Este es el sistema que he montado para una empresa semejante a la que ponía de ejemplo: Un servidor dedicado, con dos discos duros iguales (pero de distintos lotes, para evitar que puedan tener los mismos microdefectos de fabricación que puedan causar su mortalidad infantil o senil a la vez) en RAID 1, salvo el sector de arranque y la partición /boot, que son idénticos en ambos. La zona RAID particionada a su vez mediante LVM, con una parte para el sistema y otra separada para los datos de los usuarios, que se sirven mediante SAMBA. Y finalmente, un disco duro externo, identificado mediante su número de serie, con formato FAT, donde se realizan las copias de seguridad mediante dirvish, que es montada justo antes de copiar y desmontada justo al terminar.

Este disco externo pueden los usuarios desenchufarlo en cualquier momento (aunque les recomiendo que no lo hagan a las horas de las copias ;) ) para disponer de las copias de seguridad en otra máquina, aunque debido a su formato se pierda una de las mejores características de dirvish, los enlaces duros entre copias de distintas fechas, y haya (además) habido que desactivar las opciones de copia de permisos y propietarios.

Así, sea cual sea el incidente (salvo un desastre mayor de la máquina, como un incendio), los usuarios podrán acceder a sus datos de trabajo.

Para alguien que levanta España, no los vamos a dejar sin trabajar, ¿no?

viernes, 11 de septiembre de 2009

Volviendo al hogar

Gracias a iarenaza, que confió en mí y en su propio buen criterio, ya estoy de vuelta en el lugar en que todo empezó, el sitio en que empecé a «bloguear» (yo prefiero decir «escribir») mis historias informáticas: la casa de la rubia.

Libertonia es, quizá, la mejor página sobre informática de España: los artículos no pasan a portada hasta que han sido revisados por los usuarios, y si las cosas son como eran, eso no ocurre si son tendenciosos, están mal escritos o cualquier otro defecto similar.

Realmente pensé que Libertonia estaba muerta, pero parece que no: no está muerta, simplemente yace eternamente.

martes, 1 de septiembre de 2009

RESHAPE es ineficiente

Fortran es un lenguaje pensado para escribir en el ordenador fórmulas matemáticas, o más en general, cálculos científicos. Y es muy bueno trabajando con matrices multidimensionales: se puede escribir


real(4) :: a(64,64,64)
real(4) :: b(10,10,10)

[...]

b=a(1:10,1:10,1:10)


y así, sin necesidad de bucles, copiamos un trozo de una matriz en la otra. O también podemos, para rellenar de datos una matriz:


real(4) :: a(1:64,1:64,1:64)
integer :: i,j,k

a=RESHAPE( (/ ( (/ ( (/ ( REAL((i-1+(64/2))/64)+1.0 ,k=1,64) /) ,j=1,64) /) ,i=1,64) /) , (/64,64,64/) )


para rellenar un cubo de datos de 64*64*64 con los valores 1 y 2. Esto es lo mismo que


real(4) :: a(1:64,1:64,1:64)
integer :: i,j,k

do k=1,64
do j=1,64
do i=1,64
a(i,j,k)=REAL((i-1+(64/2))/64)+1.0
end do
end do
end do


aunque la filosofía no es la misma. En el primer caso, creamos una ristra de 64*64*64 valores que después adaptamos a un cubo de lado 64. En el segundo caso calculamos los valores uno por uno y los vamos colocando en sus lugares de memoria. El segundo código parece más ineficiente, y puede que el compilador no lo sepa optimizar bien... pero el primero es el realmente ineficiente: compilarlo puede tardar muchísimo más, incluso hacerse eterno con valores mayores, mientras que el segundo se compila en un instante y se ejecuta en poco tiempo.

Recordemos, pues, que salvo en determinadas ocasiones, explícito es mejor que implícito, por mucho que les duela a los fortranistas de toda la vida.

lunes, 17 de agosto de 2009

StarCraft en Linux

Acabo de volver a jugar a StarCraft, ese maravilloso juego de Blizzard ambientado en el espacio. Y por supuesto, lo he hecho en Linux, aunque se trata de un juego que tengo para otro sistema operativo. Y ello gracias a una capa de emulación del API llamada Wine.

El objetivo de Wine es precisamente que los programas creados para Windows puedan ser ejecutados en Linux. Para ello, pone una capa entre el programa y el sistema de tal manera que las peticiones a Windows del programa son capturadas por Wine, que las transforma en peticiones a Linux.

Volver a tener a los Zerg bajo mis órdenes ha sido una maravillosa experiencia. Ya no se hacen juegos como los de antes, con buena jugabilidad y un guión serio.

La pena es que Wine no destaca precisamente por su manejo del sonido. Tiene la mala costumbre de requerir acceso exclusivo al sistema de sonido, ya sea OSS o ALSA. Y eso en KDE es una mala idea: o juegas sin sonido, lo que no es agradable, o no tienes sonido en el sistema. Yo, la verdad, si me pongo a jugar, quiero el sonido. Así que uso el siguiente truco:

~/.wine/dosdevices/c:/Archivos de programa/Starcraft$ artsdsp sh wine StarCraft.exe

lunes, 27 de julio de 2009

Copiar propiedades en Subversion

Un pequeño truco que utilizo para asignar a un fichero versionado con Subversion una propiedad tal y como la tengo en otro fichero. Normalmente la utilizo para la propiedad svn:keywords que suele tener el mismo valor en todos los ficheros de cada uno de mis proyectos.

svn propset svn:keywords "`svn propget svn:keywords ficheroviejo.c`" ficheronuevo.c

miércoles, 27 de mayo de 2009

Soporte 3D para una tarjeta nVidia

Comentaba ayer mis aventuras con Google Earth, cuyo resultado fue necesitar la aceleración 3D de mi tarjeta gráfica, una nVidia Quadro NVS 110M.

Desde que reinstalé la máquina, hace poco, con Lenny, había estado trabajando con el controlador libre nv, que fue automáticamente puesto en su sitio por la autoconfiguración de Xorg. Y la verdad, sin problemas.

Ahora bien, poner a funcionar la aceleración 3D tampoco ha sido demasiado complicado. En primer lugar, tuve que compilar el módulo del núcleo, cosa que module-assistant hizo por mí:

m-a a-i nvidia
En segundo lugar, añadir una línea a mi fichero /etc/X11/xorg.conf: cambiar
Section "Device"
Identifier "Configured Video Device"
EndSection
por
Section "Device"
Identifier "Configured Video Device"
Driver "nvidia"
EndSection
Y en tercer lugar, simplemente reiniciar la máquina. Nada del otro mundo, ¿verdad?

Lo que sí he notado es que, aparte de que la aceleración 3D ahora funciona, ha cambiado el tamaño de mis fuentes en la pantalla, con lo que, aparte de que he tenido que reordenar todos los iconos del escritorio, algunas aplicaciones que dependen del tamaño de la fuente dan mínimos problemas. Por ejemplo, gnumeric, que establece el alto de las líneas en función de la fuente.

Pero bueno, detalles menores que, en realidad, no molestan.

Google Earth en Debian

La verdad, esperaba encontrarme el Google Earth empaquetadito y todo, es que Debian me tiene malacostumbrado, la verdad, pero bueno, tenemos un precioso paquete llamado googleearth-package que lo que hace es bajarse el instalador oficial de Google y crear un paquete a partir de él, muy al estilo Debian.

Y la verdad, googleearth-package se instaló sin problemas y make-googleearth-package hizo su trabajo: él solito se bajó el instalador, lo descomprimió, compiló y empaquetó, y me dejó un bonito paquete. O casi.

El casi viene por un par de detalles. El primero es que la versión de googleearth-package de Debian 5.0 (llamada Lenny) no está pensada para la versión actual (en mi caso, la 5.0.11733.9347) del instalador de Google Earth, así que no bastó con decir make-googleearth-package sino que en su lugar tuve que decir make-googleearth-package --force. El segundo es que make-googleearth-package no funciona bien en un directorio que tenga el bit SGID activado, y el directorio donde lo intenté las primeras veces (un subdirectorio de /usr/src) lo tiene.

Y así, prácticamente en dos patadas, tuve mi Google Earth funcionando. Eso sí, funcionando a pedales: no tenía aceleración 3D en el ordenador. Pero eso es otra historia, y deberá ser contada en otra ocasión (Ende).

lunes, 18 de mayo de 2009

Descargar enlaces ed2k:// desde Firefox

La verdad es que he estado mucho tiempo sin poder hacerlo, pero tampoco me he puesto a buscarlo hasta hoy, y lo he resuelto en un par de minutos estando bastante cansado, con lo que quiero decir que la solución es bastante tonta.

Por un lado, aMule viene con un programa que se llama ed2k que se encarga, precisamente, de pasarle enlaces ed2k://.

Por otro lado, en el propio Iceweasel (o, para los que no usen Debian, Firefox), hay que cambiar la configuración a mano en esa página tan peligrosa y «no apta para manazas» llamada about:config. Ahí hay que añadir a mano un a nueva clave, network.protocol-handler.app.ed2k, y darle como valor /usr/bin/ed2k.

Y eso es todo. A partir de ese momento, basta pinchar en un enlace y ya el aMule se pondrá inmediatamente a bajarlo.

UPDATE: En Iceweasel 3 y superiores este sistema ya no funciona, pero la solución correcta está aquí.

viernes, 1 de mayo de 2009

Instalar Lenny

Con las copias de seguridad hechas (gracias a mi bienamado dirvish), voy a hacer una instalación desde cero de Debian 5.0 (antes conocida como Lenny). Ya después haré otras cosas feas como pasarme a testing (Squeeze) o incluso a unstable (Sid), con tal de que no se suban a la parra de KDE 4, que no quiero ni ver (al menos por ahora), pero quiero disfrutar de uno o dos días de estabilidad con mi portátil antes de lanzarme.

Disco duro externo

Finalmente me he comprado un nuevo disco duro externo. En realidad no ha sido un disco externo, sino un disco normal y corriente y una de esas cajas externas para meter el disco dentro.

La caja es la que se ve en la foto: una «MADE IN CHINA» de padre desconocido cuya página web soy incapaz de encontrar. El disco, en cambio, es un Seagate Barracuda (el ST3 500 41 8AS), un disco con interfaz SATA en el que creo que puedo confiar.

Ya les iré contando. De momento, voy a ponerme a configurar el dirvish.

lunes, 27 de abril de 2009

Servicio al cliente (II) - Refactored

Comenté en mi bitácora usual hace unos minutos cómo me fue con el Servicio de Atención al cliente de Dell. Y quería comentarlo de nuevo aquí, con algunos detalle técnicos más de los que puedo permitirme poner allí.

Viene el caso de que mi portatil se estropeó este fin de semana, y hace un rato llamé al servicio de Atención al cliente de Dell, en particular al servicio técnico.

El síntoma inicial fue que la pantalla estaba en negro. Por completo. Inicialmente pensé que tenía un problema con el salvapantallas o el ahorro de energía (lo que no sería novedad ya que llevo con problemas de ese tipo varios meses y no me he decidido a arreglarlo, sobre todo porque aún no tengo un disco de copias de seguridad), así que cambié a una consola y me empecé a mosquear: seguía en negro.

A ciegas me identifiqué con la consola como superusuario y reinicié el ordenador (no es difícil, basta con ir a una consola que sepas o suponga que on está abierta y poner el nombre de usuario, esperar un poco, poner la contraseña, esperar dos pocos, y escribir poweroff). Ahí empezó mi susto: el reinicio continuaba con la pantalla completamente en negro, tanto para la BIOS como para el GRUB como posteriormente. Curiosamente, la pantalla respondía perfectamente a las órdenes de cambio de brillo, pasando de negro oscuro a negro brillante. Apagué de nuevo el ordenador (lo tuve que hacer a lo bruto porque no me podía identificar en la consola, y no sabía por qué).

Al rato conseguí una pantalla externa y la probé: el modo de vídeo del arranque era inadecuado (80x24), el texto en pantalla aparecía desdibujado y era imposible iniciar el servidor gráfico. La conclusión era evidente: el problema no era de la pantalla, sino de la tarjeta gráfica. Y en un portátil, es parte de la placa base.

Al llamar hoy a Dell les indiqué los síntomas del problema, y me obligaron a hacer la prueba de acceso directo a la pantalla: encender el ordenador con la tecla Fn pulsada, introducir n y comprobar la pantalla. Y efectivamente aparecieron en mi pantalla los colores blanco, rojo, verde y azul, confirmando mi diagnóstico de que no se trataba de la pantalla sino de la tarjeta gráfica.

No consideraba yo necesaria la prueba, pero entiendo que me hicieran comprobarlo dado que muchas veces los usuarios, que no tienen apenas conocimientos sobre la máquina que usan (si se tratara de un coche no aprobarían el examen del carnet de conducir), creen que falla una cosa cuando se trata de otra.

En resumen, mañana tendré un técnico en mi despacho cambiándome la placa base completa por una nueva. Así es como se cuida a los clientes: respuesta adecuada y en un tiempo adecuado.

miércoles, 15 de abril de 2009

Ping en Jabber

Dear Lazyweb:

¿Alguien sabe cómo hacer un ping desde un programa de Jabber?

Gracias de antemano

domingo, 12 de abril de 2009

Un pequeño truco

A veces hay que trabajar en línea de comandos (o mejor, línea de órdenes) con nombres de ficheros con espacios. Y es un problema pasarlos por las tuberías (pipes), porque estas interpretan los espacios como separación entre argumentos.

Pongamos un ejemplo: hoy enchufé mi disco externo a un ordenador Windows y se me llenó de ficheros llamados Thumbs.db. Es un problema borrarlos uno a uno, así que lo más cómodo es usar find de una manera como ésta:

find . -name Thumbs.db | xargs rm -rf


Pero no funciona. Un fichero que se llame mountpoint/Mi Carpeta/Thumbs.db será entendido por xargs como dos ficheros distintos, mountpoint/Mi y Carpeta/Thumbs.db, que por supuesto no existen.

La solución es tan sencilla como:
find . -name Thumbs.db | sed '{s/ /\\ /g}'| xargs rm -rf
utilizando sed para escapar los espacios. Ojo, que no funcionará sin las comillas sencillas para escapar las barras invertidas.

martes, 3 de marzo de 2009

Estas cosas pasan

Lo mejor de tener un disco de copias de seguridad es que, si se te muere el disco duro, no pierdes la información.

Esto es cierto incluso si se muere el disco de las copias de seguridad, que es lo que me acaba de pasar. Hace un par de semanas vi que uno de mis discos externos de LaCie no funcionaba. Precisamente el disco de mis copias de seguridad.

Bueno, pues abrí la caja y vi que el disco interno era un Barracuda SATA de Seagate. No es en absoluto lo que entiendo por un mal disco.

Hoy he comprobado, enchufando el disco directamente a otro ordenador con SATA, que lo puedo dar por difunto. Pero en fin, no he perdido nada: todo lo que había eran copias de seguridad, así que lo único que me queda es rezar para que no se me estropee el disco de sistema antes de comprar otro disco externo para volver a empezar a hacer copias.

martes, 24 de febrero de 2009

Trabas

Uno de los culpables del calentamiento global es, sin duda, el cada vez más elevado consumo de energía por parte de los ordenadores. Y no solo por el CO2 que se emite al generar esa energía, sino por el propio calor que los procesadores desprenden. Basta con entrar a una sala de servidores decentemente refrigerada y acercarse a los armarios de cálculo para comprobarlo.

Pero no solo de servidores vive el hombre, ni solo a ellos les afecta el calor. De hecho, a los ordenadores portátiles les afecta más. Es bastante común poner un portátil sobre una mesa (con lo cual sus patitas lo separan de ésta ligeramente). Y también ponérselo sobre las piernas en el sofá, delante de la tele, y cosas parecidas. Pero el detalle importante de estas actitudes es que los portátiles se refrigeran por debajo, y si bloqueamos esa entrada de aire, o es insuficiente, el portátil se recalentará.

Incluso un portátil colocado sobre una mesa, levantado por sus propias patas de goma, se recalienta si está trabajando en serio. Claro que mucha gente no lo nota porque sus portátiles no hacen cálculo numérico, solamente escribir cartas y leer correos, pero... ¿de verdad quieres ver tu portátil trabajando con el estrangulador al 12%? O peor, ¿quemado?

Si, como yo, pones tu portátil realmente a prueba, no necesitas comprar esos elevadores USB con ventilador tan monos que hay en muchos sitios a la venta... sobre todo porque aparte de costar dinero, el ventilador USB consume más aún la batería del portátil (o eleva la factura de la luz). No. Basta con cuatro trabas de la ropa.

Lo hemos hecho


Finalmente, lo conseguimos, y cumplimos con la fecha de San Valentín.

Debian 5.0 (antes conocida como «Lenny») ya está en la calle.

Ahora es tiempo de arreglar los fallos que surjan y trabajar en la siguiente versión, «Squeeze».

lunes, 9 de febrero de 2009

fam

Odio famd. Cada vez más.

famd es el «file alteration monitor», un demonio que se encarga de estar al tanto de las modificaciones que puedan sufrir los ficheros. Gracias a él, un proceso cualquiera, como puede ser un gestor de ficheros, no necesita preguntar constantemente al disco si han ocurrido cambios en un fichero, sino que simplemente puede encargarle a famd que le avise si dichos cambios se producen.

El problema es que a veces famd se vuelve loco y empieza a utilizar toda la CPU disponible, lo cual es, en general, un engorro, y en particular para un servidor, un problema.

He acabado por quitarlo.

miércoles, 21 de enero de 2009

Cambiando de gestor de ventanas

Tan solo un rápido apunte. El gestor de ventanas es la parte del X Window System que se encarga de gestionar las ventanas, su posición y su decoración. Prácticamente siempre que tengas abierta una sesión de las X, tendrás un gestor de ventanas funcionando.

Y los gestores de ventanas se pueden sustituir unos a otros. Los gestores de ventanas decentes aceptan una opción --replace que les dice "si hay otro gestor de ventanas ejecutándose, ciérralo y ponte en su lugar, si puedes". Y también, los gestores de ventanas decentes reconocen que otro gestor de ventanas quiera reemplazarlos y saben quitarse limpiamente del camino y dejarle el sitio al nuevo.

Lamentablemente, no todos los gestores de ventanas son decentes.

Así que se planeta la pregunta de cómo, por ejemplo, ejecutar KDE con un gestor de ventanas que no sea kwin.

Y la respuesta es que hay que definir la variable de entorno KDEWM (por ejemplo en el .profile) con el nombre del gestor de ventanas que queramos ejecutar. Si la variable no está definida, se utilizará kwin.

lunes, 12 de enero de 2009

Servidor Subversion (y II)

Si hace doce días indicaba cómo configurar un servidor Subversión mediante Apache, hoy redondeo la jugada.

Una de las ventajas de utilizar WebDAV como tecnología subyacente es que se puede acceder al repositorio Subversion con un navegador normal y corriente. De hecho, como se pueden incluso montar «carpetas» WebDAV como directorios locales, es posible tener un sistema de ficheros versionado con SVN de manera transparente al usuario.

Pero el navegador normal y corriente, al contrario que las herramienta especializadas en Subversion, no puede acceder a todas las revisiones del repositorio. Tan solo a la última. Así que para que el usuario pueda acceder al código utilizando su navegador, algo normal si queremos, por ejemplo, publicar el código, serán necesarias herramientas adicionales. En este caso, ViewVC, que es una aplicación CGI para mostrar mediante el servidor web repositorios CVS o SVN.

Así que el primer paso es, de manera harto natural, instalarlo con sus dependencias:

aptitude install viewvc


Y el segundo, de manera igualmente natural, decirle a Apache que utilice ViewVC como un CGI cuando se le soliciten determinadas rutas, las que utilizaremos para publicar el código. Esto lo haremos, igualmente, mediante un fichero de configuración específico que haremos residir también en /var/svn:

#Fichero /var/svn/repositorio_viewvc_svn.apache2.conf

# Esto es para evitar que los usuarios vean que ViewVC es un CGI
ScriptAliasMatch ^/viewsvn(.*) /usr/lib/cgi-bin/viewvc.cgi$1


Bastante sencillo, ¿no?

Claro, hay que tener en cuenta que, si habíamos preparado un sistema de control de acceso mediante SVN, no podemos ahora dejar que cualquiera vea cualquier revisión de cualquier fichero. Esto no nos preocupará si las limitaciones que habíamos puesto eran solamente para la escritura, pero sí deberá importarnos si pusimos restricciones de lectura. En ese caso el fichero crece un poco:

#Fichero /var/svn/repositorio_viewvc_svn.apache2.conf

# Esto es para evitar que los usuarios vean que ViewVC es un CGI
ScriptAliasMatch ^/viewsvn(.*) /usr/lib/cgi-bin/viewvc.cgi$1

<Location /viewsvn>
# Repositorio Subversion vía ViewVC

# Método de autenticación y fichero de contraseñas
AuthType Digest
AuthDigestDomain http://miservidor/svn/
AuthName "Repositorio Subversion de miservidor"
AuthUserFile /var/svn/passwd-digest
</Location>

Include /var/svn/auth-viewvc


Suena, ¿no? Bastante parecido (de hecho, idéntico) a la configuración de autenticación para DAV-SVN. Lo que cambia es la configuración de autorización, que ahora debe manejar el propio Apache, y estará en el fichero /var/svn/auth-viewvc, que acabamos de incluir, al estilo de Apache:

#Fichero /var/svn/auth-viewvc
<Location /viewsvn/repo1>
Require user repo1admin repo1colaborador
</Location>

<Location /viewsvn/repo1/privado>
Require user repo1admin
</Location>


Y bien, en dos pasos acabado. El primero es, como la otra vez, enlazar el fichero de configuración en el Apache y activarlo:

ln -s /var/svn/repositorio_viewvc_svn.apache2.conf /etc/apache2/sites-available/repositorio_viewvc_svn
a2ensite repositorio_viewvc_svn
apache2ctl graceful


Y ya funciona. El segundo paso final es configurar ViewVC para que acceda a nuestro repositorio. Para ello tenemos que editar el fichero /etc/viewvc/viewvc.conf y tocar algunas cosas.

No voy a poner el fichero completo, pero sí detallar los cambios mínimos necesarios para que funcione como deseamos:


cvs_roots =
#Hay que vaciarlo

root_parents = /var/svn : svn
#Éste hay que descomentarlo y completarlo

address = <a href="mailto:cvs-admin@insert.your.domain.here">No admin address has been configured</a>
#Se debería poner aquí la dirección del Administrador

root_as_url_component = 1
Hay que cambiarlo para que funcionen nuestro control de acceso y nuestras redirecciones


Y listo: ya tenemos un precioso servidor de ficheros SVN vía web.

miércoles, 7 de enero de 2009

Comprar nuevo no es necesario.

El ordenador que estuve limpiando en noviembre venía arrastrando otros fallos, que resultaron ser del procesador. Igual precisamente por exceso de polvo se sobrecalentó en parte.

El caso es que tuve que cambiar el procesador, y ya no es sencillo encontrar procesadores para un zócalo 462 (el «socket A») de AMD.

El problema es que mi placa base es una Asus A7V8X que admite procesadores de hasta 2,4GHz , pero en «la tienda de la esquina» conseguí un Athlon XP 2600+. Y éste tampoco fue bien.

Finalmente, conseguí también un Athlon XP 3000+, que en realidad va a 2,1 GHz (el número del modelo no son los GHz), y poniendo adecuadamente la pasta térmica, he conseguido una máquina que a día de hoy lleva un uptime de 30 días. Nada mal para un procesador de segunda mano en una placa usada 24x7, que es hoy mi servidor de correo y páginas web (y varias cosas más), aparte del ordenador de escritorio de mi esposa.

¿De verdad hace falta comprar un ordenador nuevo completo cada vez que cierta empresa de Redmond saca una nueva versión?