Otros idiomas English ; Español ; Français ; |
Resumen: Esta página supone que has seguido completamente la página Becoming a Mageia Packager. En particular, has seguido los tutoriales Packaging for beginners y Packagers RPM tutorial. Eres aprendiz y tienes un mentor. En el resto de esta página, describiremos el flujo de trabajo principal que debes seguir para contribuir a Mageia como aprendiz. |
Contents
Flujo de trabajo del aprendiz
Preparativos
Del tutorial que has seguido, tu configuración ya debería tener los siguientes paquetes y su configuración correcta:
- rpm: nuestra versión parcheada de Red Hat.
- rpm-build: contiene los scripts utilizados para construir paquetes.
- spec-helper: una herramienta para minimizar los archivos de especificaciones haciendo cosas automáticas como eliminar los binarios y comprimir las páginas del manual.
- libtool: utilizado por algunos scripts de configuración para crear bibliotecas compartidas.
- rpmlint: se utiliza para verificar la validez del src.rpm generado.
Además, debes instalar:
- rpmlint-mageia-policy: políticas específicas de Mageia para rpmlint.
- mgarepo: para la interacción con el svn y el sistema de compilación de Mageia.
- bm: para construir y reconstruir paquetes.
- nopaste: para enviar parches fácilmente a uu mentor.
Para facilitar la creación de un nuevo archivo de especificaciones, instala:
- rpmdevtools: esto incluye el comando "rpmdev-newspec"
Para Mageia Cauldron, puedes instalar el metapaquete para empaquetadores.
- task-packager: este paquete instalará las herramientas necesarias que necesitas para comenzar.
Este software te facilitará la vida como aprendiz.
Configurando mgarepo
mgarepo es la principal forma en que los empaquetadores interactúan con la distribución de Mageia. Como aprendiz sin derechos de commit, necesitas configurarlo para usar el checkout anónimo. Para hacerlo, necesitas editar el archivo de configuración manualmente:
- Crea un archivo de configuración inicial:
mkdir ~/.mgarepo; cp /etc/mgarepo.conf ~/.mgarepo/config
- Edita ~/.mgarepo/config y cambiar:
repository = svn+ssh://svn.mageia.org/svn/packages/
por
repository = svn://svn.mageia.org/svn/packages/
Ya está todo preparado para empezar a trabajar con los paquetes. Las dos tareas principales que podrías tener que realizar son:
- Actualización de un paquete Mageia existente
- Importación de un nuevo paquete en Mageia
En los próximos párrafos, se supone que:
- Estás trabajando en los paquetes de Cauldron;
- Estarás en contacto con tu mentor para que te ayude si te surge alguna duda;
- Mantienes cerca de ti toda la documentación que necesitas, especialmente esta página y el tutorial.
Actualización de un paquete
Deseas (o su mentor te ha pedido) actualizar un paquete actual de Mageia Cauldron. Esto puede ser para corregir un error o una debilidad, o para actualizarlo a una versión más reciente.
- A.1. Verificar el paquete
mgarepo co foo
- Debes crear un directorio con subdirectorios SOURCES y SPECS. Ve a ese directorio:
cd foo
- A.2. Actualizar el spec
- Esto se hace usando tu editor de texto favorito. Por ejemplo:
emacs SPECS/foo.spec
- Trata de mantener sus cambios al mínimo. Esto facilita el trabajo de tu mentor al reducir la cantidad que tiene que revisar.
- Mira cómo se escriben otras especificaciones de paquetes para inspirarte. Sophie [1] puede ayudar.
- Cualquier cambio en un paquete existente debe incluir una actualización del parámetro %mkrel. Si vas a cambiar un paquete (pero no una nueva versión), simplemente aumenta en uno ese parámetro como parte de sus cambios. Por ejemplo:
%define release %mkrel 2
- Si estás trabajando para proporcionar una nueva versión, vuelve a poner %mkrel en 1.
- A.3. Para una nueva versión
- En el archivo de especificaciones, actualiza el campo versión y el vínculo Origen. Por ejemplo:
%define version 1.2.3 Source0: http://www.program.org/download/foo-%{version}.tar.gz
- Debes descargar la nueva fuente en el subdirectorio SOURCES. Se recomienda hacerlo con wget y utilizar el campo Fuente que acabas de actualizar en el archivo de especificaciones. Por ejemplo:
cd SOURCES; wget http://www.program.org/download/foo-1.2.3.tar.gz; cd ..
- A.4. Reconstruir
- Una vez que hayas realizado algunas modificaciones en tu paquete, debes compilarlo. Esto se puede hacer mediante el comando
bm -l
- Este comando en realidad construye al mismo tiempo el src.rpm y un rpm específico de la arquitectura. Crea y rellena los subdirectorios BUILD, BUILROOT, RPMS, SRPMS.
- Si solo deseas el src.rpm, use:
bm -ls
- Ahora hay dos posibilidades, o tiene éxito y vas al paso A.5, o falla y debes mirar el mensaje de error y la mayoría de las veces volver a A.2.
- Algunos errores serán obvios para que los resuelvas: paquetes instalados faltantes, errores tipográficos.
- Algunos errores requerirán un trabajo más complicado, como volver a diferenciar los parches. En ese caso, pregunta a tu mentor.
- Ahora hay dos posibilidades, o tiene éxito y vas al paso A.5, o falla y debes mirar el mensaje de error y la mayoría de las veces volver a A.2.
- A.5. Verificar el src.rpm
- rpmlint es una herramienta que ayuda a mantener cierto control de calidad sobre las RPM. Ejecuta siempre rpmlint en el src.rpm que hayas producido. Por ejemplo:
rpmlint SRPMS/foo-1.2.3-1.src.rpm
- rpmlint te dará errores y advertencias. Trata de reducir su número tanto como sea posible.
- Algunas advertencias son inevitables en esta etapa, como "sin firma" o "sin nombre de registro de cambios".
- Algunas advertencias (por ejemplo, sobre la mezcla de espacios y pestañas) son fáciles de corregir. En caso de duda, pregunta a tu mentor.
- rpmlint también se puede ejecutar directamente en la especificación. Las verificaciones son menos exhaustivas, pero puede ser útil como primera vez.
- rpmlint te dará errores y advertencias. Trata de reducir su número tanto como sea posible.
- A.6 Probar la instalación
- Instala el paquete rpm que acabas de crear. Por ejemplo (como root):
urpmi RPMS/x86_64/foo-1.2.3-2.mga2.x86_64.rpm
- Comprueba que funciona:
- ¿Aparece en el menú? ¿Se inicia correctamente desde la línea de comandos? ¿Realiza las tareas habituales que se supone que debe hacer?
- Comprueba la desinstalación. Por ejemplo (todavía como root):
- Comprueba que funciona:
urpme foo-1.2.3-2.mga2.x86_64.rpm
- ¿Se desinstaló sin ningún problema?
- A.7 Comprobar y enviar el parche
- Una vez que estés seguro del paquete que acabas de producir, echa un vistazo a sus cambios haciendo (en el directorio del paquete):
svn diff
- Esto te permite verificar si todos tus cambios son intencionales y que las muchas iteraciones a través de A.2-5 no enriquecieron la especificación con mucha basura. Trata de hacer que esa diferencia sea lo más pequeña posible (volviendo al paso A.2).
- Una vez que estés satisfecho tanto con el paquete como con el diff, puedes enviarlo a tu mentor. Una herramienta muy útil es nopaste. Por ejemplo:
svn diff > foo.spec.patch nopaste foo.spec.patch
- nopaste produce una URL que puede darle a tu mentor por correo electrónico o IRC. Luego lo revisará lo aplicará en su máquina, te pedirá que corrijas cualquier error que hayas cometido, luego lo entregará al Mageia svn.
- A.8 Disfruta del sistema de compilación
- Una vez que tu mentor haya aceptado el parche, puedes seguir la compilación del paquete en el sistema de compilación. Ve a [[2]].
- Si aparece verde: ¡victoria! Después de unos minutos, la nueva versión de tu paquete aparecerá en los espejos y será utilizada por todos los usuarios de Mageia.
- Si es rojo: no te preocupes que no has roto nada. Mira los mensajes de error e intenta solucionar el problema con tu mentor.
- Una vez que tu mentor haya aceptado el parche, puedes seguir la compilación del paquete en el sistema de compilación. Ve a [[2]].
Importando un paquete
Deseas (o tu mentor te ha pedido) importar un nuevo paquete a Mageia Cauldron. Sigue estos pasos:
- B.0 Preliminares
- Para importar un nuevo paquete, debes crear un nuevo src.rpm que debes enviar a tu mentor.
- Para ello, debes trabajar en el directorio rpm que creaste en el tutorial.
- Recordatorio (para crear estos directorios):
mkdir -p ~/rpm/{BUILD,BUILDROOT,RPMS/{$ARCH,noarch},SOURCES,SRPMS,SPECS,tmp}
- donde $ARCH son las arquitectura(s): i586 / x86_64
- Puedes comenzar eliminando todo el trabajo anterior que estaba en los subdirectorios de rpm.
- B.1 Existe un src.rpm de otra distribución
- Esta situación es más fácil de manejar, ya que deberías haberte familiarizado con los diferentes pasos del tutorial.
- Extraer el src.rpm
rpm -Uvh path/to/the/file/foo-1.2.3-1.mdvsrc.rpm
- Ir a B.3.
- B.2 El paquete no existe en ninguna otra distribución basada en rpm
- ¿Estás realmente seguro? Puede ser bajo un nombre diferente ...
- Ve al directorio rpm y coloca el archivo de origen en el subdirectorio SOURCES.
cd SOURCES; wget http://www.program.org/download/foo-1.2.3.tar.gz; cd ..
- Crea un archivo de especificaciones:
emacs SPECS/foo.spec
- Crear un archivo de especificaciones desde cero no es fácil, así que inspírate en los archivos de especificaciones de paquetes similares.
- Alternativamente, puedes usar el comando "rpmdev-newspec foo.spec" para obtener un bloque de creación básico para tu nuevo paquete.
- B.3 Sigue los pasos como en una actualización
- Sigue los pasos A.2 a A.6 de la sección anterior.
- B.4 Envía src.rpm a tu mentor.
- Una vez que estés satisfecho con el resultado, debes enviar el src.rpm que has producido a tu mentor.
- Intenta usar un repositorio en línea (como una página personal) en lugar de enviarlo por correo electrónico.
- Una vez que tu mentor lo reciba, echará un vistazo y te dará retroalimentación y posiblemente te pedirá que vuelvas al paso iterativo B.2.
- Cuando tu mentor esté contento, importará el paquete a Mageia y podrás acceder a la versión svn mediante:
mgarepo co foo
Conclusión del aprendiz
Los pasos A.1 a A.8 y B.1 a B.3, deben seguirse a lo largo de tu entrenamiento. ¡Los empaquetadores experimentados también los usan!
Cuando tu mentor decida que debes tener derechos de commit, ve a la siguiente sección.
Los procedimientos seguirán siendo esencialmente los mismos; sólo los pasos A.7 y B.3 diferirán sustancialmente.
Aprendiz + Flujo de trabajo
¡Ahora eres un aprendiz +, bien hecho! Antes de continuar, debes adaptar tu configuración a la nueva situación.
Actualizar tu cuenta para obtener derechos de confirmación
Cuando tu mentor piense que debe obtener derechos de confirmación, abrirá una solicitud de error en bugzilla, contra el componente Solicitud de cuenta de > de infraestructura. El error debe mencionar:
- El aprendiz inicia sesión en la identidad
- Que es una cuenta de aprendiz de empaquetador (ya que hay otros tipos de cuentas que se pueden solicitar)
Preparativos
- ssh
- Una vez que tu cuenta haya sido actualizada, deberías poder cargar tu clave ssh a la identidad, siguiendo las instrucciones en Packagers ssh. Una vez hecho esto, deberías poder acceder al svn usando tu cuenta.
- mgarepo
- Para usar mgarepo con tu identidad, debes volver a cambiar el archivo de configuración de mgarepo. Cambiar:
repository = svn://svn.mageia.org/svn/packages/ binaries-repository = svn://svn.mageia.org/svn/binrepos
- a
repository = svn+ssh://svn.mageia.org/svn/packages/ binaries-repository = svn+ssh://svn.mageia.org/svn/binrepos
Ten en cuenta que cualquier svn checkout que hayas hecho previamente (con una identidad anónima) no te permitirá hacer commit (ya que el login anónimo es recordado por svn). Tienes que volver a hacer nuevos checkouts.
Actualizando un paquete
Básicamente, debes seguir los mismos pasos que antes: A.1 a A.6
- A.3' Para una nueva versión
- El procedimiento cambia aquí desde antes: una vez que hayas configurado el campo de nueva versión y actualizado la URL Source0, puedes agregar la nueva fuente al repositorio usando mgarepo. Ya no hay necesidad de wget. Simplemente haz:
mgarepo sync -d
- y el nuevo archivo fuente se descargará de la URL y se registrará en el svn.
- A.7' Comprobar y confirmar el parche
- Como anteriormente, una vez que estés seguro del paquete que acabas de producir, echa un vistazo a sus cambios haciendo (en el directorio del paquete):
svn diff
- Sigue el mismo enfoque cuidadoso descrito en A.7.
- Una vez que estés satisfecho tanto con el paquete como con el diff, puedes confirmarlo:
mgarepo ci -m 'my commit message'
- Los mensajes de confirmación son importantes, ya que son la forma de transmitir a otros pacakgers los cambios que acabas de realizar.
- Si has realizado un solo cambio (por ejemplo, actualizar a la nueva versión 1.2.3), un mensaje de confirmación de línea es suficiente:
mgarepo ci -m 'update to new version 1.2.3'
- Si has realizado varios cambios no relacionados, escríbelos en varias líneas precedidas de un guión. El comando:
mgarepo ci
abrirá un editor (el especificado por la variable de entorno EDITOR). Allí puedes escribir el mensaje de confirmación que desees. Por ejemplo:
- Actualización a la nueva versión 1.2.3 - Añadido BuildRequires a python-devel - Limpiar las especificaciones - Arreglar el problema de la falta de un icono
- No dudes en preguntar a tu mentor y mirar los mensajes de confirmación anteriores para inspirarte:
mgarepo log foo
- proporciona el historial de mensajes de confirmación para el paquete foo.
- A.8' Enviar
- Después de confirmar, comunícate con tu mentor para que revise sus cambios y envíe el paquete.
Importando un paquete
Básicamente debes seguir los mismos pasos que antes: B.0 a B.3. Luego, en lugar de B.4, use B.5'.
- B.5' Importando un paquete
- La importación de un paquete se puede hacer una vez que se ha producido un src.rpm. A continuación, utiliza:
mgarepo import foo-1.2.3-1.src.rpm
- Una vez importado, puedes pedirle a tu mentor que revise y envíe el paquete.
Graduación
Cuando tu mentor considere que estás preparado, puede decidir ascenderte a empaquetador. Se eliminarán las restricciones de acceso al sistema de construcción. Sin embargo, los procedimientos que tendrás que seguir serán los mismos, excepto que podrás enviar los paquetes tu mismo.
Ten en cuenta que ser un aprendiz no consiste sólo en aprender a utilizar las diferentes herramientas mencionadas en esta página. También incluye:
- conocer las dependencias de los paquetes y el mantenimiento de las bibliotecas
- saber cómo arreglar los errores
- conocer la gestión de parches
E incluso después de ser promovido como empaquetador,
mucho que aprender tendrás todavía...
Algunos consejos:
- Mira los enlaces sugeridos al final de esta página, especialmente mgarepo.
- Manten el contacto con los usuarios, otros empaquetadores y tu mentor.
- Asume el mantenimiento de los paquetes.
- ¡Diviértete!
Sugerencias de trabajo para aprendices
Tu mentor no siempre te sugerirá algunas tareas: los aprendices deben tomar la iniciativa. Sin embargo, ten cuidado, algunos paquetes pueden estar ya a cargo de otras personas, y algunas actualizaciones pueden romper cosas. Siempre es aconsejable hablar con tu mentor sobre los cambios que piensas hacer. Él te dirigirá a la persona adecuada para preguntar, al canal IRC #mageia-dev o a la lista de correo.
Algunas sugerencias en prioridad descendente':
- Antes de agregar nuevos paquetes a Mageia, primero puedes buscar como corregir errores para paquetes existentes o ayudar a mantener paquetes actualmente sin mantenimiento.
Ver la lista actual de paquetes sin mantenimiento vinculados de manera prominente en la parte superior de nuestra página de descripción general del sistema de compilación. - Ayudar al equipo de control de calidad a validar la corrección de errores y las actualizaciones de seguridad, consulte candidatos a actualización actual y proceso de control de calidad para validar actualizaciones.
- Bugzilla es el lugar principal para buscar cuando quieres contribuir, pero no tienes un objetivo específico.
Busca en particular (pero no te limites a) los Trabajos_Junior_con_paquetes_existentes or Parches para paquetes existentes (o las palabras clave Trabajos Junior o Parche).
Ver las búsquedas guardadas para búsquedas más útiles en bugzilla. - Eliminación de las categorías X-MandrivaLinux y X-Mageia de todos los archivos .desktop, según https://bugs.mageia.org/show_bug.cgi?id=2449#c11 (consulte también algunos comentarios anteriores).
- Eliminar "Este paquete está en PLF porque..." de todos los paquetes donde se encuentre o adapte la redacción para decir "Este paquete está contaminado / no libre porque ..."
- http://check.mageia.org proporciona varios análisis de calidad sobre la distribución actual. Si algunas dependencias están rotas, faltan algunos paquetes o no están actualizados, puede echar un vistazo.
- Tome la dirección de mantenimiento de un programa que usa con particular frecuencia y, dependiendo de la situación, impórtelo, actualícelo y corrija sus errores (ejemplo de consulta). Fíjate especialmente en su estado ascendente y en su situación en otras distribuciones.
- Nuevas solicitudes de paquetes en Bugzilla.
Ver también
Todas las páginas en la categoría Packager en la wiki son relevantes, en particular:
Una gran cantidad de enlaces externos se dan en Packagers linkpage.