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.1: ¿Dónde se encuentra la información sobre las versiones de OpenBSD más recientes?
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.
2.7.1: ¿Cuáles son los problemas más comunes para actualizar desde la versión 2.7 a la 2.8?
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.
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) enuthread_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.
2.4.1: Cambios en las páginas del manual.
2.4.2: Cambio en la sintaxis de cap_mkdb.
2.4.3: Snake.
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.
En la guía de actualización para las versiones actuales.
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:
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"
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.
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:
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
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
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
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).
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
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/
Ejecute make build:
# cd /usr/src && make build
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.
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
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
Para que Kerberos IV compile correctamente deberá seguir los siguientes pasos:
Obtenga la versión más reciente de usr.bin/compile_et y compílela.
# cd /usr/src/usr.bin/compile_et
# make clean && make depend && make && make install
Obtenga la versión más reciente de lib/libcom_err compílela.
# cd /usr/src/lib/libcom_err
# make clean && make depend && make && make install
Limpie los ficheros de cabecera de Kerberos y recompílelos:
# rm -r /usr/include/kerberosIV/*
# cd /usr/src/kerberosIV
# make includes
Recompile los archivos de las bibliotecas de Kerberos:
# cd /usr/src/kerberosIV/lib
# make clean && make depend && make && make install
Si no va a realizar una compilación completa, recompile Kerberos:
# cd /usr/src/kerberosIV
# make cleandir && make depend && make && make install
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
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:
Debe actualizar los bloques de arranque. En la sección 14.8 encontrará la información pertinente.
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
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.
Seguramente, este cambio será el más significativo que se encuentre. Puede ver las instrucciones detalladas en la sección 2.5.2.
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.
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.
#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.
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.
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.
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.
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
.
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.
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.
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.
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:
statfs
de linux no
convertía ente nombres de sistemas de archivos de BSD y
números f_type de linux. Ahora lo hace, ya
que el número f_type de BSD no sirve para las
aplicaciones de linux (y de todos modos lo hemos
eliminado).struct statfs
de FreeBSD es diferente al
nuestro (el viejo y el nuevo) y necesita conversión.
Anteriormente, las llamadas al sistema de OpenBSD se usaban
sin una traducción real.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
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.
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
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.
Antes de actualizar /usr/src/games/snake
tiene
que eliminar el contenido del directorio obj.
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:
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.
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