Package maintainer guide (Español)

Bienvenido a Package Maintainer Guide of Parabola GNU/Linux (Guia de Mantenedor del paquete de Parabola GNU/Linux).

Este artículo describe los pasos necesarios para empezar a trabajar en nuestros repositorios. Si va a hacer un nuevo reemplazo libre para algún paquete, consulte nuestra guía para la creación de reemplazos libres.

En primer lugar, tratar de pasar por el canal #parabola y suscribirse a la lista de correo dev list . Si surge algo importante, lo encontrará allí.

Además, debe registrarse en el seguimiento de incidencias, para que podamos asignar tareas o usted puede escoger algunos por su cuenta.

Herramientas

Instale libretools. También va a instalar ssh, rsync, git, devtools, que son las herramientas necesarias para el paquete.

 # pacman -Sy libretools devtools
Note: devtools son un conjunto de scripts utilizados por los desarrolladores de Arch para facilitar sus tareas. Necesitamos las herramientas chroot desde allí. Libretools son los nuestros :)
Warning: Tendrás que editar el archivo /etc/libretools.conf y configurar el entorno de empaquetamiento antes de utilizar libretools

Editando /etc/libretools.conf

Configuración para libretools está en

File: /etc/libretools.conf
## Blacklist URL
BLACKLIST=http://repo.parabolagnulinux.org/docs/blacklist.txt

# Diff tool (vimdiff, gvimdiff, meld, etc)
DIFFTOOL=vimdiff

# The dir where you work on
WORKDIR=/home/$USER/packages
# The repos you'll be packaging for
# Tip: As early repos take precedence on $REPOS loops, you can use this as
# inverted order of precedence. Put testing repos first so fullpkg find new
# PKGBUILDs first, for instance.
REPOS=('core' 'extra' 'community' 'libre' 'libre-testing' 'social' 'sugar')

# The architectures
ARCHES=('i686' 'x86_64' 'mips64el' 'any')

## The directory where the chroots are stored
CHROOTDIR=/home/chroot

## The working chroot
# A chroot is useful to build packages isolated from the current system and avoid
# unwanted (as in not in dependencies) automatic library linking 
CHROOT=root

## Obtains CacheDir from pacman.conf
CACHEDIR=`grep "^#\?CacheDir" /etc/pacman.conf | cut -d'=' -f2`

## Parabola hostname (should be the same used on ssh_config
PARABOLAHOST=parabola

## Run a command before releasing a package (ie. SSH connection, SSH tunnel, etc.)
HOOKPRERELEASE="ssh -fN parabola"

## Server destination of libre packages
# Don't change unless you know what you're doing and you won't screw
# anything ;)
LIBREDESTDIR=/srv/http/repo/public

## ABSLibre
ABSLIBREGIT=http://projects.parabolagnulinux.org/abslibre.git

## Commit Command
## Should be git or hg
## Uncomment only one of those
#COMMITCMD=git
#COMMITCMD=hg

## Build cmd for fullpkg-ng
## Uncomment one of those or make one of your choice
FULLBUILDCMD="sudo libremakepkg -cumL -M --noconfirm -M --nocheck"
#FULLBUILDCMD="here is a place for cross-compiling build cmd"

## Toru
# Section for toru's vars
TORUPATH=/var/lib/libretools/toru

## Package signing
# Leave commented to disable signing
#SIGEXT=".sig"
#SIGID="0xYOURID"

# Checks if vars aren't empty

for VAR in CHROOTDIR CHROOT CACHEDIR PARABOLAHOST LIBREDESTDIR \
    BLACKLIST WORKDIR REPOS ARCHES ABSLIBREGIT \
    COMMITCMD DIFFTOOL FULLBUILDCMD; do

    ret=0
    [[ -z ${!VAR} ]] && {
        echo "Configure $VAR var in /etc/libretools.conf"
        ret=1
    }
    [ $ret -ne 0 ] && exit 1 
done

source /usr/bin/libremessages

