Package maintainer guide (Galego)

From ParabolaWiki
Jump to: navigation, search

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.

1 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

2 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

2.1 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

2.2 Elixa un COMMITCMD

Primeiro elixir un commitcmd:

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

2.3 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"

2.4 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

3 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.

3.1 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.

3.2 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í.

3.3 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'''

4 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.

5 Creando paquetes

Por favor, siga esta guia: Creating -libre packages

6 Subir paquetes

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

 $ librestage {repo-to-upload}
 $ librerelease

7 Consellos e trucos

7.1 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.

7.2 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.

7.3 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

7.4 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