Guía de actualización de las versiones antiguas de OpenBSD

Versiones: desde la 2.3 hasta la 2.8

Kjell Wooding <kjell@openbsd.org>
Updated: $OpenBSD: upgrade-old.html,v 1.7 2003/06/27 20:55:50 jufi Exp $


Este documento contiene información para la actualización de las versiones de OpenBSD que ya no se mantienen de forma activa. La información concerniente a las versiones recientes y las instrucciones generales para la actualización se encuentra en la guía de actualización para las versiones actuales.

1.0: Instrucciones generales para la actualización del sistema

1.1: ¿Dónde se encuentra la información sobre las versiones de OpenBSD más recientes?

Cómo actualizar desde la versión 2.8

2.8.1: Nuevo grupo auth.
2.8.2: Nuevo sistema de consola wscons.
2.8.3: La compilación del núcleo falla con errores tipo Undefined symbol.

Cómo actualizar desde la versión 2.7

2.7.1: ¿Cuáles son los problemas más comunes para actualizar desde la versión 2.7 a la 2.8?

Cómo actualizar desde la versión 2.6

2.6.1: Las entradas de termcap son demasiado largas.
2.6.2: El núcleo ya no reconoce el dispositivo pn (o mx, al, ax).
2.6.3: Actualización de gcc 2.95.1 a 2.95.2.
2.6.4: Actualización de Kerberos.
2.6.5: Actualización de M4.
2.6.6: Actualización de Sendmail.
2.6.7: Después de actualizar el sistema, los núcleos con soporte de apm(8) incluido no arrancan.
2.6.8: Ha cambiado el grupo predeterminado del usuario daemon.

Cómo actualizar desde la versión 2.5

2.5.1: ¿Cuáles son los problemas más comunes para actualizar desde la versión 2.5 a la 2.6?
2.5.2: ¿Cómo actualizo de gcc a egcs?

2.5.2.1 - i386 y sparc ya no usan #define
2.5.2.2 - El proceso de compilación falla en xlint.
2.5.2.3 - Volcado de memoria (core dump) en uthread_autoinit.c
2.5.2.4 - egcs parece ir más lento que gcc.
2.5.2.5 - egcs genera código de mayor tamaño que gcc.
2.5.2.6 - Después de instalar egcs queda muy poco espacio en el disco.
2.5.2.7 - El proceso de compilación del sistema falla al compilar libcurses.
2.5.2.8 - Fallo en make obj.

2.5.3: make build falla con errores tipo unimplemented syscall.
2.5.4: Enlace al nuevo directorio de 2.6.
2.5.5: Después de actualizar ((U)pgrade), la extracción de base26.tar.gz falla mostrando un mensaje.

Cómo actualizar desde la versión 2.4

2.4.1: Cambios en las páginas del manual.
2.4.2: Cambio en la sintaxis de cap_mkdb.
2.4.3: Snake.

Cómo actualizar desde la versión 2.3

2.3.1: Nuevo usuario: named.
2.3.2: El proceso de compilación falla al intentar compilar ssleay.
2.3.3: El proceso de compilación falla al intentar compilar algo para PowerPC.

 

1.0: Instrucciones generales para la actualización del sistema

1.1: ¿Dónde puedo encontrar información sobre las versiones de OpenBSD más recientes?

En la guía de actualización para las versiones actuales.

Cómo actualizar desde la versión 2.8

2.8.1: Nuevo grupo auth

Hay un nuevo grupo auth, con gid 11, en el sistema. Debe añadir una entrada como la siguiente en el fichero /etc/group:

auth:*:11:

2.8.2: Nuevo sistema de consola wscons

Se ha reemplazado el controlador de consola pcvt con el sistema de consola wscons. Antes de usar wscons deberá crear los nuevos dispositivos relacionados con wscons. Primero asegúrese de tener instalado el último MAKEDEV, y luego cree todos los dispositivos:

# cp /usr/src/etc/etc.i386/MAKEDEV /dev/MAKEDEV # cd /dev # ./MAKEDEV all