## These are architecture specific files.
## Uncomment them if you installed libretools-arch
#source /etc/libretools.d/mips64el.conf
#source /etc/libretools.d/x86_64.conf
#source /etc/libretools.d/i686.conf



## Recommended SSH Config follows
# SSH host, it's better if you have it configured on ~/.ssh/config
# with ControlMaster auto (and a shell opened somewhere else)
#
# Example:
# Host *
#    Protocol 2
#    ControlMaster auto
#    ControlPath /tmp/ssh-%r@%h:%p
#
## Repo server
# Host parabola
#    Port 22
#    HostName repo.parabolagnulinux.org
#    User parabolavnx
#    IdentityFile ~/.ssh/id_rsa
#
## Git server
# Host vparabola
#    Port 1863
#    HostName parabolagnulinux.org
#    User parabola
#    IdentityFile ~/.ssh/id_rsa
Note: Lo que fue mostrado recién es la versión del archivo incluido en libretools en el 26/11/2011, esto puede haber cambiado en las versiones actuales, estamos diciendo esto para avisar si lo está usando como referencia.
Note: La anterior información de configuración de SSH no está actualizado. Desplácese hacia abajo para la configuración correcta.

Puedes poner tu propia configuración por-usuario ~/.config/libretools/libretools.conf en lugar del global en /etc/libretools.conf.

Warning: libremakepkg todavía necesita de la configuración en /etc/libretools.conf incluso si tiene la configuración por-usuario.


Tienes que editar este archivo:

 # $EDITOR /etc/libretools.conf

Configurar CHCOPY

Al trabajar con entornos chroots, hay un chroot principal ($CHROOTDIR/root), y una copia de trabajo de la misma, CHROOTDIR$/$CHROOT. Es más fácil si establece CHROOT a su nombre de usuario.

File: /etc/libretools.conf
## The working copy
CHCOPY=$USUARIO

Elija un COMMITCMD

Primero eligir un commitcmd:

File: /etc/libretools.conf
## Uncomment only one of those
COMMITCMD=git
#COMMITCMD=hg

Añadir firma GPG

A continuación, proporcione una clave pública GnuPG para firmar el paquete:

Si usted no tiene una clave pública GnuPG puede utilizar el seahorse para construir uno con RSA 2048 y exportarlo para guardarlo.

Utilice la pieza de la clave ID en SIGID y descomente la línea

File: /etc/libretools.conf
## Package signing
# Leave commented to disable signing
#SIGEXT=".sig"
#SIGID="0xSUID"

Cambiar ABSLIBREGIT

Si necesita forzar a abslibre.git (si usted está manteniendo un paquete), entonces necesitas editar ABSLIBREGIT:

File: /etc/libretools.conf
## ABSLibre
ABSLIBREGIT=ssh://git@parabolagnulinux.org:1863/abslibre.git

Si ya se ha clonado el repositorio, para cambiar esto a after-the-fact (después de los hechos), edite

File: abslibre/.git/config
[remote "origin"]
url=ssh://git@parabolagnulinux.org:1863/abslibre.git

Entorno de empaquetamiento

El empaquetamiento puede ser desordenada y convertirse en una carga (al igual que cualquier tarea repetitiva). Libretools existe para hacerla más ligera.

Directorio Chroot

Vas a necesitar un entorno de empaquetamiento limpio para asegurarse de que los paquetes, funcionen en cada sistema de parábola a pesar de la configuración y los paquetes que tienes en el tuyo. Para eso está el chroot.

Es necesario crear una carpeta dentro un directorio chroot para la construcción de paquetes. Esto también le ayudará a identificar las dependencias faltantes y mantener su sistema de limpieza todos los días también. La forma más sencilla de hacer esto es ejecutar

 # libremkchroot -C /etc/pacman.conf -M /etc/makepkg.conf

Debes cambiar CHROOTDIR, CHROOT, CHCOPY en /etc/libretools.conf de acuerdo a la configuración de su chroot.

Directorio de trabajo libretools

