A.3.3. Proceso de actualización

Si desea actualizar usando CD–ROMs, o si está actualizando desde una publicación 2.0 de Debian GNU/Linux o anterior, necesitará las versiones de apt y dpkg disponibles en el directorio debian/dists/potato//main/upgrade-i386/ de su réplica de Debian, o el directorio upgrade/ del primer CD–ROM de su conjunto de CDs de Debian 2.2. Obtenga e instale esos ficheros usando (exactamente en este orden):


     dpkg -i dpkg_1.6.13_i386.deb
     dpkg -i apt_0.3.19_i386.deb

Estas son versiones estáticas, compiladas especialmente, que pueden instalarse (y ejecutarse) en cualquier sistema Debian.

Si está actualizando desde la versión 2.1 de Debian GNU/Linux y quiere hacerlo usando la red (FTP, HTTP) o una réplica de paquetes local (posiblemente una partición de disco, o una réplica montada por NFS), entonces puede usar los paquetes apt y dpkg que venían con esa versión. Por supuesto, si apt no está instalado aún (no lo está por defecto), instálelo ahora.

Por favor, tenga en cuenta que para actualizar usando múltiples CDs desde cualquier versión de Debian, necesita las versiones estáticas de apt y dpkg, como se describe más arriba.

Se recomienda que lea las páginas de manual apt–get(8) y sources.list(5) ahora. Si usted instaló la versión estática de apt y dpkg, sólo puede acceder a las páginas de manual con órdenes como man –l /usr/share/man/man8/apt–get.8.gz hasta que se actualize el paquete man–db.

Antes de empezar la actualización debe preparar /etc/apt/sources.list, el fichero de configuración de apt para las lista de paquetes.

apt tendrá en cuenta todos los paquetes que pueda encontrar a través de cualquier linea “deb”, e instalará el paquete con el mayor número de versión, dando prioridad a las lineas nombradas primero (de ese modo, en caso de múltiples localizaciones de réplicas, usted indicará primero un disco duro local, después CD–ROMs y luego réplicas FTP/HTTP).

Preparación de una actualización a través de Internet