Si tiene el sistema gráfico X, cambie la sección "Pointer" del fichero XF86Config para que contenga las siguientes entradas:

Protocol "wsmouse" Device "/dev/wsmouse"

2.8.3: La compilación del núcleo falla con errores tipo Undefined symbol.

Se ha actualizado config(8). Si compila con el viejo config verá errores como:

Undefined symbol `_pdevnames_size' referenced Undefined symbol `_pdevnames' referenced

Para corregirlo, compile e instale el nuevo config:

# cd /usr/src/usr.sbin/config # make clean && make depend && make # make install

Ahora ya puede recompilar un nuevo núcleo del sistema.

Cómo actualizar desde la versión 2.7

¿Cuáles son los problemas más comunes para actualizar desde la versión 2.7 a la 2.8?

Se ha introducido un cambio significatico en gcc que facilita enormemente la generación de bibliotecas de libc auto-referenciadas. Por este motivo, la actualización debe seguir este procedimiento al pie de la letra:

  1. Limpie lo sobrante de su árbol de fuentes y descargue el código fuente de la versión 2.8.
  2. Compile e instale un nuevo enlazador. Debe hacerlo antes de llevar a cabo una compilación completa del compilador gcc:

    $ cd /usr/src/gnu/usr.bin/ld $ make clean && make obj && make $ sudo make install
  3. Compile e instale el nuevo gcc. Use el procedimiento de la rutina de arranque (BOOTSTRAP) para que el proceso sea más rápido.
  4. Compile un nuevo núcleo. No lo instale todavía:

    $ cd /usr/src/sys/arch/`machine`/conf $ config GENERIC $ cd ../compile/GENERIC $ make clean && make depend && make
  5. Debido a algunos cambios en libc, su máquina puede colgarse durante el inicio a menos que el fichero /etc/resolv.conf contenga la entrada lookup file bind. Añádala si no existe:

    # echo "lookup file bind" >> /etc/resolv.conf
  6. Instale un nuevo núcleo y reinicie el sistema:

    # cd /usr/src/sys/arch/`machine`/compile/GENERIC # mv /bsd /bsd.old # mv bsd /bsd # chown root.wheel /bsd # shutdown -r now

    (si este paso fallara puede recuperar el sistema arrancando con el núcleo antiguo, bsd.old, desde el punto boot> durante el proceso de inicio del sistema).

  7. Compile e instale el nuevo make (y los archivos de soporte). No se salte el paso make depend:

    $ cd /usr/src/usr.bin/make $ make clean && make obj && make depend && make $ sudo make install $ cd /usr/src/share/mk $ sudo make install
  8. Instale la utilidad de asignación de la jerarquía de directorios, mtree, más reciente, y asegúrese de que esté presente la estructura de directorios necesaria:

    $ cd /usr/src/etc/mtree $ sudo install -c -o root -g wheel -m 444 4.4BSD.dist /etc/mtree $ sudo mtree -qdef /etc/mtree/
  9. Ejecute make build:

    # cd /usr/src && make build
  10. Actualice /etc /var y /dev/MAKEDEV a mano.

Cómo actualizar desde la versión 2.6

Las entradas de termcap son demasiado largas.

Hay un nuevo fichero termcaps.master. Debe regenerar los ficheros terminfo y termcaps con la versión actual de tic(1). Si va a llevar a cabo la actualización mediante make build, deberá utilizar la versión correcta de tic(1). De lo contrario producirá el siguiente error:

terminfo.src is corrupt! You need to update /usr/bin/tic

En este caso debe recompilar e instalar tic(1) (asegurándose de que utiliza la versión actual de libcurses), o puede compilar la versión de tic(1) desde su árbol de fuentes.

2.6.2: El núcleo ya no reconoce el dispositivo pn (o mx, al, ax).

Nota: En el texto se usa pn por simplicidad, pero se debe entender pn, mx, al, o ax según sea apropiado.

Estos cuatro controladores se han reemplazado con un controlador dc unificado. Debe cambiar cualquier mención de pn*, mx, al, ax en los ficheros de configuración. Esto incluye:

Si va a modificar un núcleo personalizado, no se olvide de incluir el dispositivo dcphy en su fichero de configuración del núcleo:

dcphy* at mii? phy ? # Digital Clone PHYs

Y de paso puede añadir lo siguiente:

ukphy* at mii? phy ? # "unknown" PHYs

2.6.3: Actualización de gcc 2.95.1 a 2.95.2.

gcc 2.95.2 fue fusionado con el árbol de fuentes de OpenBSD sobre el 19 de enero de 2000. Para que gcc compile correctamente se requiere una versión más reciente de libiberty (posterior a la incluida en OpenBSD 2.6). Para compilar esta biblioteca, haga lo siguiente:

cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install

NOTA: En las plataformas basadas en la arquitectura mips, como pmax, debe invocar ldconfig después de haber compilado las nuevas bibliotecas.

Una vez que haya compilado libiberty puede continuar con una rutina de arranque (bootstrap) normal de gcc:

cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper obj make -f Makefile.bsd-wrapper -DBOOTSTRAP make -f Makefile.bsd-wrapper -DBOOTSTRAP install make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install

2.6.4: Actualización de Kerberos.

Para que Kerberos IV compile correctamente deberá seguir los siguientes pasos:

2.6.5: Actualización de M4.

La versión de m4 que se incluye en OpenBSD 2.6 produce un bucle infinito al procesar los ficheros .mc en ficheros .cf. Debido a esto es necesario instalar la nueva versión de m4 antes de invocar make build. En otras palabras:

# cd /usr/src/usr.bin/m4 # make && make install && make cleandir

2.6.6: Actualización de Sendmail.

En sendmail 8.10.X, las ubicaciones (y los nombres) de los ficheros de configuración de sendmail han cambiado. Ahora está todo, excepto el fichero pid en /etc/mail. También han cambiado los nombres de varios ficheros.

VIEJO NUEVO
/etc/sendmail.cf /etc/mail/sendmail.cf
/etc/sendmail.cw /etc/mail/local-host-names
/etc/sendmail.ct /etc/mail/trusted-users
/etc/sendmail.oE /etc/mail/error-header
/etc/aliases /etc/mail/aliases
/etc/service.switch /etc/mail/service.switch
/etc/userdb /etc/mail/userdb
/usr/share/misc/sendmail.hf /etc/mail/helpfile

