Cambiando de versión (III) …

… siguiendo un guión riguroso a la par que accidentado.

Salvando la configuración

Recuperar lista de paquetes selectos y salvar, además de la configuración normal del sistema, las bases de datos de paquetería en un archivo comprimido. Luego enviar el archivo a un servidor externo.

# dpkg --get-selections "*" > /etc/apt/dpkg-selections
# tar cvfz /root/albion.tgz /etc /var/lib/dpkg /var/lib/apt/extended_states /var/lib/aptitude/pkgstates
...
...
/var/lib/dpkg/diversions-old
/var/lib/dpkg/statoverride-old
/var/lib/dpkg/triggers/
/var/lib/dpkg/triggers/Lock
/var/lib/dpkg/triggers/pysupport
/var/lib/dpkg/triggers/Unincorp
/var/lib/dpkg/triggers/File
/var/lib/dpkg/methlock
/var/lib/dpkg/parts/
/var/lib/apt/extended_states
/var/lib/aptitude/pkgstates
# scp albion.tgz victor@example.com
albion.tgz                                                                                            100%   32MB 733.3KB/s   00:44
#

Comprobando el estado del sistema

Lo primero es verificar que está actualizado a la última en Lenny empleando la orden

apt-get upgrade

y sí es así, verificar también que el programa

aptitude

tiene la misma idea sobre un sistema a la última.

Después desactivamos el mecanismo de puntuación de paquetes (APT pinning) y auditamos el estado general de los mismos con la orden

dpkg --audit

. También nos aseguramos de desactivar las fuentes de paquetes de terceros y los procedentes del repositorio backports antes de actualizar los orígenes de la versión a la versión stable actual.

Comenzamos entonces la actualización

Como queremos registrar todo lo que vamos a hacer empleamos el programa

script

de esta forma:

albion:~# script -a ~/upgrade-squeeze1 -t 2>~/upgrade-squeeze1.time
Script started, file is /root/upgrade-squeeze1
albion:~# apt-get update
....
albion:~# apt-get dist-upgrade
....

Y todo comienza a suceder a gran velocidad. Bytemark dispone de copias espejo de los repositorios Debian por lo que bajar los paquetes es cosa de segundos en lugar de minutos u horas. La máquina también es rápida para estas cosas y las preguntas aparecen regularmente y la actualización avanza.

Tropiezos

Anotaciones en la configuración

Para variar he olvidado que uso el programa etckeeper de Joey Hess sobre el directorio

/etc

y que puedo poner una etiqueta o marca en la configuración del sistema. Algo muy útil para revisar cambios más adelante, aunque quizás todavía sea posible. No llego a tanto con el programa Git.

Eso sí, esta versión de Git ya anima a configurar bien el repositorio para que todos los registros contengan información precisa:

git config --global user.name "Your Name"
git config --global user.email you@example.com

Arranque de servicios

Esta versión incluye ahora la posibilidad de cambiar el arranque de los servicios a la nueva propuesta del Linux Standard Base que emplea dependencias entre ellos. El paquete sysv-rc se encarga de realizar el cambio (que no es reversible) y antes de ello comprueba que sea factible. Como he podido comprobar que es cierto que el sistema arranca más rápidamente de esta forma, y aunque es un servidor que no espero tener que reiniciar en mucho tiempo, me he decidido a hacerle caso y a purgar del sistema una buena colección de paquetes antiguos y en desuso [1].

# dpkg-reconfigure sysv-rc
info: Checking if it is safe to convert to dependency based boot.
...
#

Cortafuegos

El cortafuegos empleado -llamado shorewall– ha sufrido también algunas modificaciones en su configuración y que, basándome en otra instalación menor que tengo en funcionamiento, he conseguido solucionar fácilmente.

Concretamente ha sido la forma de nombrar zonas (y de obligar a que exista una representando al cortafuegos en sí), indicadores obsoletos en los interfaces de red (como

norfc1918

) y algunos valores en el archivo

/etc/shorewall/shorewall.conf

.

Apache

Con el servidor web he patinado pero bien. Y todo por no leerme del todo el aviso del mantenedor del paquete. Si lo hubiese hecho me hubiese ahorrado el esfuerzo baldío de revisar una configuración que estaba casi bien.

El error aparecía contínuamente en el registro y consistía en una línea como

Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile]

perfectamente inútil por cuanto no indica dónde aparece o debería estar la directiva con el certificado. Buscando en la red me encuentro la solución en el comentario de Fussy Salsify en el sitio Server Fault. Por lo visto desde la versión 2.2.12 de Apache éste ya no acepta configuraciones de host virtuales con conexiones seguras si la configuración no es la adecuada y correcta.

He tenido que añadir las directivas

<VirtualHost *:443>
...
SSLEngine       On
SSLCertificateFile /etc/apache2/ssl/server.pem
SSLCertificateKeyFile /etc/apache2/ssl/key.pem
...
Redirect permanent / https://ejemplo.com/wiki
</VirtualHost>

a una instancia virtual que únicamente redirecciona a otro sitio. Antes era aceptable, ya no.

Servidor de bases de datos relacionales

En este caso el programa MySQL que en principio no arranca porque … bueno, porque me lo he cepillado accidentalmente en algún momento de la instalación. Lo cual, realmente, es una buena noticia: la configuración no es errónea, es inexistente.

Como hice caso a la guía de Debian y registré toda la sesión en un archivo he podido averiguar que cometí algún error en el orden de las actualizaciones y en un momento dado se eliminó el paquete mysql-server y no ha sido reclamado por nadie, ni siquiera por Drupal, que es el que lo utiliza realmente. En este caso ya que los datos pueden estar en otra máquina el mantenedor del paquete únicamente recomienda su instalación [2].

Bien, procedo a reinstalarlo y veo que salvo algún detalle que otro la configuración permanece (normal porque el paquete no fue purgado) y que está funcionando correctamente.

Notes

[1] Entre ellos está apache, at, cnews, courier-authdaemon, exim, fetchmail, lm-sensors, mysql-server-5.0, sendmail-bin, tomcat y webmin

[2] Antes de que alguien piense que soy un insensato debo recordar que la instalación de Drupal en esta máquina es puramente experimental por el momento; en caso contrario ya estaría incorporada en las copias de seguridad