Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
FreeBSD: Actualizando el sistema

HnZeKtO's Diary
Por HnZeKtO
departamento BSD is alive , Sección Diarios
Puesto a las Thu Oct 2nd, 2003 at 04:03:04 PM CET
Hoy en día, gracias sobre todo a internet, y a las conexiones de banda "ancha", lo más normal suele ser tener el sistema actualizado o bien a las últimas versiones de los programas (para sistemas no críticos) o bien con las últimas actualizaciones de seguridad (para sistemas en producción).

Como es de esperar, FreeBSD también dispone de cantidad de utilidades para mantener el sistema al día como sysinstall, pkg_add -r, cvsup o portupgrade.

 


Para aquellos que no conozcan FreeBSD, cabe decir que dispone de varios formas de instalar software: mediante paquetes precompilados o mediante el uso de los ports.

La instalación del sistema base se puede hacer desde las vías comunes, instalación del sistema base desde CD, instalación desde diskettes, instalación desde red,... Todas ellas debidamente documentadas en el handbook. Y en todas ellas se hace uso del programa /stand/sysinstall. Sysinstall se usa durante el proceso de instalación para crear las particiones, configurar el kernel o la red, y después del proceso de instalación permite instalar paquetes (y sus dependencias) vía FTP, CD o NFS.

También se puede usar pkg_add para la instalación de paquetes, tanto remota como local, los paquetes en formato tgz se pueden obtener desde la propia web de FreeBSD o en la distribución de 4 CDs del sistema.

Y ahora toca la parte guapa de FreeBSD, el uso de los ports y la actualización del sistema base. Los ports son un árbol de directorios de meta-aplicaciones, en la que se encuentran Makefiles con información necesaria y suficiente para descargar el código fuente del programa seleccionado, junto con sus dependencias, y compilarlo a medida; así el proceso de instalación de un port bastará con posicionarse en el directorio del programa seleccionado (por ejemplo /usr/ports/net/cvsup), ejecutar make && make install && make clean para compilar e instalar el programa y sus correspondientes dependencias. Evidentemente también se puede reinstalar (make reinstall) o desinstalar paquetes instalados (make deinstall o pkg_delete o pkg_deinstall)

Con esto ya sabemos instalar ports, ahora toca el tema de la actualización, para ello se hace uso de cvsup que se puede utilizar tanto para actualizar el sistema base como para el árbol de ports.

Una vez actualizados vía cvsup los árboles de /usr/src y /usr/ports, ahora toca instalar el sistema. Para actualizar el sistema base nos podríamos colocar directamente en /usr/src y ejecutar make world, y nos podríamos ir a comer, dar un paseo y demás cosas (todo depende de la máquina en cuestión). Este comando compilaría e instalaría todo el sistema base salvo el kernel. Para hacer este paso en dos, y tener un mayor control, se ejecutaría primero make buildworld, que generaría un nuevo árbol bajo /usr/obj, y luego, make installworld, que instalaría ese árbol en el sistema.

Después de esto, deberíamos actualizar la nueva configuración del directorio /etc, se podría hacer a mano, pero para facilitar la tarea se usar el comando disponible en los ports, mergemaster, que nos irá mostrando y preguntado como ir actualizando los ficheros existentes en /etc del sistema base.

Para recompilar el kernel bastaría con ejecutar make buildkernel y make installkernel, aunque deberíamos personalizarlo para nuestra máquina y así aprovecharla al máximo. Y ya por último, sólo faltaría por actualizar sysinstall, y para hacerlo ejecutaremos make all install en el directorio /usr/src/release/sysinstall.

Para facilitar la instalación y actualización del árbol de ports, existe una herramienta llamada portupgrade, mediante la cual, con una simple llamada a portupgrade paquete después de haber ejecutado el cvsup, nos compilará e instalará la última versión disponible en los ports. O también con portinstall, se puede instalar un port por primera vez.

Conociendo todos estos comandos, nos podríamos crear un bash-script interactivo que ejecutara cada comando uno tras otro, automatizando así un poco la tarea :)