Existen un par de métodos para convertir los ficheros antiguos a los nuevos, y para ambos casos el primer paso es siempre el mismo:

  1. Actualice /etc/rc para que busque /etc/mail/sendmail.cf en lugar de /etc/sendmail.cf
  2. mv /etc/sendmail.cf /etc/mail/sendmail.cf
    Éste es el camino de menor resistencia, y no tendrá que cambiar la ubicación de ningún otro fichero.
  3. O compile un nuevo fichero .cf a partir del fichero fuente .mc. Nótese que ya no será necesario especificar la línea include(`../m4/cf.m4'), ya que make la habrá incluido. Nótese también que cuando se añadan máquinas a la clase w (por medio de "Cw máquina"), ya no será necesario hacerlo en la sección LOCAL_CONFIG (véase el fichero openbsd-lists.mc como ejemplo).

2.6.7: Después de actualizar el sistema, los núcleos con soporte incluido de apm(8) no arrancan.

Debe actualizar los bloques de arranque. En la sección 14.8 encontrará la información pertinente.

2.6.8: Ha cambiado el grupo predeterminado del usuario daemon

El grupo predeterminado para el usuario daemon se ha cambiado del 31 al 1. Para que este cambio surta efecto hay que usar vipw y modificar el fichero de contraseñas para que sea como el siguiente:

daemon:*:1:1::0:0:The devil himself:/root:/sbin/nologin

Cómo actualizar desde la versión 2.5

2.5.1: ¿Cuáles son los problemas más comunes para actualizar desde la versión 2.5 a la 2.6?

perl y make

La última versión de Perl (5.005_03) requiere de una nueva versión de make para compilar correctamente. Debe recompilar make antes de compilar la nueva versión de Perl:

# cd /usr/src/usr.bin/make # make clean && make && make install

Siga con la recompilación de la nueva versión de Perl. Para ello tendrá que limpiar antes el directorio obj de Perl a mano.

Los programadores en Perl deberían tomar nota de los últimos cambios. De millert@openbsd.org:

La versión de perl en el árbol de fuentes de OpenBSD (post-2.5) ha sido actualizada con la 5.005_03. El método de compilación ha cambiado algo, pero en su mayor parte esto no debería ser visible. Los cambios importantes que afectan a los usuarios son los siguientes: 1) Los ficheros lib de Perl han cambiado su ubicación de /usr/lib/perl5 a /usr/libdata/perl5, que es más correcto. 2) Los directorios predeterminados site_perl se encuentran ahora en /usr/local. O sea que si instala un módulo de perl, se ubicará a sí mismo en /usr/local/libdata/perl5/site_lib. De este modo es más fácil ver los módulos no regulares que hay instalados. También es más fácil tener módulos de perl en el sistema de portes. 3) Las páginas del manual de las bibliotecas de perl ahora se instalan en /usr/share/man/cat3p. Para verlas tendrá que actualizar man.conf de acuerdo con /src/etc/man.conf. Esto quiere decir que ahora puede ejecutar "man 3p less" y obtener información sobre el pragma de less, pero "man less" le seguirá mostrando la página del manual del paginador less. Si tiene instalados módulos o fichero no regulares de perl, lo más sencillo es pasar /usr/lib/perl5 a /usr/libdata/perl5 y añadir un enlace desde /usr/lib/perl5 a /usr/libdata/perl5. De forma alternativa, puede editar el fichero Config.pm instalado y corregir en éste los caminos.
Cambio de compilador: egcs sustituye a gcc

Seguramente, este cambio será el más significativo que se encuentre. Puede ver las instrucciones detalladas en la sección 2.5.2.

Estructura del núcleo del sistema: cambio en statfs

La estructura de statfs ha cambiado desde el 31 de mayo. Debe recompilar el núcleo antes de invocar make build. Puede ver los detalles en la sección 2.5.3.

2.5.2: ¿Cómo actualizo de gcc a egcs?

La forma más segura es actualizarse a una versión preliminar (snapshot) reciente, en cuanto haya una disponble. ¡Primero busque una versión preliminar!. Sólo se debería utilizar una rutina de arranque para iniciar el nuevo compilador desde el viejo como último recurso.

Antes que nada, tenga en cuenta que el uso de rutinas de arranque (bootstrapping) no ha tenido éxito en algunas plataformas. Si tiene cuidado, debería funcionar en las siguientes plataformas:

Hay problemas en mips y rs6000.

Para comprobar que funcionen las rutinas de arranque en una plataforma, obtenga la versión preliminar de egcs desde la colección de portes e instálelo. Si funciona, lo más seguro es que también funcione la versión integrada en el árbol de fuentes de OpenBSD. Éste es el procedimiento más seguro.

Ahora, antes de continuar, asegúrese de que las copias de binutils, gas, y ld estén actualizadas. Nótese que hay dos copias de gas y ld en el árbol. En i386 y sparc, no se usa binutils. En su lugar se usa /usr/src/gnu/usr.bin/gas y /usr/src/gnu/usr.bin/ld.

Las siguientes instrucciones son para la versión preliminar original de egcs (egcs-990517). Desde entonces ha cambiado la versión preliminar (egcs-990608) del árbol. Si la versión de la que dispone es la 2.5, es poco probable que pueda compilar la última versión de forma directa. En este caso tendrá que usar una rutina de arranque con una versión intermedia siguiendo estas intrucciones.

De espie@openbsd.org:

Hoy cambia el compilador. Sale gcc 2.8.1 y entra egcs ... o, para ser más preciso, gcc 2.95. Esto es probable que complique las cosas de momento, pero no puedo solucionar todas las rarezas de cada arquitectura yo solo. Voy a empezar a importarlo *ahora*. En cuanto esté todo estabilizado enviaré un segundo mensaje a tech@. Gracias a todos los que me han ayudado con esto, y de manera muy especial a niklas, turan y millert. Porqué del cambio ----------------- Como la mayoría ya sabrá, egcs es en este momento el compilador *oficial* con soporte de la FSF. La próxima versión de julio ha sido rebautizada gcc 2.95. Con una simple mirada a los mensajes de registro se pueden ver muchas mejoras: el soporte para los procesadores más nuevos es mejor, C++ se aproxima mucho más a las especificaciones ANSI/ISO, Fortran 77 está mucho más integrado. También hay un sinnúmero de errores reparados y de mejoras en la generación de código. Además, el modelo de desarrollo es más abierto. Hay un árbol de cvs, hay varias listas de correo disponibles, y estamos cooperando con el equipo de egcs. Para ser más preciso, he enviado parches al equipo de egcs para que las opciones de configuración de OpenBSD tengan soporte oficial. El equipo de desarrollo ha ofrecido un alto nivel de respuesta a los informes sobre errores, y se han solucionado problemas. También hay algo más: todos están migrando a egcs, lo que significa que hay mucho código sobre el que poder probar el compilador, y que podemos beneficiarnos de proyectos relacionados. Porqué ahora ------------ egcs-1.1 no servía para algunos propósitos. En concreto, el tamaño del código en i386 era mayor que el de gcc 2.8.1, lo que provocaba problemas con los disquetes. En el momento en que se congeló la versión 2.5 de OpenBSD, el único código que se ajustaba para ser incluido en el sistema era una versión preliminar algo inestable. En interés de la estabilidad, y después de muchos intentos, egcs no fue incluido en 2.5. Ahora mismo, el proyecto egcs se encuentra en fase de producción de egcs 1.2. A juzgar por la marcha del proyecto, hay un amplio margen entre egcs 1.2 y la próxima versión oficial de OpenBSD. Además, queremos disponer ya de él, para poder tener la oportunidad de enviar informes sobre los problemas en las arquitecturas menos utilizadas, y tenerlo todo solucionado para la versión 1.2. La «congelación del desarrollo de funcionalidades» de egcs debería tener lugar el 7 de mayo, y la versión preliminar 19990502 ya ofrece solidez. Qué funciona y qué no --------------------- egcs funciona sin problemas en el sistema i386 de OpenBSD. También funciona en m68k, con algunos arreglos relacionados con errores extraños que se solucionarán. También parece funcionar en sparc. Hay algunos problemas con el enlazador en algunas otras arquitecturas que deben ser solucionados antes del lanzamiento de nuestra próxima versión. En este instante, los constructores de bibliotecas dinámicas todavía no están listos. egcs dispone ahora de un preprocesador cpp independiente que será mejor que el arreglo que usamos en este momento. Esto conllevará algunos cambios en la interfaz y probablemente avisos extraños. ¿Se mantendrá gcc 2.8.1? ------------------------ Debido al espacio que ocupa, gcc pasará al módulo Attic de cvs en cuanto se importe egcs. Si no quiere pasar todavía a egcs, deberá tener cuidado con las actualizaciones por cvs. Habrá algunos cambios en los ficheros Makefile: los include, gnu/usr.bin, y gnu/lib. xlint y cpp.sh también cambiarán. Cómo instalar el compilador mediante rutinas de arranque -------------------------------------------------------- El modo más fácil es el de confiar en los mantenedores de las arquitecturas y obtener una versión preliminar. Si quiere complicarse la vida, primero tendrá que volver a compilar los directorios obj: cd /usr/src make obj Si la plataforma es i386, se debe actualizar gas. Si la plataforma es sparc, se debe actualizar ld. compilar libiberty: cd /usr/src/gnu/egcs/libiberty make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install compilar el compilador de C: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install recompilar el compilador de C con la nueva versión: cd /usr/src/gnu/egcs/gcc make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install recompilar los ficheros de inclusión: cd /usr/src/include make includes compilar todas las bibliotecas egcs e instalarlas: cd /usr/src/gnu/egcs make -f Makefile.bsd-wrapper clean make -f Makefile.bsd-wrapper depend make -f Makefile.bsd-wrapper make -f Makefile.bsd-wrapper install e instalar el nuevo controlador cpp cd /usr/src/usr.bin/cpp make install y ya está listo para una compilación general que ahora debería funcionar.

[nota del autor: en realidad no funcionará del todo, ya que fallará la compilación de xlint. Sin embargo, la solución es simple. Cambie al directorio /usr/src/usr.bin/xlint/xlint y ejecute make && make install antes de invocar make build. Luego prosiga con normalidad. Lea la referencia en la sección 2.5.2.2]

Si no funciona, entonces es que está usando una arquitectura que todavía no ha pasado por make build. Lo más probable es que ocurra un error interno del compilador, como el que se conoce por ICE. Primero intente ver si el ICE desaparece con -O1 ó -O0. Si es así, puede incluir un arreglo en el fichero Makefile hasta que se solucione (mire en el fichero /usr/src/lib/libm/Makefile a modo de ejemplo de cómo incluir arreglos para m68k). Es necesario que se informe sobre el error en la lista de correo de egcs-bugs. Como mínimo, debe compilar el código fuente con la misma invocación del compilador, añadiendo -v -save-temps a las opciones. La opción -v produce la secuencia exacta de instrucciones invocadas por gcc. La opción -save-temps le dará un fichero C preprocesado (.i) o uno C++ (.ii) de utilidad para los programadores de egcs... no les puede pedir que instalen OpenBSD en sus máquinas. Si dispone de más tiempo, puede intentar reducir el fichero de C preprocesado hasta un mínimo en el que evite el error. La dicotomía funciona bastante bien.

Si ha podido pasar este procedimiento y aún funciona todo, le felicitamos. Si no es así, busque ayuda en las secciones siguientes. Los problemas que no aparezcan en el documento los puede enviar a tech@openbsd.org.

2.5.2.1 - i386 y sparc ya no usan #define

Es cierto, ahora egcs usa __i386__ y __sparc__, que es más limpio. Si necesita compilar código que dependa de los viejos #define, añada -Di386 ó -Dsparc en el sitio apropiado del fichero Makefile correspondiente.

2.5.2.2 - El proceso de compilación falla en xlint

Esto se debe a diferencias semánticas en el preprocesador cpp. La solución es simple, y parecida a la del problema con cap_mkdb que se describe en la sección 2.4.2.

Compile e instale el código de xlint más reciente:

# cd /usr/src/usr.bin/xlint/xlint # make && make install

y a continuación vuelva a compilar todo. La compilación debería continuar.

2.5.2.3 - Volcado de memoria (core dump) en uthread_autoinit.c

Ha sido víctima de un error del enlazador. He aquí un mensaje relevante:

From: Marc Espie <Marc.Espie@liafa.jussieu.fr> Subject: egcs core-dumping on uthread_autoinit.c Esto es un problema conocido del enlazador... cc1 está enlazado de un modo extraño. Al principio hice que cc1 enlazara de forma estática con /usr/lib/libiberty para evitar este problema, pero era llevar las cosas muy lejos, y el error volvió a aparecer, probablemente por culpa de cambios en libc o en alguna otra parte que no estaban relacionados... Se ha parcheado el árbol con una solución en src/gnu/egcs/f/lang-options.h asegúrate de tener la versión correcta de ese fichero (por lo menos rev 1.2), recompila y reinstala cc1, y el problema debería desaparecer. Lo que sucede es que el enlazador de 386 recibe algo extraño debido a la enorme estructura de cadenas en toplev.c, y algo se desenlaza, de tal forma que void f(void) __attribute((constructor)) {} mata cc1. Como solución, he eliminado los textos de ayuda de las opciones de Fortran hasta que alguien encuentre dóde se produce el error del enlazador.
2.5.2.4 - egcs parece ir más lento que gcc.

Va más lento, pero por un motivo. egcs realiza más pases de optimización. El alineamiento de datos y otras funcionalidades parecidas tendrán un mejor rendimiento con código generado por egcs.

2.5.2.5 - egcs genera código de mayor tamaño que gcc.

En efecto. Esto se nota especialmente con el viejo interruptor -O2 de gcc. egcs introduce una nueva opción, -Os, que optimiza el espacio. Esto es comparable de algún modo al viejo comportamiento de -O2.

2.5.2.6 - Después de instalar egcs queda muy poco espacio en el disco.

egcs se instala en un subdirectorio diferente al de gcc 2.8.1. Debe eliminar gcc una vez que se haya instalado egcs mediante rutina de arranque y ya est´ funcionando.

Un problema relacionado es el de los cambios en Perl mencionados en la sección 2.5.1, ya que se puede eliminar el directorio /usr/lib/perl5. La nueva ubicación para estos datos es /usr/libdata/perl5.

2.5.2.7 - El proceso de compilación del sistema falla al compilar libcurses.

Ahora libcurses depende de la última versión de cpp. Bájese la última versión de cpp, recompílela, y continúe:

# cd /usr/src/usr.bin/cpp && make install

Y vuelva a invocar make build.

2.5.2.8 - Fallo en make obj.

Si falla la ejecución de make obj, citando errores de un fichero Makefile, es posible que los ficheros de inclusión del fichero Makefile estén obsoletos. Por ejemplo:

===> lib/libkvm "Makefile", line 30: Malformed conditional ((${UVM} == "yes")) "Makefile", line 30: Missing dependency operator "Makefile", line 32: if-less endif "Makefile", line 32: Need an operator Fatal errors encountered -- cannot continue

Esto se puede resolver recompilando los ficheros de inclusión del Makefile:

cd /usr/src/share/mk && make install

e intente compilar de nuevo.

2.5.3: make build falla con errores tipo unimplemented syscall.

Respuesta corta:

La estructura statfs del núcleo del sistema ha cambiado. Debe recompilar el núcleo antes de volver a ejecutar make build.

Respuesta larga:

La estructura statfs del núcleo del sistema ha cambiado. La nueva struct statfs tiene las siguientes características:

Otros cambios:

2.5.4: Enlace al nuevo directorio de 2.6.

Cuando actualice a la versión 2.6 tendrá que crear un simple enlace para gcc.

cd /usr/lib/gcc-lib ln -s ${ARCH}-unknown-openbsd2.5 ${ARCH}-unknown-openbsd2.6

2.5.5: Después de actualizar ((U)pgrade), la extracción de base26.tar.gz falla mostrando un mensaje.

tar: Unable to remove directory ./usr/include/machine <Directory not empty>

En la versión 2.5, /usr/include/machine era un directorio, y /usr/include/i386 un enlace a este directorio. En la versión 2.6 se ha invertido esta situación.

Para corregir el problema, salga al punto del intérprete, elimine el directorio /usr/include/machine, y vuelva a intentar actualizar el sistema.

Cómo actualizar desde la versión 2.4

2.4.1: Cambios en las páginas del manual

Se han cambiado varias páginas del manual de la sección 1 a otras secciones. Si las páginas del manual antiguas se dejan en la sección 1, los usuarios que no lo sepan no verán la última versión de la página.

Se deben eliminar las siguientes páginas del manual:

/usr/share/man/cat1/ipf.0 /usr/share/man/cat1/ipnat.0 /usr/share/man/cat1/ipsecadm.0

2.4.2: Cambio en la sintaxis de cap_mkdb.

Sнntoma:

La ejecución de make build produce un error como el siguiente:

cap_mkdb -i -f terminfo terminfo.src cap_mkdb: illegal option -- i usage: cap_mkdb [-v] [-f outfile] file1 [file2 ...] *** Error code 1

Solución:

La sintaxis para invocar cap_mkdb ha cambiado ligeramente. Antes de ejecutar make build, recompile cap_mkdb desde los fuentes más recientes.

# cd /usr/src/usr.bin/cap_mkdb # make clean && make && make install

Ahora el proceso de compilación debería continuar hasta completarse.

2.4.3: Snake

Antes de actualizar /usr/src/games/snake tiene que eliminar el contenido del directorio obj.

Cómo actualizar desde la versión 2.3

2.3.1: Nuevo usuario: named

A partir de la versión 2.3, el dæmon named de DNS ha cambiado a un entorno cerrado (chroot jail). Para que este cambio fuera posible, hubo que crear el usuario named. Si no lo ha hecho todavía, debe crear este usuario para asegurar que todos los directorios sean creados correctamente durante el proceso de compilación del sistema.

Añada la siguiente entrada en /etc/passwd usando vipw(8):

named:*:70:70::0:0:BIND Daemon:/var/named:/sbin/nologin

Añada la siguiente entrada en /etc/group:

named:*:70:

2.3.2: La compilación falla cuando intento compilar ssleay.

Es probable que falte una entrada para el usuario named en el fichero de contraseñas.

Respuesta corta:

Debe crear este usuario antes de la compilación.

Respuesta larga:

El usuario named se requiere para configurar correctamente los permisos. Si falta este usuario, parte del proceso de compilación fallará. Si captura el proceso de compilación en un fichero (por ejemplo con make build &>/tmp/build.log) podrá ver el siguiente mensaje:

(cd /usr/src/etc && make DESTDIR=/ distrib-dirs) install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u mtree: unknown user named mtree: failed at line 1632 of the specification *** Error code 1 (ignored)

Desafortunadamente, el proceso de compilación a continuado su camino, ignorando completamente el hecho de que haya ocurrido un error.

Si existe el usuario named, mtree funcionará correctamente:

missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)

El motivo de este fallo es que el directorio /usr/include/ssl nunca fue creado. Sin los ficheros de cabecera, la compilación de ssleay fallará.

Solución:

Cree el usuario y grupo named. Elimine /usr/include/ssl, /var/named, y cualquier otro directorio de la lista anterior que fuera creado como un archivo normal por el proceso de make build.

2.3.3: El proceso de compilación falla al intentar compilar algo para PowerPC.

El directorio de su árbol está incompleto. En concreto, falta el directorio /usr/share/man/cat4/powerpc.

Solución rápida:

Cree este directorio y proceda con el proceso de compilación.

Solución completa:

Cree el árbol completo del directorio:

# cd /usr/src/etc && make DESTDIR=/ distrib-dirs

Lo más probable es que vea una salida como la siguiente:

install -d -o root -g wheel -m 755 / mtree -def mtree/4.4BSD.dist -p // -u missing: ./var/named (created) missing: ./var/named/dev (created) missing: ./var/named/etc (created) missing: ./etc/afs (created) missing: ./etc/ssl (created) missing: ./etc/ssl/private (created) missing: ./usr/obj (not created: File exists) missing: ./usr/share/doc/html (created) missing: ./usr/share/doc/html/lynx_help (created) missing: ./usr/share/doc/html/lynx_help/keystrokes (created) missing: ./usr/share/doc/usd/13.viref (created) missing: ./usr/share/man/cat4/powerpc (created) missing: ./usr/share/man/man4/alpha (created) missing: ./usr/share/man/man4/pmax (created) missing: ./usr/share/man/man4/powerpc (created) missing: ./usr/share/tmac/mdoc (created) missing: ./var/www/htdocs/manual/vhosts (created) missing: ./usr/include/ssl (created)

Fíjese en que /usr/share/man/cat4/powerpc es uno de los directorios creados por este proceso.

--

Originally [OpenBSD: upgrade-old.html,v 1.8 2003/06/22 18:54:12 david Exp ]
$OpenBSD: upgrade-old.html,v 1.7 2003/06/27 20:55:50 jufi Exp $
$Translation: upgrade-old.html,v 1.7 2003/06/22 21:28:33 horacio Exp $
Copyright © 1998-2003, Kjell Wooding.
Envíe cualquier comentario, duda o sugerencia (sólo en inglés, por favor) a kjell@openbsd.org