Autor: Koji
Fecha: 01/12/2000
Ultima revisión: 10/11/2001
Actualización de FreeBSD
a traves de Internet
Indice
1. Introducción
2. Preparando el sistema
3. Comenzando la actualización
4. Actualizando el directorio /etc
5. Actualización de los ports
6. Que hacer ante cualquier problema?
7. Despedida
Apéndice
A . Liberando espacio y acelerando la actualización en
otras ocasiones
B. Refuse files
1. Introduccioón
Hola a todos :-) para el que aun no sepa muy bien
de que va a ir este documento, le contaré que básicamente va a tratar de explicar
como se puede actualizar un FreeBSD a una versión superior a través de internet.
Ya que el procedimiento es casi el mismo, aprovechare este articulo para explicar
como actualizar tu FreeBSD a FreeBSD-stable, FreeBSD-current y como actualizar
los ports de FreeBSD.
|
NOTA: * Para el que sea nuevo en este mundillo
de FreeBSD comentaré que FreeBSD tiene varias ramas que están destinadas
a diferentes cosas.
La rama FreeBSD-stable pretende proveer un sistema
lo mas estable posible, y con el menor de bugs posibles. Esta rama esta
en continua actualización a medida que se van descubriendo bugs, por lo
tanto no es nada raro el tener que actualizar a -stable en una misma versión
varias veces
La rama FreeBSD-current pretende proveer un sistema
en desarrollo con los últimos soportes y nuevas características para el
sistema. Resumiendo.. que si lo que buscamos es estabilidad no es lo mas
recomendable el usar esta rama.
FreeBSD-release es la versión que viene
en los CD's o que podemos bajar como imagen ISO. Podriamos
decir que es una 'foto' de FreeBSD-stable, que despues de haberse probado
y 'testeado' se convierte en release.
Por otro lado los ports, son un conjunto de directorios
organizados por secciones (mail, ftp, www, etc) en las cuales residen
un conjunto de archivos (Makefiles, parches, etc) que nos proporcionaran
la descarga,configuración, compilación e instalación del programa mediante
comandos tan sencillos como 'make install'. Cada dia salen tanto
correcciones como nuevos ports, asi que también nos puede interesar actualizar
nuestro directorio /usr/ports que es el directorio donde están
los ports que tenemos actualmente disponibles para instalar. *
|
Los procedimientos a seguir para actualizar tu
FreeBSD pueden variar dependiendo de la versión que estes usando antes
de la actualización, es por ello que se intentará contemplar los cambios (siempre
que los haya) que se han de realizar para llevar a cabo la actualización correctamente
desde cualquier versión
Bueno no me enrollo mas y pasemos a la acción :-)
2. Preparando el sistema
Antes de empezar a actualizar nuestro sistema,
es importante comprobar si tenemos instaladas algunas cosas que necesitaremos
posteriormente. También comentaros lo que siempre se suele decir.. backup backup
backup :-) No tiene porque pasar nada.. pero es recomendable tener un backup
de lo que consideremos importante.
Dicho esto.. primero comprobar si tenemos un par de programas que necesitaremos.
Uno de ellos es el cvsup y otro el mergemaster. Si no me equivoco,
este ultimo (mergemaster) en las versiones de FreeBSD 4.X y superiores
ya viene incorporado, así que aseguraros que lo tenéis. Con un simple man
mergemaster o ls /usr/sbin/mergemaster debería valer. De lo contrario,
si estáis usando una versión inferior a 4.X podéis instalar el port tecleando
cd /usr/ports/sysutils/mergemaster && make install (aseguraos
que estáis conectados a internet al hacer esto. Aseguraos que tenéis también
el paquete ports instalado. Si no lo tuvierais podeis instalarlo ejecutando
/stand/sysinstall . Posteriormente vais a los Menús Configure
-> Distributions donde podrás marcar el paquete "ports" para
instalarlo. Tras hacer esto y al elegir el medio de instalación ya tendremos
el 'esqueleto' de ports en nuestro sistema.
El programa mergemaster lo usaremos para
actualizar al final el directorio /etc
El otro programa, cvsup, es el programa
que nos permitirá coger las fuentes de la versión de FreeBSD que queramos actualizar.
Podeis mirar si lo teneis tecleando:
daemon# pkg_info|grep
cvsup
cvsup-16.1e A general network file distribution
system optimized for CVS
Debería salir algo así si lo tenemos, aunque lo
mas normal es no tenerlo si es la primera vez que actualizais vuestro FreeBSD
por internet.
Para instalarlo podeis emplear los ports, los packages o incluso el tarball
(.tar.gz) de toda la vida, aunque yo recomiendo que instaleis el package si
es la primera vez que actualizais.
El package podeis obtenerlo de ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-stable/packages/net
y el archivo a bajar se llama cvsup-xx.xx.tgz (xx segun la versión).En
mi caso es el cvsup-16.1e.tgz. Una vez lo tengais bajado tecleamos como
root
daemon# pkg_add cvsup-xx.xx.tgz
|
NOTA: * Si decides instalar cvsup
con los ports has de comprobar (sobre todo si nunca o hace mucho que no
los actualizas) que la version del port de cvsup sea la 16.1d o superior.
Las versiones inferiores a la 16.1d contienen un bug y no pueden ser
utilizarlas para actualizar los fuentes de FreeBSD. Si lo intentas obtendras
un mensaje parecido a ese:
Protocol negotiation failed: See http://www.polstra.com/projects/freeware/CVSup/s1g/
for upgrading information
Para mas detalles consulta la web anterior.
Si tienes una versión inferior actualiza tu rama de ports o instala el package
como hemos indicado anteriormente. Si finalmente has actualizado los ports,
la ruta de cvsup es /usr/ports/net/cvsup y no /usr/ports/net/cvsup-bin
como antiguamente * |
3. Comenzando la actualización
Bien.. si habéis llegado hasta aquí
estáis listos para actualizar vuestro sistema
No tendremos que configurar demasiadas
cosas en el archivo de configuración de cvsup, ya que FreeBSD trae archivos
de ejemplo que nos vendrán muy bien y se ajustan a todas nuestras necesidades.
Estos archivos están localizados en el directorio /usr/share/examples/cvsup
Hay varios, nosotros haremos una
copia de uno de ellos y lo modificaremos a nuestro gusto:
daemon# cp /usr/share/examples/cvsup/stable-supfile
/usr/share/examples/cvsup/freebsd-supfile
Una vez tenemos la copia editamos el /usr/share/examples/cvsup/freebsd-supfile
para modificarlo a nuestro gusto.
Comentaré un poco por encima las modificaciones que se han de realizar
(lo que NO esta en negrita son comentarios mios):
[...]
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at
http://www.freebsd.org/handbook/mirrors.html .
*default host=CHANGE_THIS.FreeBSD.org
La linea *default host se
refiere a la dirección del servidor del que cogeremos las fuentes. Segun tu
zona geografica puede interesarte uno u otro. Yo resido en españa asi que cogeré
el español. Para saber que mirrors tienes consulta la web que figura en el comentario:
http://www.freebsd.org/handbook/mirrors.html
Una vez que tenemos el host lo ponemos:
*default host=cvsup.es.FreeBSD.org
Las lineas *default prefix=/usr
y *default base=/usr indican de donde se cogerán las fuentes
y donde se pondrán. Esto nosotros no lo tocaremos
La linea *default release=cvs tag=RELENG_4 indica
a que versión queremos actualizar. Se ha de ir con cuidado con lo que
se pone, y tener claro a que queremos actualizar. Tal como está (con
el RELENG_4) indica que obtendrá los fuentes de FreeBSD 4.X-STABLE.
El X depende de cuando esteis actualizando. A fecha de hoy (10/11/2001) actualizaría
a FreeBSD 4.4-STABLE porque la ultima release de FreeBSD que ha salido ha sido
la 4.4. Hay muchas mas opciones. A continuación os pongo todos los tags
referente a versiones que figuran en el handbook:
| . |
Rama current (es un punto) |
| RELENG_4 |
Rama 4-STABLE |
| RELENG_4_4 |
Rama 4.4-RELEASE CON
los parches de seguridad indispensables aplicados |
| RELENG_4_3 |
Rama 4.3-RELEASE CON los parches de
seguridad indispensables aplicados |
| RELENG_3 |
Rama 3-STABLE |
| RELENG_2_2 |
Rama 2.2-RELEASE CON los parches de
seguridad indispensables aplicados |
| RELENG_4_4_0_RELEASE |
Rama 4.4-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_4_3_0_RELEASE |
Rama 4.3-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_4_2_0_RELEASE |
Rama 4.2-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_4_1_1_RELEASE |
Rama 4.1.1-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_4_1_0_RELEASE |
Rama 4.1-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_4_0_0_RELEASE |
Rama 4.0-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_5_0_RELEASE |
Rama 3.5-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_4_0_RELEASE |
Rama 3.4-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_3_0_RELEASE |
Rama 3.3-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_2_0_RELEASE |
Rama 3.2-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_1_0_RELEASE |
Rama 3.1-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_3_0_0_RELEASE |
Rama 3.0-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_8_RELEASE |
Rama 2.2.8-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_7_RELEASE |
Rama 2.2.7-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_6_RELEASE |
Rama 2.2.6-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_5_RELEASE |
Rama 2.2.5-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_2_RELEASE |
Rama 2.2.2-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_1_RELEASE |
Rama 2.2.1-RELEASE SIN los parches de
seguridad indispensables aplicados |
| RELENG_2_2_0_RELEASE |
Rama 2.2.0-RELEASE SIN los parches de
seguridad indispensables aplicados |
La linea *default compress solo
tendria que ser comentada si poseemos una conexión T1 o superior. Si
la poseeis comentarla poniendo delante un #
Finalmente si mirais mas abajo queda src-all
que indica que cogeremos TODOS los fuentes. Lo mas normal es cogerlos todos
y actualizar todo el /usr/src. Si eres nuevo recomiendo que actualices
todo.
Para el que quiera actualizar solo algunas secciones puntuales
no tiene mas que comentar con un # la linea src-all y descomentar (quitando
el #) las lineas que correspondan a las secciones que quiera actualizar
Una vez grabado los cambios nos
situamos en el directorio /usr/src y ejecutamos el siguiente comando:
daemon# cvsup /usr/share/examples/cvsup/freebsd-supfile
Y deberíamos ver algo al estilo
de:
Connected to cvsup.es.FreeBSD.org
Updating collection src-all/cvs
Checkout src/Makefile
Checkout src/Makefile.inc1
Checkout src/README
Checkout src/UPDATING
...
En este momento el sistema ya esta bajando el
código fuente del FreeBSD y lo esta colocando en /usr/src
No os puedo decir con exactitud el rato que lleva este proceso, ya que depende
mucho de la velocidad que tengáis de conexión y de la versión de FreeBSD que
tengáis actualmente.
Al acabar tendríais que ver algo así:
...
Edit src/usr.sbin/wicontrol/wicontrol.8
Edit src/usr.sbin/wicontrol/wicontrol.c
Finished successfully
Llegados a este punto comentaros algunas cosas.
Ahora que ya tenemos los fuentes, podemos obtar por compilar TODO o adecuar
la compilación a nuestras necesidades. Que quiere decir esto ultimo?
Os pondre un ejemplo. FreeBSD, trae en su sistema base cosas como el servidor
de correo Sendmail, o el servidor de nombres BIND. Que pasa si nosotros antiguamente
habíamos instalado Qmail y ya no usamos sendmail? pues que sencillamente
Sendmail se instalará y joderemos nuestro Qmail. Como arreglar esto?
Adecuando la compilación sencillamente.
Tenemos a nuestra disposición unas variables en un archivo
que indicarán lo que queremos compilar y lo que no. Estas variables estan
en /etc/defaults/make.conf. Este archivo NO debe ser modificado.
El procedimiento correcto es coger las variables que nos interesen y ponerlas
en /etc/make.conf
(crearlo si no existe)
Por ejemplo, si no quisieramos instalar el BIND, Sendmail, Perl
ni los juegos la configuración correcta de /etc/make.conf seria:
NO_BIND=true
NO_SENDMAIL=true
NOPERL=true
NOGAMES=true
Una vez comentado todo esto solo queda compilar
y instalar el codigo fuente. Para lo primero teclearemos desde /usr/src:
daemon# make buildworld
Una vez tecleado el buildworld el sistema
comenzará a compilar el código fuente. Este proceso tarda bastante, puede incluso
tardar varias horas, así que paciencia :-)
Si todo esto a salido bien, es la hora de compilar
un nuevo kernel. Para ello dependiendo de la versión de FreeBSD que tengamos
haremos lo siguiente:
-Si hemos actualizado a FreeBSD 4.3 o superior-
# cd /usr/src
# make buildkernel KERNCONF=nombre-de-tu-kernel
# make installkernel KERNCONF=nombre-de-tu-kernel
-Si hemos actualizado a FreeBSD 4.0, 4.1,
4.1.1 o 4.2-
# cd /usr/src
# make buildkernel KERNEL=nombre-de-tu-kernel
# make installkernel KERNEL=nombre-de-tu-kernel
-Si hemos actualizado a FreeBSD 1.x, 2.x o
3.x-
# cd /usr/src/sys/i386/conf
# /usr/obj/usr/src/usr.sbin/config/config nombre-de-mi-kernel
# cd ../../compile/nombre-de-mi-kernel
# make depend; make; make install
(Cambiad nombre-de-mi-kernel por el nombre
que tengáis. Si no tenéis ninguno poner como nombre GENERIC. Si no especificamos
el kernel con las variables KERNCONF o KERNEL FreeBSD tomará
el kernel GENERIC)
Una vez que ha acabado y que la cosa no ha dado
ningún error reiniciaremos el sistema para instalar los ficheros compilados
en sus directorios correspondientes, así que teclearemos:
daemon# shutdown now
No es necesario reiniciar, pero si recomendable.
Una vez reiniciado nos iremos al directorio /usr/src y teclearemos:
daemon# make installworld
El proceso del installworld lo que hace
es instalar todos los binarios del sistema que hemos compilado a sus directorios
correspondientes. No debería tardar ni mucho menos tanto como el paso anterior.
Me gustaría daros una aproximación, pero todo depende de vuestro procesador
y demás :-)
Al acabar solo queda actualizar una cosa, esta
cosa es el directorio /etc
|
NOTA (No aplicable a la rama current):
* A parte de quedar por actualizar el directorio /etc también
queda actualizar el programa sysinstall (Este es el programa que
nos sale cuando instalamos FreeBSD. También lo usamos posteriormente para
configurar algunas cosas de nuestro sistema. Por defecto no se actualiza
automaticamente, así que si queremos hacer un upgrade de él, teclearemos
desde el directorio /usr/src/release/sysinstall :
daemon# make all install
Y ya lo tendremos actualizado :-) *
|
|
NOTA2: * Los pasos make buildworld
y make installworld se pueden hacer en uno solo tecleando make
world desde /usr/src . No obstante, yo recomiendo hacerlo en
estos 2 pasos explicados, ya que a la hora de detectar errores o fallos
de compilación y instalación es mas fácil de detectar en que paso a fallado
la cosa. Es el mismo caso de buildkernel y installkernel
que se puede simplificar con make kernel *
|
4. Actualizando el directorio /etc
El /etc es un directorio peligroso y importante, esta es la razón
de la que porque no se actualiza automaticamente como el resto del sistema.
Podríamos actualizarlo a mano, pero se convierte en una tarea un poco pesada.
Así que haremos uso del programa mergemaster que hemos comentado en la
sección anterior.
Su modo de uso no es muy complicado, pero siempre recomiendo que leáis su documentación
para que veáis todas sus posibles opciones y para saber como funciona (man
mergemaster)
Una costumbre que tengo antes de lanzar mergemaster es
hacer una copia de todo el /etc por si tengo algun despite. Para ello
no hay mas que teclear:
daemon# cp -pr /etc /root
Ahora ya si que estamos listos para ejecutar el programa, así
que teclearemos lo siguiente desde /usr/src:
daemon# mergemaster
Al ejecutarlo es posible que nos haga una pregunta
de si queremos usar el directorio por defecto /var/tmp/temproot . Nosotros
diremos que si. A partir de ahora, mergemaster mirará archivo por archivo
y comparará un archivo del viejo /etc con el del nuevo /etc (mergemaster
solo mira los archivos que difieren con el mismo nombre).
Las posibles opciones que podemos realizar sobre
los archivos del /etc son:
(d) para borrar el archivo
(m) para unir el archivo nuevo con el viejo
(i) para instalar el archivo nuevo y machacar el archivo viejo
(v) para ver las diferencias entre el archivo viejo y nuevo
Este es uno de los procesos mas delicados de
la actualización de FreeBSD, ¡PRECAUCIÓN! ;-) . Archivos
como /etc/passwd, /etc/master.passwd, /etc/hosts, /etc/group,
/etc/rc.conf, etc. están en juego
Al acabar el proceso de comparación es muy probable que
nuestro mergemaster nos haya preguntado automaticamente
si queremos crear los nuevos devices de /dev. Si es asi le diremos que
si y si no os hicira ningun tipo de pregunta lo tendriamos que hacer a mano
tecleando:
daemon# sh /dev/MAKEDEV all
Por ultimo solo queda reiniciar y hacer un
uname -a a ver que dice el bicho :-)
suerte!
5. Actualización de los ports
No me extenderé mucho para explicar esto ya que
el proceso viene a ser exactamente igual.Lo primero es
hacer una copia para hacer los cambios oportunos en ella:
daemon# cp /usr/share/examples/cvsup/ports-supfile /usr/share/examples/cvsup/freebsdports-supfile
Editamos /usr/share/examples/cvsup/freebsdports-supfile
Como podeis ver este archivo es muy parecido al que usemos anteriormente
para actualizar los fuentes. Debeis especificar de la misma manera el servidor
cvsup de donde cogereis los ports, en nuestro caso cogeremos de nuevo el español:
*default host=cvsup.es.freebsd.org
Aseguraros que teneis *default release=cvs tag=.
(con el ".")
Y ya para acabar, si quereis bajaros todo el esqueleto de ports
comprobar que teneis ports-all sin comentar. Si quereis actualizar solo
algunas secciones de los ports no teneis mas que comentar ports-all y
descomentar cada una de las secciones que quereis actualizar
Solo queda hacer un cvsup /usr/share/examples/cvsup/freebsdports-supfile
Acto seguido el directorio de ports se comenzaran
a actualizar :-)
|
NOTA: * Forma alternativa de actualizar nuestros ports:
Editamos (o creamos si previamente no existe) el archivo /etc/make.conf
y ponemos:
SUP_UPDATE= yes
SUP= /usr/local/bin/cvsup
SUPFLAGS= -g -L 2
SUPHOST= cvsup.es.FreeBSD.org
PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
De esta manera y al teclear make update desde /usr/ports
vuestro esqueleto de ports se actualizará
Modificad los valores a vuestro gusto y consultad /etc/defaults/make.conf
para otros posibles valores
|
6. Que hacer ante cualquier
problema?
Dependiendo en donde haya fallado la actualización deberemos
hacer una u otra cosa:
Relgla general y obligada
Leer el archivo /usr/src/UPDATING que contiene notas, cambios y
apuntes sobre la actualización
- Ha fallado en el buildworld o installworld
-
Si peta en este punto lo mas fácil y recomendable es esperar algunas
horas o incluso algun dia para volver a realizar el proceso del cvsup
Porque esperar? Sencillo, los fuentes estan en continua actualización
por los desarrolladores. Tan pronto se sabe que hay algun tipo de problema se
intenta corregir los fuentes, por eso cuanto mas tiempo dejemos pasar hasta
repetir el proceso de cvsup mas posibilidades hay de que el problema esté
subsanado.
Que hacer si despues de esperar el problema persiste? Si sigue petando en el
mismo sitio podemos obtar por comentarlo en las listas de FreeBSD destinadas
a estos temas. Si estamos teniendo problemas con la rama stable podemos dirigirnos
a freebsd-stable
y si estamos teniendo los problemas con current a freebsd-current
Si peta en diferentes sitios cada vez que intentamos el buildworld o
installworld es mas que probable que se trate de un problema de hardware
de nuestro ordenador
- Ha fallado en la compilacion o instalación del kernel -
A veces puede pasar que tengamos un kernel hecho a partir del GENERIC
del FreeBSD anterior a la actualización. Imaginaros que por alguna razón
nosotros antes de la actualización tenemos un FreeBSD 4.3 y en nuestro
kernel tenemos configurado algunas opciones que con FreeBSD 4.4 (version a la
que hemos actualizado) han cambiado. Que pasaria entonces? sencillamente que
si usamos nuestro kernel viejo personalizado no iria la cosa. Yo recomiendo
que partais de la base del nuevo GENERIC y que os mireis /sys/i386/conf/LINT
o /sys/i386/conf/NOTES (si habeis actualizado a current) para ver si
la sintaxis de las opciones sigue igual o si esas opciones aun siguen soportadas
por esa versión de FreeBSD.
- Me he liado con mergemaster y me he cargado algun archivo de /etc
-
Hiciste la copia de todo el /etc que
propuse? Espero que si
Aqui no puedo darte una solución exacta. Paciencia y a comprobar la copia
de /root/etc con /etc a ver lo que se te ha colado
7. Despedida
Espero haberme explicado lo mas claro posible. Quizá la primera vez que se
hace esto puede resultar un poco complicado, pero ya vereis que a la que lo
hagáis 2 o 3 veces lo veréis como una cosa sencilla.
Y como siempre pues decir que cualquier critica constructiva será bienvenida,
y si hay algún error o me he equivocado en algo pues también ;-)
saludos
koji
Apéndice
A. Liberando espacio y acelerando la actualización
en otras ocasiones
El proceso de actualización tiene dos inconvenientes
a destacar. El primero y mas notable es el de la lentitud del compilado de fuentes
y el segundo es el espacio en disco que disminuye en cada actualización.
A continuación os proponemos algunos consejos y soluciones para estos
dos inconvenientes:
En cuanto a liberación de espacio se refiere
podemos borrar tranquilamente el directorio /usr/obj. Este directorio
contiene todos los archivos objeto (object files) que se han creado durante
la compilación. Al borrarlo liberaremos bastante espacio. Si no lo hemos borrado
y si hacemos una compilación de los fuentes en futuras ocasiones nuestro sistema
borrará ese directorio automaticamente para compilar las nuevas fuentes. Si
lo que queremos es acelerar la compilación, una solución es no borrar /usr/obj
y pasarle el parámetro -NOCLEAN al make: make -DNOCLEAN buildworld
o make -DNOCLEAN world desde /usr/src como siempre.
El parametro -DNOCLEAN también nos sirve
para reanudar la compilación en el punto que se paró si no finalizó el proceso
exitosamente
Para otras posibles ligeras optimizaciones en
cuanto a velocidad se refiere a la hora de compilación y instalación del sistema
podemos mirarnos los parámetros CFLAGS explicados en /etc/defaults/make.conf
. Si nos interesa alguno solo tendremos que ponerlos en /etc/make.conf antes
de la compilación y instalación de los fuentes. Si estais interesados en obtener
mas información sobre estas opciones y sobre como optimizar aun mas nuestro
FreeBSD en las compilaciones te recomiendo que leas el articulo: Optimizando
FreeBSD mediante compilaciones (totalmente en castellano)
Ya para acabar, y como ultima idea para acelerar
la velocidad de acceso a disco, podemos configurar
softupdates o montar la partición que contenga /usr/src o/y /usr/obj
con el parámetro noatime o async. Para mas info man mount
B. Refuse files
Imaginaos que estamos dispuestos a actualizar nuestro sistema
(a -stable), pero por alguna razón no nos interesa actualizar la sección games
( usr/src/games). En esta situación lo mas lógico seria editar el archivo
/usr/share/examples/cvsup/freebsd-supfile (o el archivo que usemos para
actualizar) y comentar la sección src-all descomentando posteriormente
todas las otras secciones excluyendo a src-games por supuesto. Con esto
ya habríamos acabado, pero el tratar por secciones a todos los paquetes nos
da poca libertad. Que pasaría si por alguna extraña razón yo quisiera actualizar
todo el sistema menos cualquier archivo llamado Makefile ? Esto no es
posible con todo lo que hemos visto, sin embargo gracias a los refuse files
es posible.
No os puedo asegurar hasta que versión del cvsup funciona esta
característica, lo que si os confirmo es que lo he probado en la versión cvsup-bin-16.1
y funciona.
El archivo en el cual especificaremos que no queremos actualizar
ningún Makefile se llama refuse y tal como tenemos configurados
los ejemplos de /usr/share/examples/cvsup debe estar situado en /usr/sup,
esto puede cambiarse por supuesto.
No esta de mas que os miréis el readme del refuse situado en
/usr/share/examples/cvsup/refuse.README y un ejemplo que trae el cvsup
situado en /usr/share/examples/cvsup/refuse . Pongámoslo aquí para comentarlo:
src/etc/sendmail/freebsd.mc*
ports/chinese
ports/french
ports/german
ports/hebrew
ports/japanese
ports/korean
ports/russian
ports/ukrainian
ports/vietnamese
Como veis es fácil de interpretar. Con este ejemplo no se actualizan
todas las colecciones de ports que veis listadas y además, a la hora de actualizar
el sistema el o los archivos sendmail/freebsd.mc* tampoco se actualiza/n.
La sintaxis del archivo no permite comentarios y las líneas han de estar una
debajo de otra o bien separando los patrones con un espacio en blanco.
Continuando con nuestro ejemplo del Makefile vayamos
a /usr/sup y creemos el refuse para que quede asi:
src/*Makefile*
Esto impide bajar cualquier archivo Makefile que este
al menos en src. El primer * indica todos los directorios de
src (/, games, etc, sbin etc.), el segundo indica que seguirá el
patrón Makefile + lo que sea (Makefile, Makefile.inc etc
Si quisiéramos solo no actualizar los Makefile de
/usr/src con src/Makefile* bastaría. Si por el contrario solo quisiéramos
indicar que no bajara los Makefile de games pondríamos: src/games/Makefile*.
Como veis posibilidades hay muchas.
Para acabar veamos como podemos cambiar la ruta de ubicación
de refuse .
Para cambiar la configuración tenemos que editar el archivo que usemos para
actualizar lo que queramos actualizar en ese momento (ports-supfile ,
standard-supfile, stable-supfile, freebsd-supfile etc.) y tocar
la configuración de la línea *default base=/usr. Cambiaremos /usr
por el directorio root que queramos que tenga nuestra configuración de cvsup.
Recordad que si especificais por ejemplo /etc el archivo refuse
siempre ha de estar en sup por lo tanto lo ubicaríamos en /etc/sup.
No os preocupéis si en ese momento /etc/sup no existe, cvsup lo creará.
A parte también creará una especie de "base de datos" con todos los archivos
que ha mirado, especificando si los ha editado solo, si los ha actualizado etc.
Este archivo estará ubicado dentro del directorio sup y dentro de otro
directorio con el nombre de la sección que hemos especificado a actualizar.
Por ejemplo, si estabamos actualizando todos los ports (apartado ports-all
descomentado) y teníamos configurado la ruta asi *default base=/etc deberíamos
habernos creado el archivo /etc/sup/ports-all/checkouts.cvs:. conteniendo
todo tipo de información sobre nuestros ports. Ej:
-...-
U ports/archivers/nulib 2#861#11#01#0
D ports/archivers/p5-Archive-Tar
C ports/archivers/p5-Archive-Tar/Makefile,v . . 2#871#19##15253#444
1.
#871#16#4347393#6593#644
C ports/archivers/p5-Archive-Tar/distinfo,v . . 2#871#19##3933#444
1.1
#871#19##653#644
C ports/archivers/p5-Archive-Tar/pkg-comment,v . . 2#871#19##3833#444
1.1 #871#19##553#644
C ports/archivers/p5-Archive-Tar/pkg-descr,v . . 2#871#19##8433#444
1.
1 #871#19##5143#644
C ports/archivers/p5-Archive-Tar/pkg-plist,v . . 2#871#19##7083#444
1.
1 #871#19##3773#644
-...-
Como veis se indica la fecha, el estado (U=Upgrade,
D =Delete etc) y otras cosas
| NOTA: * Al especificar una ruta
en los refuse files siempre omitimos /usr debido a que ya queda especificado
en la configuración mediante la linea *default prefix=/usr * |
Si por el contrario habéis descomentado por ejemplo las secciones
ports-base , ports-archivers y ports-astro tendréis tres
directorios con tres checkouts.cvs correspondientes a cada sección de
ports actualizada (/etc/sup/ports-base/checkouts.cvs:. , /etc/sup/ports-archivers/checkouts.cvs:.
y /etc/sup/ports-astro/checkouts.cvs:.)
Las rutas y configuración también se pueden cambiar desde el interprete de comandos.
Para ello os aconsejo un man cvsup donde os dará todo tipo de información
sobre todas sus características y opciones
by Koji
|