Package maintainer guide (Galego)

Benvido ao Package Maintainer Guide of Parabola GNU/Linux (Guia do Mantenedor de paquetes de Parabola GNU/Linux).

Este artículo describe os pasos necesários para comezar a traballar nos nosos repositorios. Se vai facer un novo reemplazo libre para algún paquete, consulte a nosa guía para a creación de reemplazos libres.

En primero lugar, tratar de pasar pola canle #parabola e suscribirse a lista de correo dev list . Se surxe algo importante, vostede o encontrara alí.

Ademais, debe rexistrarse no seguimento de incidencias, para que poidamos asinar tarefas ou vostede poida escoller alguns pola súa cuenta.

Ferramentas

Instale libretools. Tamén vai instalar ssh, rsync, git, devtools, que son as ferramentas necesárias para o paquete.

 # pacman -Sy libretools devtools
Note: devtools son un conxunto de scripts utilizados polos desarrolladores de Arch para facilitar as suas tarefas. Necesitamos as ferramentas chroot desde alí. Libretools é noso :)
Warning: Terás que editar o ficheiro /etc/libretools.conf e configurar o entorno de empaquetamento antes de utilizar libretools

Editando /etc/libretools.conf

A configuración para o 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: O que foi mostrado recentemente é a versión do ficheiro incluido en libretools o 26/11/2011, isto pode ter cambiado nas versións actuais, estamos a decir esto para avisar se o está usando como referencia.
Note: A información anterior de configuración do SSH non está actualizado. Despracese hacia abaixo para a configuración correcta.

Podes poñer a tua propia configuración por usuario ~/.config/libretools/libretools.conf en lugar do global en /etc/libretools.conf.

Warning: libremakepkg todavía necesita da configuración en /etc/libretools.conf incluso se ten a configuración por usuario.


Terá que editar este ficheiro:

 # $EDITOR /etc/libretools.conf

Configurar CHCOPY

Ao traballar con chroots, hai o chroot principal ($CHROOTDIR/root), e unha copia de traballo del, CHROOTDIR$/$chroot. É máis doado se definir chroot para o seu nome de usuario.

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

Elixa un COMMITCMD

Primeiro elixir un commitcmd:

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

Engadir firma GPG

A continuación, proporcione unha chave pública GnuPG para firmar o paquete:

Se non ten unha clave pública GnuPG pode utilizar o seahorse para construír unha clave utilizando o RSA 2048 e exportalo para gardalo.

Use a peza da chave ID no SIGID e descomente a liña correspondente:

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

Trocar ABSLIBREGIT

Se necesita forzar a abslibre.git (se vostede está mantendo un paquete), entonces necesitas editar ABSLIBREGIT:

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

Se xa se copiou o repositorio, para cambiar esto a after-the-fact (despois dos feitos), edite

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

Entorno de empaquetamento

O empaquetamento pode ser desordenada e converterse nunha carga (ao igual que calquera tarefa repetitiva). Libretools existe para facela máis lixera.

Directorio Chroot

Vai a precisar dun entorno de empaquetamento limpo para asegurarse de que os paquetes, funcionen en cada sistema de parábola a pesar da configuración e os paquetes que tes no teu. Para iso está o chroot.

Debe crear dentro un directorio chroot para a construción de paquetes. Isto tamén pode axudar a identificar as dependencias que faltan e manter o seu sistema limpo todos os días tamén. O xeito máis doado de facelo para ser executado é

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

Debes cambiar CHROOTDIR, CHROOT, CHCOPY en /etc/libretools.conf de acordo a configuración do seu chroot.

Directorio de traballo libretools

Para minimizar os erros nos paquetes de carga, creamos ferramentas automáticas para o proceso, noso libretools utiliza a xerarquía de directorios do noso repositorio.

Hai un script que lle axudará a xenerar directorio de traballo adecuado , asombrosamente chamado createworkdir. Execute isto, e creará todos os directorios necesarios, ademais que git-clone fará a árbore ABSLibre para ti.

 $ createworkdir

Pode encontrar máis información sobre a arbore de directorio aquí.

Host de Parabola para a configuración do seu ssh

Debe agregar isto ao seu ~/ssh/config:

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

E enviar o súa chave publica (~/.ssh/id_rsa.pub o nome personalizado) a Parabola mailing list.

Se vostede desexa o nombre do seu host diferente, tamén debe cambiar o seu
File: ~/.config/libretools/libretools.conf
'''PARABOLAHOST=nome_personalizado'''

Creación de paquetes

Para facer un librepackage, só necesitas do PKGBUILD de abslibre. Para actualizar no seu abslibre $ WORKDIR só debes facer:

 $ updateabslibre
Warning: Non usar calquera directorio en $WORKDIR/repos ou $WORKDIR/staging para construir

Só necesitas "copiar ou enlazar os ficheiros desde abslibre e facer:

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

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

-c opción para libremakepkg limpar a copia de chroot antes de construir o paquete

Cando isto termine terá un paquete de ${PKGDEST} especificado no ficheiro /etc/makepkg.conf.

Comprobe a páxina de libremakepkg para unha descripción de como traballa o libremakepkg.

Creando paquetes

Por favor, siga esta guia: Creating -libre packages

Subir paquetes

Para subir paquetes no noso repositorio, so ten que facer:

 $ librestage {repo-to-upload}
 $ librerelease

Consellos e trucos

Liberando vários paquetes ao mesmo tempo

Orixinalmente, librerelease debería decidir onde poñer un paquete e subilo ao repositorio servidor inmediatamente. Agora, librestage fai a primera parte e librerelease fai a segunda, entón na práctica, podes facer vários paquetes e etapas para subilos máis tarde.

Organizando un só paquete para vários repositorios

Toma nota, librestage acepta varios nomes de repositorios como argumento. Se o fai, poderase organizar o paquete(s) en todos eles, o que permite cargar os paquetes en calquera número de repositorios que desexe. Non é unha función para abusar, pero é útil mentras migran a repositorios [libre] e [libre-testing]... por exemplo, terás que liberar a [core] e [libre], o [testing] e [libre-testing] ao mesmo tempo.

Control MD5sum

Se cambias a matriz de fontes nun PKGBUILD, terás que cambiar a matriz md5sums para poder reflexar o teu. Retírea do PKGBUILD e a utlización deste comando para xenerar md5sum para os teus paquetes:

 $ makepkg -g >> PKGBUILD

Conexión SSH para Parabola

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

 $ chmod 700 * *.*

Se añadeu o host de parabola para o teu ~/.ssh/config, podes simplemente facer:

 $ ssh parabola