La configuración predeterminada está preparada para la instalación desde nuestros servidores principales de Internet, pero usted tal vez desee modificar /etc/apt/sources.list para usar otras réplicas, preferiblemente una que esté más cerca de usted a través de la red. En ese caso, primero comente las lineas “deb” que existen en sources.list, poniendo un signo ‘almohadilla’ (#) delante de ellas.

Las direcciones de las réplicas FTP o HTTP de Debian pueden encontrarse en la sección Lista completa de réplicas del servidor web de Debian.

Por ejemplo, supongamos que la réplica Debian más cercana a usted es
ftp://alea.iacta.est/debian/ Cuando inspeccione esa réplica con un navegador web o un programa FTP, observará que los directorios principales son similares a:


     ftp://alea.iacta.est/debian/dists/potato/main/binary-i386/...

     ftp://alea.iacta.est/debian/dists/potato/contrib/binary-i386/...

Para usar esta réplica con apt, deberá añadir esta línea a su fichero sources.list:


     deb ftp://alea.iacta.est/debian potato main contrib

Observe que ‘dists’ se añade implícitamente, y los argumentos después del tercero se usan para expandir el camino en múltiples directorios.

Si la réplica contiene también las secciones non–US bajo:
ftp://alea.iacta.est/debian/debian–non–US, añada también la siguiente linea:


     deb ftp://alea.iacta.est/debian/debian-non-US potato/non-US main contrib

Cualquier paquete que necesite para la instalación que se obtenga desde la red se almacena en el directorio /var/cache/apt (y en el subdirectorio partial/ mientras está siendo descargado), así que deberá asegurarse de que tiene suficiente espacio antes de empezar la instalación. Con una instalación de Debian razonablemente extensa, puede esperar al menos unos 300 MB de datos descargados.

Nota: si usted está usando la versión estática de apt y dpkg, la resolución de nombres está rota (ésa es una razón para usar el apt de slink cuando se actualiza desde la red). La solución es simplemente poner la dirección IP de la réplica en la línea “deb”. (Pista: Para averiguar la dirección IP de un–servidor pruebe a usar nslookup un–servidor)

Preparación de una actualización desde una réplica local

En lugar de usar réplicas FTP o HTTP de paquetes, puede que usted desee modificar /etc/apt/sources.list para que use una réplica que haya en un disco local (o tal vez montada por NFS). En ese caso, primero comente las lineas “deb” que existen en sources.list, poniendo un signo ‘almohadilla’ (#) delante de ellas.

Por ejemplo, supongamos que su réplica de los paquetes esté bajo /var/ftp/debian/, y tiene directorios principales similares a:


     /var/ftp/debian/dists/potato/main/binary-i386/...

     /var/ftp/debian/dists/potato/contrib/binary-i386/...

Para usar esta réplica con apt, deberá añadir esta línea a su fichero sources.list:


     deb file:/var/ftp/debian potato main contrib

Observe que ‘dists’ se añade implícitamente, y los argumentos después del tercero se usan para expandir el camino en múltiples directorios.

Si la réplica contiene también las secciones non–US bajo /var/ftp/debian/debian-non-US, añada también la siguiente linea:


     deb file:/var/ftp/debian/debian-non-US potato/non-US main contrib

Preparación de una actualización desde CD–ROMs

Primero deberá instalar la última versión de los paquetes apt y dpkg, tal como se describe más arriba.

Si desea usar sólo CDs, comente las lineas “deb” que existen en sources.list, poniendo un signo ‘almohadilla’ (#) delante de ellas.

Asegúrese de que hay una línea en /etc/fstab que permite montar su CD–ROM en el punto de montaje /cdrom (apt–cdrom requiere que sea exactamente en /cdrom). Por ejemplo, si /dev/hdc es su unidad de CD–ROM, /etc/fstab deberá contener una línea como:


     /dev/hdc      /cdrom     auto    defaults,noauto,ro     0   0

Observe que no debe haber ningún espacio entre las palabras defaults,noauto,ro en el cuarto campo.

Para comprobar que funciona, inserte un CD y pruebe a ejecutar


     mount /cdrom       (esto montará el CD en el punto de montaje)
     ls -alF /cdrom     (esto debe mostrar el directorio raiz del CD)
     umount /cdrom      (esto desmontará el CD)

Después, ejecute:


     apt-cdrom add

para cada CD–ROM binario de Debian que tenga, para añadir los datos de cada CD a la base de datos de APT.

Actualización

Una vez que haya configurado el sources.list, de apt, ejecute (como root):


     apt-get update

Esto resincronizará los ficheros de listado de paquetes a partir de sus fuentes, actualizando la información sobre paquetes nuevos y actualizados.

Algunas personas prefieren ejecutar


     apt-get --fix-broken --show-upgraded --simulate dist-upgrade | pager

para ver qué es lo que va a suceder. Aunque esto puede consumir bastante tiempo, puede evitar algunas sorpresas. Esto le dirá lo que está mal en su sistema (y como arreglarlo), o, más probable, exactamente qué es lo que se va a hacer durante la actualización. Preste atención especial a los paquetes que serán eliminados (‘REMOVEd’); aquí no debe aparecer ningún paquete esencial.

Después de que haya comprobado que apt–get debe funcionar bien, ejecute:


     apt-get --fix-broken --show-upgraded dist-upgrade

Esto hará una actualización completa del sistema, esto es, instalará las versiones más modernas disponibles de todos los paquetes, y resolverá todos los posibles cambios de dependencias entre paquetes en publicaciones diferentes. Si es necesario, instalará algunos paquetes nuevos (usualmente nuevas versiones de bibliotecas, o paquetes renombrados), y eliminará cualquier paquete obsoleto que de conflictos.

Cuando actualice desde un conjunto de CD–ROMs, se le pedirá que inserte CDs específicos en varios puntos durante la actualización. Puede que tenga que insertar el mismo CD varias veces; esto es debido a paquetes interrelacionados que estén repartidos en varios CDs.

Los paquetes instalados actualmente que no puedan ser actualizados sin cambiar el estado de instalación de otro paquete se dejarán en su versión actual (mostrados como “retenidos” (‘held back’)). Por tanto, puede ser necesario usar dpkg o dselect para eliminar y reinstalar algunos paquetes o dependencias rotos. Alternativamente, se puede usar apt–get dselect–upgrade después de apt–get –f dist–upgrade. (Vea la página de manual apt–get(8).)

La opción –-fix–broken (o simplemente –f) hace que apt intente corregir un sistema con dependencias rotas. apt no permite que existan dependencias rotas en un sistema.

Problemas posibles durante o después de una actualización

A veces es neceario activar la opción APT::Force–LoopBreak en APT para ser capaz de eliminar de forma temporal un paquete esencial debido a un bucle de Conflictos/Dependencias. apt–get le avisará de esto y cancelará la actualización. Puede evitarlo especificando la opción –o APT::Force–LoopBreak=1 en la llamada a apt–get.

Es posible que la estructura de dependencias de un sistema esté tan corrupta que requiera intervención manual. Usualmente esto significa usar dselect o


     dpkg --remove nombre-de-paquete

para eliminar alguno de los paquetes implicados, o


     apt-get --fix-broken --show-upgraded install
     dpkg --configure --pending

En casos extremos puede tener que forzar la reinstalación de un paquete con una orden como


     dpkg --install /camino/al/nombre-de-paquete.deb

Después de estas cosas, debe ser posible seguir con la actualización usando las órdenes dist–upgrade descritas previamente.

Durante la actualización, se le harán preguntas para configurar o reconfigurar varios paquetes. Cuando/Si le pregunta si se debe reemplazar algún fichero en los directorios /etc/init.d o /etc/terminfo, o el fichero /etc/manpath.config, por la versión del mantenedor del paquete, usualmente es necesario responder ‘sí’ para asegurar la consistencia del sistema. Siempre puede volver posteriormente a la versión anterior, dado que se guardará con la extensión .dpkg–old.

Si no está seguro de qué hacer, tome nota del nombre del paquete o fichero, y arregle las cosas más tarde. Puede buscar en el fichero ‘typescript’ para revisar la información que estaba en pantalla durante la actualización.

Cuando apt–get dist–upgrade haya terminado, habrá terminado la actualización “formal”, pero quedarán algunas otras cosas de las que deberá ocuparse antes de que reinicie de nuevo el sistema.

Lo más importante, puede que necesite instalar los paquetes locales y util–linux. Esto se puede hacer con:


     apt-get install locales util-linux

Si estaba actualizando desde la versión 2.0 de Debian, o anterior, se eliminará el paquete getty, porque getty forma parte ahora del paquete util–linux.

Probablemente hay varios paquetes más que deben ser instalados y que apt–get no ha tenido en cuenta, porque apt–get no escoge automáticamente paquetes de los que no dependen directamente otros (p. ej. todos los paquetes que estén en los campos Recommends: y Suggests:). Estos paquetes se pueden encontrar fácilmente usando dselect o cualquier otro frontal visual. En dselect, escoja el método ‘apt’ en la pantalla [M]étodo (si no lo ha hecho aún) y actualice la base de datos con información de los nuevos paquetes, usando la opción [A]ctualizar. Después de ésto, en la pantalla [S]eleccionar, pulse ‘o’, ‘o’, ‘v’ y Cambio–d, y busque la cabecera:


     --- Paquetes obsoletos y localmente instalados ---

En esta sección se mostrarán todos los paquetes de ese tipo. Por ejemplo, los viejos paquetes gimp–smotif y gimp–dmotif fueron sustituidos por gimp en Debian GNU/Linux 2.1. Usted puede instalar el nuevo paquete vía dselect (que mostrará una pantalla de “resolución de conflictos de dependencias” indicando que los viejos paquetes deben ser eliminados), o usando


     apt-get install gimp

que eliminará las versiones antigua de una sola vez (simplemente deberá confirmarlo).

Otro ejemplo, que a menudo no aparece ni siquiera en dselect, son los clientes y servidores de telnet y talk, y el servidor NFS, que fueron separados del viejo paquete netstd. Puede instalarlos con una orden como:


     apt-get install telnet telnetd talk talkd nfs-server

Lo mismo se aplica a manpages–dev, que fue separado de manpages.

Por favor, vea el documento Notas de la publicación de Debian GNU/Linux 2.1 para más información sobre los paquetes que fueron divididos en esa publicación; vuelva atrás y lea ‘Paquetes renombrados’, en la pag. 440, y ‘Paquetes divididos’, en la pag. 443, para ver la lista de paquetes divididos en esta publicación.

Si estaba actualizando desde la versión 2.0 de Debian, o anterior, _Y_ tenía el sistema de ventanas X (‘X Window System’) instalado, ejecute las siguientes órdenes:


     apt-get remove xbase
     apt-get install xfonts-base xfonts-75dpi xfonts-100dpi xfonts-scalable

Y si no quiere que xdm arranque al reiniciar el sistema (“autoarranque X”), ejecute también:


     apt-get remove xdm

Para más información puede leer el fichero:
/usr/doc/xfree86-common/README.Debian-upgrade,
pero probablemente no tenga que hacer nada más.

El sistema de configuración para los módulos del núcleo ha cambiado desde Debian GNU/Linux publicación 2.0. Si ha actualizado desde la versión 2.0 de Debian, o anterior, debe convertir su sistema antes de volver a reiniciar. Usualmente basta con ejecutar update–modules force; de todos modos se recomienda leer la página de manual update–modules(8).

Entonces, si estaba actualizando desde una versión 1.x de Debian GNU/Linux (es decir, anterior a la 2.0), el sistema antiguo usaba la biblioteca ‘libc5’, mientras que el sistema actualizado usa la versión ‘libc6’. La nueva biblioteca ha cambiado el formato de los ficheros utmp y wtmp; puede comprobarlo probando la orden last. Para resolverlo, es necesario reiniciar, pero antes copie los ficheros viejos y vacíe los existentes con estas órdenes:


     cd /var/log
     mv wtmp wtmp.libc5
     touch wtmp
     cd /var/run
     cp /dev/null utmp

Entonces reinicie el sistema (nota: esto no es necesario para actualizaciones desde la publicación 2.0 y posteriores de Debian). Una vez reinicie, la orden last mostrará datos correctos de nuevo.

Observe que el núcleo de Linux no fue actualizado con estos procedimientos. Puede que desee hacerlo usted mismo, bien instalando uno de los paquetes kernel–image–* o bien compilando un núcleo personalizado a partir de las fuentes.

¡Disfrute su nuevo sistema Debian GNU/Linux 2.2! :–)