Este breve artículo explica cómo resolver problemas con pkg y portmaster a la hora de resolver dependencias.



En ocasiones pueden ocurrir problemas de dependencias en los ports de FreeBSD. Estos problemas suelen ser introducidos por cambios drásticos en la paquetería. Por ejemplo, cuando se reemplazan paquetes por otros, se cambian directorios destino, se modifican las dependencias o archivos de configuración. También pueden ocurrir bugs temporales que luego se parchan pero pueden requerir algún tipo de intervención manual. Incluso a veces las versiones de los fuentes son superiores a las disponibles en los binarios (debido al tiempo necesario para compilar y entregar los mismos) lo que podría generar alguna inconsistencia cuando se mezclan paquetes binarios con paquetes compilados desde los ports.

En generar no suceden problemas, pero en caso de que ocurran, es conveniente saber si se requiere intervención manual y de qué forma.

Los ports están continuamente siendo actualizados por la comunidad. Por ello se recomienda refrescar la colección de ports completa (sobre todo al momento de instalar un nuevo paquete), dado que muchos ports dependen de otras ramas del árbol, incluso donde parezca ser contra-intuitivo.

Los cambios que afectan el sistema de ports completo están documentados en el archivo CHANGES (versión de texto plano). Mientras que los cambios que afectan a ports individuales están documentados en el archivo UPDATING (versión de texto plano). Es recomendable estar al tanto de las novedades en ambos archivos (incluso es posible suscribirse por RSS a los mismos), particularmente al momento de actualizar.

Los problemas de dependencias suelen ser descubiertos y resueltos por los propios maintainers, por ello el primer lugar donde buscar información sobre cómo resolverlos es en el archivo UPDATING.

También es posible consultar (y suscribirse a) el sitio www.freshports.org, el cual también posee una cuenta de Twitter y un blog con las novedades. Este sitio muestra los últimos 100 commits, y permite revisar commits por fecha.

Por ejemplo, a mí me pasó que recientemente se separó el paquete gettext en los paquetes gettext-runtime y gettext-devel. Esto provocó que los usuarios de gettext tuviéramos que reinstalar gettext de forma forzada ejecutando:

# pkg delete -f gettext
# portmaster devel/gettext

Para casos donde se debe reinstalar un paquete de forma forzada (sin tocar sus dependencias) se debe utilizar la opción -f en el comando pkg. De lo contrario, al desinstalar el paquete, pkg tratará de desinstalar todos los paquetes que dependen del mismo.

En la gran mayoría de los casos, los problemas de dependencias se resuelven reinstalando los ports conflictivos de manera forzada (como en el ejemplo anterior), o actualizando la colección de ports:

# portsnap fetch update

En el peor de los casos será necesario reinstalar la colección de ports ejecutando:

# portsnap fetch
# portsnap extract

En la página freebsd.levsha.me/usr/ports/updating se documentan las soluciones para resolver la mayoría de los problemas introducidos en cambios que afectan ports individuales.


Tal vez pueda interesarte


Compartí este artículo