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


Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb
do piss test find second hand smoke

- 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

eldemonio.org El site BSD en Castellano Articles catalogue

Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb

eldemonio.org v 4_2