Para minimizar los errores en los paquetes de carga, hemos creado herramientas automáticas para el proceso, nuestro libretools utiliza la jerarquía de directorios de nuestro repositorio.

Hay un script que te ayudará a generar un adecuado directorio de trabajo, asombrosamente llamado createworkdir. Ejecute esto, y creará todos los directorios necesarios, ademas que git-clone hará el árbol ABSLibre para ti.

 $ createworkdir

Puede encontrar más información sobre el árbol de directorio aquí.

Host de Parabola para su configuración de ssh

Debes agregar esto a tu ~/ssh/config:

File: ~/.ssh/config
Host parabola
      Port 1863
      HostName repo.parabola.nu
      User repo

Y enviar tu llave publica (~/.ssh/id_rsa.pub o nombre personalizado) a Parabola mailing list.

Si usted desea el nombre de su host diferente, también debes cambiar tu
File: ~/.config/libretools/libretools.conf
'''PARABOLAHOST=nombre_personalizado'''

Creación de paquetes

Para hacer un librepackage, solo necesitas el PKGBUILD de abslibre. Para actualizar en su abslibre $ WORKDIR sólo debes hacer:

 $ updateabslibre
Warning: No usar cualquier directorio en $WORKDIR/repos o $WORKDIR/staging para construir

(xihh) tiene un directorio llamado "build" en el directorio de trabajo en el que enlaza PKGBUILD y otros archivos desde abslibre y hace executar libremakepkg desde ahi. libremakepkg debe ser ejecutado via root.

Solo necesitas "copiar o enlazar los archivos desde abslibre y hacer:

 $ cd /directory/where/your/PKGBUILD/is
 # libremakepkg  -cu

-u opción para libremakepkg actualizar el chroot root antes de crear el paquete

-c opción para libremakepkg limpiar la copia de chroot antes de construir el paquete

Cuando esto termine tendrá un paquete de ${PKGDEST} especificado en el archivo /etc/makepkg.conf.

Chequee la pagina de libremakepkg para una descripción de como trabaja libremakepkg.

Creando paquetes

Por favor, sigue esta guia: Creating -libre packages

Subir paquetes

Para subir paquetes en nuestro repositorio, solo hacer:

 $ librestage {repo-to-upload}
 $ librerelease

Consejos y trucos

Liberando varios paquetes al mismo tiempo

Originalmente, librerelease debería decidir donde poner un paquete y subirlo al repositorio servidor inmediatamente. Ahora, librestage hace la primera parte y librerelease hace la segunda, entonces en la practica, puedes hacer varios paquetes y etapas para subirlos mas tarde.

Organizando un solo paquete para varios repositorios

Tome nota, librestage acepta varios nombres de repositorios como argumentos. Si lo hace, se pondrá organizar el paquete(s) en todos ellos, lo que le permite cargar los paquetes en cualquier número de repositorios que desee. No es una función para abusar, pero es útil mientras migran a repositorios [libre] y [libre-testing]... por ejemplo, tendrás que liberar a [core] y [libre], o [testing] y [libre-testing] al mismo tiempo.

Control MD5sum

Si cambias la matriz de fuentes en un PKGBUILD, tendrás que cambiar la matriz md5sums para poder reflejar el tuyo. Retírela del PKGBUILD y el uso de este comando para generar md5sum para tus paquetes:

 $ makepkg -g >> PKGBUILD

Conexión SSH para Parabola

Asegúrese de que los permisos en /home/${user}/.ssh sean 700:

 $ chmod 700 * *.*

Si ha añadido el host de parabola para tu ~/.ssh/config, puedes simplemente hacer:

 $ ssh parabola

Problemas

ERROR: Debe especificar un directorio y uno o más paquetes

Al intentar crear un entorno chroot con librechroot puede que el anterior mensaje de error aparezca. Lo que debes hacer para que el script librechroot funcione nuevamente es des-instalar el paquete libretools e instalarlo nuevamente. No es necesario borrar ningún archivo de configuración.