Package maintainer guide (Galego) - ParabolaWiki

# 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

Categories:

- Packaging
- Libretools