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.
Contents
Herramientas
Instale libretools. También va a instalar ssh, rsync, git, devtools, que son las herramientas necesarias para el paquete.
# pacman -Sy libretools devtools
Editando /etc/libretools.conf
Configuración para libretools está en
## 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
Puedes poner tu propia configuración por-usuario ~/.config/libretools/libretools.conf en lugar del global en /etc/libretools.conf.
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.
## The working copy CHCOPY=$USUARIO
Elija un COMMITCMD
Primero eligir un commitcmd:
## 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
## 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:
## 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
[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:
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'''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
(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.