Asumir el mantenimiento de ports que no están matenidos es una forma excelente de involucrarse. Los ports que no están mantenidos solo se actualizan y arreglan cuando alguien se ofrece como voluntario para trabajar en ellos. Hay una gran cantidad de ports sin mantenimiento. Es una buena idea empezar adoptando un port que use de forma regular.
Los ports que no están mantenidos tiene como MAINTAINER
asignado ports@FreeBSD.org
. Puede ver un listado de todos los ports sin mantenimiento, así como sus errores actuales e informes de problemas en el FreeBSD Ports Monitoring System.
Algunos ports afectan a muchos otros debido a las dependencias y las relaciones con los ports que dependan de ellos. En general, esperamos que las personas tengan algo de experiencia antes de ofrecerse voluntariamente para mantener dichos ports.
Puede comprobar si un port tiene o no dependencias o si otros puertos depende de él consultando el índice maestro de ports, INDEX
. (El nombre del archivo varía según la versión de FreeBSD; por ejemplo, INDEX-8
) Algunos ports tienen dependencias condicionales que no están incluidas en la compilación predeterminada de INDEX
. Esperamos que pueda reconocer dichos ports analizando el archivo Makefile
de otros ports.
Primero, asegúrese de de comprender cuáles serán sus responsabilidades como maintainer. Lea también el Handbook del Porter. Por favor, no se comprometa con más de lo que crea que puede manejar cómodamente.
Puede solicitar el mantenimiento de cualquier port que esté sin mantenimiento cuando lo desee. Simplemente configure el parámetro MAINTAINER
con su propia dirección de correo electrónico y envíe un PR (informe de problemas) con el cambio. Si el port tiene errores de compilación o necesita actualizarse, es posible que desee aprovechar la oportunidad para incluir cualquier otro cambio que se requiera en ese mismo PR. Esto acelerará el proceso, ya que muchos committers no están dispuestos a asignar la responsabilidad del mantenimiento del port a alguien que no tenga un historial de trabajo con FreeBSD. La mejor forma de crear un historial de trabajo es enviando PRs corrigiendo errores de compilación o actualizando ports.
Envíe su PR a la categoría ports
y utilice la clase change-request
. Un committer revisará su PR, commiteara los cambios y finalmente cerrará el PR. En algunas ocasiones, este proceso puede llevar cierto tiempo (los committers también son voluntarios :).
Esta sección le dará una visión general de por qué los ports deben mantenerse y describirá las responsabilidades de un maintainer de port.
Crear un port es una tarea que se realiza una vez. Pero asegurar que un port esté siempre actualizado y continúe compilandose y ejecutándose correctamente requiere de un esfuerzo de mantenimiento continuo. Los Maintainers son las personas que dedican parte de su tiempo a cumplir estos objetivos.
La razón principal por la que los ports necesitan mantenimiento es para disponga de las versiones más actualizadas y mejor software de terceros a la comunidad de FreeBSD. Un desafío adicional es mantener los ports para que continuen funcionando dentro del framework de la colección de ports a medida que este evoluciona.
Como maintainer deberá enfrentarse a los siguientes desafíos:
Nuevas versiones y actualizaciones de software. Las nuevas versiones y actualizaciones de software están disponibles todo el tiempo para las aplicaciones que ya han sido portadas, y deben incorporarse a la colección de ports para proporcionar un software actualizado.
Cambios en las dependencias. Si se realizan cambios significativos en las dependencias de su port es posible que deba actualizarlas para que continúe funcionando correctamente.
Cambios que afectan a los ports que dependen de los suyos. Si otros ports depende de un port que mantiene, los cambios en su port pueden requerir que se coordine con otros maintainers.
Interacción con otros usuarios, maintainers y desarrolladores. Parte de ser maintainer es asumir el rol de proporcionar soporte. No esperamos que de soporte a nivel general (pero aceptaremos gustosos si decide hacerlo). Lo que debe proporcionar es un punto de apoyo para los problemas específicos de FreeBSD que estén relacionados con sus ports.
Caza de bugs. Un port puede verse afectado por errores específicos de FreeBSD. Deberá investigar, encontrar y corregir estos errores cuando sean reportados. Es mucho mejor probar meticulosamente un port para identificar todos sus potenciales problemas antes de añadirlo a la colección de ports.
Cambios en la infraestructura y política de ports. Ocasionalmente, los sistemas que se utilizan para compilar los ports y paquetes se actualizan o se hace una nueva recomendación que afecta a la infraestructura. Debe tener en cuenta estos cambios en caso de que sus ports se vean afectados y requieran de una actualización.
Cambios en el sistema base. FreeBSD está en constante desarrollo. Los cambios en el software, en las bibliotecas, en el kernel o incluso los cambios en las políticas pueden hacer necesarios ciertos de cambios en los ports.
Esta sección describe el proceso a seguir para mantener sus ports actualizados.
Esto es un resumen. Dispone de más información sobre la actualización de un port en el Handbook del Porter.
Esté atento a las actualizaciones
Monitorice el desarrollo para estar al tanto de nuevas versiones, actualizaciones y correcciones de seguridad. Las listas de correo de anuncios o las páginas web de noticias son útiles para este propósito. En ocasiones los usuarios se pondrán en contacto con usted para preguntarle cuándo se actualizará su port. Si está ocupado con otras cosas o simplemente no puede actualizarlo por alguna razón pregunte al usuario si puede ayudarlo enviándole una actualización.
También puede recibir un correo electrónico automatizado de FreeBSD Ports Version Check
informándole que ya hay una nueva versión disponible del distfile de su port. En el mensaje se incluirá más información (incluido el cómo dejar de recibir los correos electrónicos en el futuro).
Incorporar cambios
Una vez que estén disponibles incorpore los cambios en el port. Es necesario generar un parche con las diferencias entre el port original y el port actualizado.
Revisar y probar
Revise y pruebe a fondo sus cambios:
Compile, instale y pruebe su port en tantas plataformas y arquitecturas como pueda. Es común que un port funcione en una rama o plataforma y falle en otra.
Asegúrese de que las dependencias de su port estén completas. La forma recomendada de hacerlo es instalando su propio tinderbox de ports. Tiene más información en la sección de recursos.
Compruebe que la lista de componentes del paquete esté actualizada. Esto implica añadir nuevos archivos y directorios, así como eliminar entradas no utilizadas.
Compruebe su port utilizando portlint(1) como guía. Consulte los recursos para obtener información importante sobre el uso de portlint.
Tenga presente la posilidad de que los cambios en su port puedan causar que otros ports dejen de funcionar (se rompan). Si este es el caso coordine los cambios con los maintainers de esos ports. Esto cobra especial importancia si su actualización cambia la versión de la librería compartida; en este caso, como mínimo, los ports que dependan del suyo deberán aumentar de versión su PORTREVISION
para que puedan actualizarse de forma automática con herramientas como portmaster o portupgrade(1).
Enviar los cambios
Envíe su actualización enviando un PR con una explicación de los cambios y un parque que contenga las diferencias entre el port original y el actualizado. Consulte el artículo Cómo enviar informes de problemas de FreeBSD para obtener más información sobre como escribir un PR correctamente.
No envíe un archivo shar(1) de todo el port; en su lugar, utilice el comando diff(1) -ruN
. De esta forma, los committers pueden ver más fácilmente de forma exacta qué cambios se están están realizando. Consulte la sección de actualización del Handbook del Porter para más información.
Esperar
Llegado el momento un committer se encargará de su PR. Esto puede llevar entre unos minutos y varias semanas, así que tenga paciencia.
Proporcione feedback
Si un committer encuentra algún problema en sus cambios lo más probable es que se los devuelva. Una respuesta rápida ayudará a que se haga más rápido el commit. Es muy importante mantener abierto el canal de comunicación para acelerar la resolución de cualquier problema.
Y para concluir
Se hará el commit con sus cambios y el port habrá sido actualizado. Después se cerrará el PR. ¡Eso es todo!
Esta sección trata sobre descubrir y solucionar problemas que impiden que sus ports se compilen correctamente.
El proyecto FreeBSD solo garantiza que la colección de ports funcione en la rama -STABLE
. En teoría debería poder ejecutarse la última versión de cada rama estable (ya que se espera que las ABIs no cambien) pero si funciona también en las demás ramas es aun mejor.
Dado que la mayor parte de las instalaciones de FreeBSD se ejecutan en ordenadores comunes (arquitectura i386
), esperamos que mantenga el port funcionando en esta arquitectura. También preferimos que los ports funcionen de forma nativa en la arquitectura amd64
. No dude en pedir ayuda si no dispone de una de estas máquinas.
Los fallos habituales para ordenadores que no son x86
se producen porque los programadores originales asumieron que, por ejemplo, los punteros son int
s, o que se utilizaría una versión mas antigua del compilador gcc. Cada vez más, los autores de las aplicaciones están reescribiendo su código para eliminar estos fallos — pero si el autor no mantiene activamente su código, es posible que deba hacerlo usted mismo.
Estas son las tareas que debe realizar para garantizar que su port pueda compilarse:
Esté atento a los fallos en la compilación
Revise su correo y busque mensajes de pkg-fallout@FreeBSD.org
y revise el distfiles scanner para ver si alguno de los ports que mantiene y que no se está compilando está desactualizado.
Recopile información
Cuando encuentre algún problema recopile información para ayudar a solucionarlo. Los errores de compilación reportados por pkg-fallout
incluyen registros que le mostrarán dónde falló la compilación. Si un usuario le informó sobre el fallo pídale que le envíe información que pueda ayudar a identificar el problema, como por ejemplo:
Logs de la compilación
Los comandos y opciones utilizados para compilar el port (incluidas las opciones establecidas en /etc/make.conf
)
Un listado de los paquetes instalados en su sistema, por ejemplo la salida del comando pkg-info(8)
La versión de FreeBSD que está ejecutando, es decir, la salida del comando uname(1) -a
Cuándo se actualizó por última vez su colección de ports
Cuándo se actualizó por última vez su árbol de ports e INDEX
Investigue y encuentre una solución
Lamentablemente no hay un proceso a seguir que sea sencillo. Sin embargo, recuerde que si está atascado puede pedir ayuda. La lista de correo de los ports de FreeBSD es un buen sitio para encontrarla, así como los desarrolladores originales del programa.
Enviar los cambios
Al igual que con la actualización de un port, ahora debe incorporar los cambios, revisar, probar y enviar sus cambios en eun PR y proporcionar feedback si es necesario.
Enviar parches a los autores originales
En algunos casos necesitará aplicar parches un port para que se ejecute en FreeBSD. Algunos autores originales (aunque no todos) aceptarán incorporar dichos parches en su código en la próxima versión. Si lo hacen esto podría ayudar a los usuarios de otros sistemas BSD y tal vez evitar duplicar esfuerzos. Como cortesía, recomendamos enviar los parches de este tipo a los autores originales.
Esta sección trata sobre encontrar y corregir errores.
Los errores específicos de FreeBSD son causados generalmente por suposiciones sobre los entornos de compilación y ejecución que no afectan a FreeBSD. Es poco probable que encuentre este tipo de problemas, pero pueden ser sutiles y difíciles de diagnosticar.
Estas son las tareas que debe realizar para garantizar que su port continúe funcionando según lo previsto:
Responda a los informes de errores
Los errores le pueden llegar por correo electrónico a través del sistema de informe de problemas. Los usuarios también le pueden informar de los errores directamente.
Debe responder a los PRs y otros reportes en máximo 14 días, pero trate de no demorarse tanto. Intente responder lo antes posible, incluso si es solo para decir que necesita más tiempo antes de empezar a trabajar en el PR.
Si no ha respondido después de 14 días, cualquier committer puede realizar el commit de un PR al que no ha respondido utilizando la regla maintainer-timeout
.
Recopile información
Si la persona que informó del error no ha proporcionado una solución es su obligación recopilar la suficiente información para proporcionar una.
Si puede reproducir el error podrá recoger la mayor parte de la información que necesita. Si esto no es posible solicite a la persona que reportó el error que le proporcione la siguiente información:
Una descripción detallada de sus acciones, comportamiento esperado del programa y comportamiento real.
Una copia de los datos de entrada que producen el error
Información sobre su entorno de compilación y ejecución, por ejemplo, una lista de los paquetes instalados y la salida del comando env(1)
Core dumps
Stack traces
Eliminar informes incorrectos
Algunos informes de errores pueden ser incorrectos. Por ejemplo el usuario podría simplemente haber usado mal el programa, o los paquetes que tiene instalados pueden estar desactualizados y necesitan actualizarse. Algunas veces un error reportado no es específico de FreeBSD. En este caso informe del error a los desarrolladores originales del software. Si puede corregir el error también puede aplicar el parche al port para que se aplique antes de la próxima versión original.
Encontrar una solución
Al igual que sucede con los errores de compilación su tarea es encontrar una solución para el problema. Una vez más, tenga presente que si se atasca puede (y debe) pedir ayuda.
Enviar o aprobar cambios
Al igual que sucede con la actualización de un port debe incorporar los cambios, revisar, probar y enviar sus cambios en un PR (o hacer un seguimiento si ya existe un PR para el problema). Si otro usuario ha enviado cambios en el PR también puede enviar un seguimiento diciendo si aprueba o no los cambios.
Parte de las funciones de un maintainer es proporcionar soporte, no para el software en general sino para el port y las peculiaridades y problemas específicos de FreeBSD. Los usuarios pueden contactarle con preguntas, sugerencias, problemas y parches. La mayoría de las veces serán para asuntos específicos de FreeBSD.
Puede que ocasionalmente tenga que usar sus habilidades diplomáticas y dirigir amablemente a los usuarios que buscan asistencia técnica hacia los recursos apropiados. Alguna que otra vez se encontrará con que alguien le preguntará que por qué los RPM
s no están actualizados o qué hay que hacer para ejecutar tal software en tal o cual distribución de Linux. Aproveche la oportunidad para decirle que su port está actualizado (si ese es el caso, claro). Y sugiérale que pruebe FreeBSD.
A veces, los usuarios y desarrolladores decidirán que usted es una persona icupada cuyo tiempo es valioso y harán parte del trabajo por usted. Por ejemplo, podrían:
enviar un PR o enviarle parches para actualizar su port
investigar y tal vez proporcionar una solución a un PR o
incluso enviar cambios para su port.
En estos casos su obligación principal es responder rápidamente. Una vez más, el tiempo de espera para los maintainers es de 14 días. Después de este período se puede realizar el commit sin aprobación. Se han tomado la molestia de hacerlo por usted, así que por lo menos intente responder lo más rápido posible. Hecho esto, revise, apruebe, modifique o discuta los cambios con ellos lo antes posible.
Si puede hacerles saber que su contribución no cae en saco roto (y así debería ser) será posible que le ayuden en otras ocasiones más adelante :-).
Hay dos lugares realmente buenos para encontrar un port que necesite atención.
Puede usar la interfaz web de la base de datos de informes de problemas para buscar PRs que no están resueltos. La mayoría de los PRs relacionados con ports son actualizaciones, pero con un poco de investigación y hojeando las sinopsis debería encontrar algo interesante en lo que trabajar (la clase sw-bug
es un buen lugar para empezar).
El otro sitio es el FreeBSD Ports Monitoring System. En particular busque ports que no están mantenidos, con errores de compilación y marcados como BROKEN
. Es totalmente correcto enviar cambios para un port que está mantenido, pero recuerde preguntar al maintainer para así saber si ya están trabajando en el problema.
Una vez que haya encontrado un error o problema recopile información, investigue y arréglelo. Si ya existe un PR haga seguimiento del PR. Si no existe un PR créelo. Sus cambios serán revisados. Si son correctos serán aceptados y se hará el commit.
En cualquier caso el Ports Management Team (portmgr) se reserva el derecho a revocar su estatus de maintainer si no ha mantenido activamente su port durante un cierto periodo de tiempo. Actualmente este periodo se establece en 3 meses. Es decir, que transcurran tres meses durante los que haya problemas no resueltos o actualizaciones pendientes que no hayan sido abordadas en tiempo y forma.
En cualquier caso, el Ports Management Team (portmgr
) se reserva el derecho a revocar su estatus de maintainer si no ha mantenido activamente su port durante un cierto periodo de tiempo. (Actualmente, este periodo se establece en 3 meses). Con esto, queremos decir que haya problemas no resueltos o actualizaciones pendientes que no hayan sido abordadas durante este periodo.
El Handbook del Porter es su guía de referencia para el sistema de ports. ¡Tengala a mano!
El artículo Cómo enviar informes de problemas de FreeBSD describe la mejor forma de formular y enviar un PR. ¡En 2005, se enviaron más de once mil PR relacionados con los ports! Seguir este artículo nos ayudará enormemente a reducir el tiempo necesario para lidiar con sus PRs.
La base de datos de informes de problemas.
El FreeBSD Ports Monitoring System puede mostrarle información con referencias cruzadas sobre los ports, como errores de compilación e informes de problemas. Si es un maintainer, puede usarlo para verificar el estado de la compilación de sus ports. Como colaborador, puede usarlo para encontrar ports rotos y sin mantenimiento que deban ser reparados.
El FreeBSD Ports distfile scanner puede mostrarle los ports para los cuales los archivos distfiles no están disponibles. Puede usarlo para verificar sus propios ports o para encontrar ports que necesiten actualizar sus MASTER_SITES
.
ports-mgmt/poudriere es la forma más completa de probar un port a través de todo el ciclo de instalación, empaquetado y desinstalación. La documentación se encuentra en el repositorio de poudriere en github.
portlint(1) es una aplicación que permite verificar que su port cumple con muchas pautas importantes de estilo y funcionamiento. portlint es una aplicación heurística simple, por lo que solo debe utilizarla como guía. Si portlint sugiere cambios que parecen no tener sentido, consulte el Handbook del Porter o pida consejo.
La lista de correo de ports de FreeBSD está destinada a discusiones generales relacionadas con los ports. Es un buen lugar para pedir ayuda. Puede suscribirse, leer y buscar en los archivos historicos de la lista. También puede ser de su interés leer los archivos de la lista de correo de errores en los ports de FreeBSD y los mensajes de commit en el árbol del código fuente de los ports de la rama head/.
Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Si tiene dudas sobre FreeBSD consulte la
documentación antes de escribir a la lista
<questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a
<doc@FreeBSD.org>.