Actualizando FreeBSD
From SoloBSD Wiki
Contents |
Introducción
En este texto trataré de explicar la manera en la que llegué a tener mi sistema FreeBSD estable, partiendo de las RELEASE de la versión 8.1, así que la gran parte de lo que aquí describa, se supone que debe funcionar en esta versión y siguientes.
CSup
Primeramente descargaremos el código fuente para poder llevar a cabo la actualización del sistema, se asume que tenemos un sistema FreeBSD acabado de instalar.
En caso de que las fuentes no estén instaladas aún en /usr/src, usaremos:
# sysinstall
para instalarlas. Elegimos Configure| Distributions|src y proseguimos con su instalación.
FreeBSD ya contiene en la base del sistema, la utilería csup para ayudarnos a jalar las fuentes actualizadas del sistema. Así que primeramente. Creamos:
# mkdir -p /usr/local/etc/csup/sup
y dentro de el hacemos el archivo supfile que contendrá lo siguiente:
*default host=cvsup.FreeBSD.org *default base=/usr/local/etc/csup *default prefix=/usr *default release=cvs tag=RELENG_8 *default delete use-rel-suffix *default compress src-all
Nota: en la primera línea debes cambiar el mirror por el que esté mas cercano a tí.
Ahora el archivo /usr/local/bin/cvsrun:
#!/bin/sh echo Subject: `hostname` weekly csup run output /usr/bin/csup -g -L 2 /usr/local/etc/csup/sup/supfile
Hacemos los scripts ejecutables para root solamente, obviamente esto lo hacemos como root:
# chown root:wheel /usr/local/bin/cvsrun # chmod u+x /usr/local/bin/cvsrun
Después podemos ponerlo en el crontab, lo cual queda a gusto de cada uno de ustedes, en lo personal prefiero ejecutarlo cuando lo crea necesario.
Finalmente, ya tenemos todo listo para actualizar las fuentes de nuestro sistema y también la raíz de los ports, para ello solo nos falta ejecutar, como root:
# /usr/local/bin/cvsrun
Make World
En esta sección nos ocuparemos de compilar las fuentes que hemos descargado y el kernel, actualizaremos e instalaremos y al final tendremos nuestro sistema personalizado.
Primeramente editaremos el archivo /etc/make.conf y añadimos lo siguiente:
CFLAGS= -O -pipe COPTFLAGS= -O -pipe NOPROFILE= true USA_RESIDENT= NO
Respaldamos /etc:
# cp -Rp /etc /etc.old
Ejecutamos mergemaster en modo pre-buildworld para actualizar los archivos esenciales para el éxito de buildworld e installworld:
# /usr/sbin/mergemaster -p -v
Borramos el antiguo /usr/obj:
# cd /usr/obj # chflags -R noschg * # rm -rf *
Compilamos desde el código fuente:
# cd /usr/src # make buildworld
A continuación nos vamos con el Kernel para configurarlo a la medida y compilarlo.
Haciendo un Kernel a la medida
Para hacer esto menos tedioso, se recomienda hacer una copia del archivo de configuración del kernel GENERIC:
# cd /usr/src/sys/i386/conf # cp GENERIC MIKERNEL
De preferencia, ponemos al kernel, el nombre del equipo en el que está corriendo y en mayúsculas.
Para echar a andar el sonido en tu máquina simplemente se añade lo siguiente en el archivo de configuración del kernel :
device sound
Ya tenemos listo nuestro kernel con soporte para audio y ahora solo nos queda compilar:
# cd /usr/src/ # make kernel KERNCONF=MIKERNEL
Nos vamos a modo single:
# shutdown now # fsck -p # mount -u / # mount -a -t ufs # swapon -a # adjkerntz -i
Instalamos los nuevos binarios del sistema:
# cd /usr/src # make installworld
Actualizamos los archivos de configuración del sistema:
# /usr/sbin/mergemaster -v
Actualizamos /dev/, generalmente mergemaster ofrecerá actualizar por nosotros, si lo quieres hacer manualmente pudes hacer:
# cd /dev # /bin/sh MAKEDEV all
Actualizamos /stand
# cd /usr/src/release/sysinstall # make clean # make all install
Finalmente reiniciamos!!!
# reboot
Hasta aquí contaremos con nuestro sistema actualizado en la rama -STABLE en el caso de FreeBSD 4.8 o con los últimos parches de seguridad para FreeBSD 5.1. Además tendremos nuestro kernel personalizado y con soporte para audio. A continuación nos ocuparemos de los ports y los actualizaremos.
Actualizando los Ports
Comenzamos actualizando nuestro árbol de ports:
# portsnap fetch update
Para trabajar a gusto con los ports, instalaremos Portupgrade de la siguiente manera:
# pkg_add -r portupgrade
O mediante los ports:
# cd /usr/ports/ports-mgmt/portupgrade # make all install clean
Ya tenemos Portupgrade instalado y ahora podemos actualizar con mayor comodidad nuestro árbol de ports. En pasos anteriores descargamos los ports junto con las fuentes, ahora el siguiente paso es sincronizar la raíz de los ports con el siguiente comando y así actualizar la base de datos:
# portsdb -uU
A continuación nos vamos por un cafesito o un cigarro (los que fumen) y ejecutamos:
# portupgrade -va
Este comando nos actualizará la totalidad de los ports que tengamos instalados en el sistema, el tiempo de este proceso dependerá del número de ports que tenga nuestro sistema, en mi caso tengo KDE, GNOME y Fluxbox lo cual causó que la actualización tardara bastante tiempo.
En caso de que surja algún problema durante la actualización, por ejemplo, un error que no te permita instalar el port en cuestión puedes hacer:
# cd /usr/ports/ruta/delport # make deinstall # make reinstall
Esto te solucionará muchos problemas cuando alguno de los ports se niegue a instalarse correctamente. También de vez en cuando tendrás que hacer uso de:
# pkgdb -F
para arreglar los problemas que te surjan con las dependencias. Finalmente, ya que la actualización haya termiando satisfactoriamente, te recomiendo usar el comando:
# portsclean -CD
el cuál te eliminará todos los directorios de trabajo de compilación de los ports y así recuperarás el espacio que ocuparon todos estos archivos en tu disco duro.
Conclusiones
Este documento muestra la manera en la que un servidor realizó el proceso de actualización, la documentación existente al respecto es bastante extensa, no olvides leer el Handbook en el encontrarás información más detallada.
Agradecimientos
Primero que nada un agradecimiento a Lili, mi prometida, por todo su apoyo y por la paciencia que me tuvo al planear y realizar este documento. Muchas Gracias!!!
A todos los integrantes de la lista de ElDemonio.org por sus contribuciones y por contestar a mis dudas, las cuales tuvieron mucho que ver con la tarea de estabilizar mi sistema y realizar este documento, además de enseñarme bastante sobre FreeBSD.
Así como a la gente del IRC en irc.freenode.net en los canales de #freebsd, #bsd.ve y #freebsdhelp por hacerme leer más de medio Handbook.
A todos, Muchas Gracias!!! y a contribuir y seguir aprendiendo!
Cualquier duda, comentario o mejora, dirijirse con el autor.