Ah y por cierto, para estar al día de las últimas versiones de los ports, imprescindible FreshPorts.

En próximas entregas, algunos trucos para facilitar y conocer más en profundidad el sistema de actualización de ports.
< Usuario número 1000. Y el ganador es... (11 comments) | Abierta la inscripción para el I Congreso javaHispano (0 comments) >
Enlaces Relacionados
· FreeBSD
· Todas ellas
· handbook
· Sysinstall
· la propia web de FreeBSD
· ports
· compilarlo a medida
· cvsup
· actualizar el sistema base
· compilaría e instalaría
· recompilar el kernel
· herramienta llamada portupgrade
· FreshPorts
· More on HnZeKtO's Diary
· Also by HnZeKtO

Encuesta
¿Merece la pena publicar esto en portada?
· De que sí 65%
· De que no 4%
· Ya te dije de que no iba a leer nada tuyo 4%
· Lo de que diga la rubia 26%

Votos: 23
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
FreeBSD: Actualizando el sistema | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Ahora los inconvenientes (4.00 / 1) (#4)
por Draco a las Sat Oct 4th, 2003 at 01:32:41 PM CET
(Información Usuario)

Los problemas a la hora de actualizar el sistema base se comentaron hace poco en la lista de FreeBSD en castellano y en OpenBSD Journal.

La cuestión es, supongamos que aparece un bug en una parte pequeña del sistema base y que hay que actualizar. Como no está dividido en paquetes, no puedes simplemente bajarte el binario e instalarlo. Compilar no es un gran incoveniente[1], pero la cuestión es que tienes que recompilar todo, a menos que lo hagas con un poco de cabeza. Puedes hacer un make -DNOCLEAN builworld, o si sabes qué partes han sido afectadas compilar sólo éstas. Ambas opciones tienen inconvenientes.

Con la primera no sabes qué ficheros han cambiado exactamente a no ser que mantengas un árbol antiguo y mediante un script veas las diferencias. Ésto no es un gran problema si sólo tienes una máquina, pero si tienes 30, sería interesante poder hacer un .tar.gz que distribuir por todas las máquinas. Otra opción es tener el /usr/obj exportado por NFS y que todos los hosts hagan un make installworld, pero tiene el inconveniente de que estás sustituyendo muchos más de los ficheros estrictamente necesarios.

Con la segunda opción tienes que saber exactamente qué compilar, pero tiene la ventaja de que compilas lo imprescindible y puedes generar un tar.gz. Por ejemplo, para sustituir un openssh sería algo así: $ cd /usr/src/usr.sbin/sshd
$ make all DESTDIR=/tmp install
Y lo mismo para:
./lib/libssh
./libexec/ssh-keysign
./usr.bin/ssh
./usr.bin/ssh-add
./usr.bin/ssh-agent
./usr.bin/ssh-keygen
./usr.bin/ssh-keyscan
y luego ya puedes hacer:
$ cd /tmp
$ tar cpBf - usr | ssh root@otrohost '(cd / ; tar xvBf -)'


Otro problema: quieres desinstalar algo del sistema base que no necesitas....

Afortunadamente la mayoría de las cosas del sistema base que no son desarrolladas directamente por FreeBSD (Sendmail, openssh,openssl....) están también en los ports lo que nos evitan casi todos estos problemas, pero ojalá el sistema base estuviera empaquetado....

[1] A no ser que tengas una máquina poco potente y no puedas hacer el build en ninguna otra...
There are two major products to come out of Berkeley: LSD & BSD Unix. I don't believe this to be a coincidence.


No necesariamente (none / 0) (#5)
por HnZeKtO a las Mon Oct 6th, 2003 at 04:28:08 PM CET
(Información Usuario) http://www.mundolinux.net/

No tiene porqué recompilarse todo, en el handbook explica que no es necesario ejecutar make world siempre que se actualice solo alguna parte del sistema base (aunque recomienda hacerlo al menos una vez al mes):

18.4.15.1. ¿Es necesario rehacer world en cada cambio?

No hay una respuesta fácil para esto, depende de la naturaleza del cambio. 
Por ejemplo, si sólo ejecutaste CVSup, y mostró las siguientes líneas 
mientras se actualizaba,

src/games/cribbage/instr.c
src/games/sail/pl_main.c
src/release/sysinstall/config.c
src/release/sysinstall/media.c
src/share/mk/bsd.port.mk

Probablemente no merezca la pena reconstruir world entero. 
Puedes ir a los subdirectorios apropiados y make all install, y ya esta. 
Pero si el cambio fue mayor, por ejemplo src/lib/libc/stdlib entonces 
deberías o rehacer world, o al menos aquellas de sus partes que estan 
estáticamente unidas (asi como cualquier otra cosa que hayas 
añadido y que esté unida estáticamente).

Lo que está claro que no te evitará recompilar el kernel si se ha actualizado algo del directorio /usr/src/sys

Respecto al tema de desinstalar parte del sistema base, bastaría con no actualizarlo y no usarlo, esto se especifica en el fichero /etc/make.conf. Por ejemplo, yo no uso ni Sendmail ni BIND que vienen con el sistema base, sino que uso Postfix y tinydns instalados desde los ports.

Y por último, respecto a lo de replicar la compilación en múltiples máquinas, como bien indicas basta con compartir /usr/obj y /usr/src por NFS y ejecutar make installworld en cada máquina restante

Cayetano
[ Padre ]


 
A portada (none / 0) (#1)
por NoP a las Fri Oct 3rd, 2003 at 11:32:43 AM CET
(Información Usuario)

Si lo hubieras mandado como noticia en vez de como diario (orientándolo como Cómo Actualizar un FreeBSD) yo le hubiera dado +1...

Un saludo.





 
Bien por los BSD'eros (none / 0) (#2)
por ThomasAnderson a las Fri Oct 3rd, 2003 at 06:22:22 PM CET
(Información Usuario)

NoP me dijo que habia completado una instalación de un sabor de BSD -no recuerdo cual- y yo, sigo empeñado en montar un OpenBSD en un Pentium 133 con unas 64 MB y 4GB para que sea el firewall+router de mi LAN casera y liberar la bicha para otros menesteres.

Ya que tu sabes del asunto, no pediré consejo, por aquí ya lo dieron, sí te preguntaré qué foros son los más activos de la comunidad, además de deadly en ingles, y el demonio... o de otra manera, un novato en BSD's pero con conocimientos GNU/Linux, ¿por dónde debe empezar?

...y sí, debía haber ido a portada.

--
Tengo la sensación de haber vivido esto antes...


No es difícil (none / 0) (#3)
por isard a las Sat Oct 4th, 2003 at 12:24:00 PM CET
(Información Usuario)

Llevo unos años usando linux (aunque no se puede decir que sea un experto). Instalé en un plis plas OpenBSD 3.3 en un Athlon --¿o era Duron?-- barato (300 y pico euros) y en un Cyrix586 paleolítico. Eso sí, sin X ni nada parecido: ambos hacen de cortafuegos.

Lo instalé desde el CD (que compré aquí) siguiendo las magníficas instrucciones de la página de OpenBSD (en castellano, en inglés, en checo...): incluyen incluso la explicación de cómo montar el cortafuegos. El CD viene con unas pegatinas majas y unas instrucciones resumidas suficientes para muchos; además, trae versiones para diversas "arquitecturas".

Si quieres te puedo grabar sólo el CD que corresponda a tu arquitectura para que lo pruebes. Si lo haces, seguro que el día 1 de noviembre (fecha de aparición de la versión 3.4) habrás hecho el pedido. :-)

En cuanto a por dónde empezar... yo creo que con lo que hay en la web es suficiente.

[ Padre ]


 
FreeBSD: Actualizando el sistema | 5 comentarios (5 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda