Cómo actualizar FreeBSD desde la línea de comando

Buenas,

Después de tener la máquina apagada casi un mes, toca actualizar, ya que este equipo está expuesto directamente al tráfico de Internet, con lo que hay que andarse con ojo, aunque como bien sabemos, las máquinas UNIX sólo suelen sufrir ataques automatizados contra SSH, y poco más.

Para ello, nos vamos a apoyar principalmente en portsnap y vamos a hacer una actualización de carácter general, en el que no recompilaremos el núcleo, con la finalidad de ilustrar el proceso con el mayor detalle posible. Obviamente, según adquiráis mejor destreza con el sistema, aprenderéis a no tener instalado más software de la cuenta, y a lograr actualizar rápida y cómodamente, ya que el exceso de paquetería lastra considerablemente estos procesos.

Lamentablemente, FreeBSD no es un sistema pensado para personas con poco conocimiento, con lo que los procesos de actualización son toscos, densos y si no se tiene afinado el sistema, largos y desesperantes. Aquí no existen Windows Update ni ventanitas automáticas de actualización :)

Instalar portsnap

Este paso sólo tiene sentido en versiones inferiores a la 6, ya que en ésta y en sucesivas, portsnap es parte del sistema que se distribuye por defecto en los repositorios.

nas# cd /usr/ports/ports-mgmt/portsnap
nas# make install clean

La ejecución en la consola del comando nos arroja la siguiente información general de uso:

nas# portsnap
usage: portsnap [options] command … [path]

Options:
-d workdir — Store working files in workdir
(default: /var/db/portsnap/)
-f conffile — Read configuration options from conffile
(default: /etc/portsnap.conf)
-I — Update INDEX only. (update command only)
-k KEY — Trust an RSA key with SHA256 hash of KEY
-l descfile — Merge the specified local describes file into the INDEX.
-p portsdir — Location of uncompressed ports tree
(default: /usr/ports/)
-s server — Server from which to fetch updates.
(default: portsnap.FreeBSD.org)
path — Extract only parts of the tree starting with the given
string. (extract command only)
Commands:
fetch — Fetch a compressed snapshot of the ports tree,
or update an existing snapshot.
cron — Sleep rand(3600) seconds, and then fetch updates.
extract — Extract snapshot of ports tree, replacing existing
files and directories.
update — Update ports tree to match current snapshot, replacing
files and directories which have changed.

Actualización de la colección de ports

Este proceso es algo largo, ya que se localiza y descarga el último snapshot disponible, y luego, tras verificarse, se extrae. El proceso puede consumir varios minutos, especialmente si se tiene la colección completa de ports, así que hay que ejecutarlo con paciencia :)

nas# portsnap fetch extract
Looking up portsnap.FreeBSD.org mirrors… 4 mirrors found.
Fetching snapshot tag from portsnap3.FreeBSD.org… done.
Latest snapshot on server matches what we already have.
No updates needed.

En este caso, tal y como se puede comprobar, se nos informa que no son necesarias las actualizaciones disponibles.

Desplegar el listado de paquetes que precisan actualización

Para ello empleamos pkg_version con la parametrización -vIL=

nas# pkg_version -vIL=
ORBit2-2.14.3 < needs updating (index has 2.14.8) apache-1.3.37_1 < needs updating (index has 1.3.39) aspell-0.60.4_4 < needs updating (index has 0.60.5_2) atk-1.12.3 < needs updating (index has 1.18.0_1) autoconf-2.59_2 < needs updating (index has 2.59_3) avahi-0.6.14 < needs updating (index has 0.6.21) bitstream-vera-1.10_2 < needs updating (index has 1.10_4) cairo-1.2.4 < needs updating (index has 1.4.10) cdrtools-2.01_5 < needs updating (index has 2.01_6) cups-base-1.2.2 < needs updating (index has 1.2.12) dbus-0.93_3 < needs updating (index has 1.0.2_2) dbus-glib-0.71 < needs updating (index has 0.74) desktop-file-utils-0.11 < needs updating (index has 0.12_1) docbook-sk-4.1.2_3 < needs updating (index has 4.1.2_4) docbook-xsl-1.70.1 < needs updating (index has 1.71.1_2) dvd+rw-tools-6.1 < needs updating (index has 7.0) esound-0.2.36_1 < needs updating (index has 0.2.38)

Actualizar los paquetes

Actualizaremos mediante portmanager -u. Para ello, debemos instalarlo primero, ya que no es un producto que se distribuya con el sistema operativo. Recomiendo, en el menú contextual que aparece, seleccionar la opción de debug para portmanager, de modo que podamos investigar las trazas de error que aparezcan:

nas# cd /usr/ports/sysutils/portmanager
nas# make install clean

A continuación, estamos en condiciones de ejecutar portmanager:

nas# portmanager -u

Este proceso consume bastante tiempo si el número de paquetes del que disponemos es elevado, ya que requiere construir previamente información sobre los paquetes instalados para poder gestionar las actualizaciones. Acto seguido, actualizará los paquetes, ejecutando para ello un proceso de compilación personalizado para cada uno de los ports presentes en el sistema, lo que incrementará considerablemente el tiempo de ejecución. No apto para impacientes :)

Actualizaciones de seguridad. Instalación de binarios

Cuando lo que deseamos es centrarnos en las actualizaciones de seguridad, recurrimos a un proceso más corto de fetching.

nas# freebsd-update fetch
Looking up update.FreeBSD.org mirrors… 1 mirrors found.
Fetching public key from update1.FreeBSD.org… done.
Fetching metadata signature from update1.FreeBSD.org… done.
Fetching metadata index… done.
Fetching 2 metadata files… done.
Inspecting system… done.
Preparing to download files… done.
Fetching 38 patches…..10….20….30…. done.
Applying patches… done.

En este proceso obtenemos un interesante aviso, útil para programar las actividades de migración de entornos de producción basados en este sistema:

WARNING: FreeBSD 6.2-RELEASE is approaching its End-of-Life date.
It is strongly recommended that you upgrade to a newer
release within the next 4 months.

Tan pronto acabe el fetching, actualizamos:

nas# freebsd-update install
Installing updates… done.

Esta es en líneas generales la pauta de actualización del software de un sistema FreeBSD. Como a buen seguro que me he olvidado algo, sentíos libres de comentar lo que estimés oportuno.

Un saludo,

6 comentarios sobre “Cómo actualizar FreeBSD desde la línea de comando

  1. HOla se ve interesante yo tengo un servidor de estos pero no se no como instalar menos como entrar desde windows por eso yo de lejitos no mas con ese servidor eejjej

  2. Gracias por la informacion, tuve que incursionar en el mundo de FreeBSD a la de afuerzas para poder configurar una lan casera … Pero aun asi esta interesante!

    Saludos!

  3. dexter_one,

    Me alegro de que encuentres utilidad en el artículo :)

    FreeBSD es un gran sistema. Es el que empleo en la actualidad para casi todo tanto en mi NAS casero como en mi escritorio. Me encanta.

    Pero no te negaré que tiene que mejorar mucho en cuanto a actualizaciones, entre rama y rama tiende a quebrarse si no se actualiza con mucha paciencia.

    Un saludo,

Comentarios cerrados.