Package maintainer guide (Português) - ParabolaWiki

# Package maintainer guide (Português)

Bem vindo ao a do Mantenedor de Pacotes do Parábola GNU/Linux

Este artículo mostra os passos necessários para começar a trabalhar com nossos repositórios. Se você vai fazer uma nova substituição livre para algum pacote, consulte a nossa guia para a criação de substitutos livres.

Em primeiro lugar, trate de ir pelo canal #parabola e cadastrar-se a lista de discussão dev list . Se acontece alguma coisa importante, você pode encontrar ali.

Além disso, você tem que se cadastrar no seguimento de incidências, para que a gente possa te dar tarefas ou você puder escolher alguns pela sua conta.

## Ferramentas

Instale libretools. Também isto irá instalar o ssh, rsync, git e devtools, que são as ferramentas necessárias para o pacote.

     # pacman -Sy libretools devtools

Nota: devtools são um conjunto de scripts utilizados pelos desenvolvedores do Arch para facilitar as suas tarefas, pelo qual necessitamos estas ferramentas para o chroot desde ali. O Libretools é feito por nós aqui no Parabola :)
Aviso: Você vai ter que editar o arquivo /etc/libretools.conf e configurar o ambiente de empacotamento antes de utilizar o libretools

## Editando /etc/libretools.conf

A configuração para o libretools está em

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 versão do arquivo incluído no libretools no dia 26/11/2011, isto pode ter sido trocado nas versões atuais, estamos dizendo isto para avisar se você está usando isto como referência.
Note: A informação anterior de configuração do SSH não está atualizado. Desça mais abaixo nesta pagina até a parte onde fala do ssh que ai terá a configuração correta.

Pode colocar sua própria configuração por usuário ~/.config/libretools/libretools.conf em vez da global que está no /etc/libretools.conf.

Warning: libremakepkg ainda necessita da configuração no /etc/libretools.conf mesmo se você esta usando a configuração por usuário.

Terá que editar este arquivo:

     # $EDITOR /etc/libretools.conf

### Configurar CHCOPY

Ao trabalhar com chroots, há o chroot principal ($CHROOTDIR/root), e uma cópia de trabalho dele, CHROOTDIR$/$CHROOT. É mais fácil se você definir CHROOT para o seu nome de usuário.

File: `/etc/libretools.conf`

    ## The working copy
    CHCOPY=$USUARIO

### Escolhe um COMMITCMD

Primeiro escolhe um commitcmd:

File: `/etc/libretools.conf`

    ## Uncomment only one of those
    COMMITCMD=git
    #COMMITCMD=hg

### Adicionar uma assinatura GPG

A continuação, proporcione uma chave pública GnuPG para assinar o pacote:

Se você não tem uma chave pública GnuPG você pode usar o seahorse para construir uma chave usando o RSA 2048 e exportá-lo para salvá-lo.

Use a peça da chave ID no SIGID e descomente a linha correspondente:

File: `/etc/libretools.conf`

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

### Trocar ABSLIBREGIT

Se necessita forçar a abslibre.git (se você está mantendo um paquete), então necessitará editar o ABSLIBREGIT:

File: `/etc/libretools.conf`

    ## ABSLibre
    ABSLIBREGIT=ssh://git@parabolagnulinux.org:1863/abslibre.git

Se ja copiou o repositorio corretamente, para trocar isto a after-the-fact (despois dos feitos), edite

File: `abslibre/.git/config`

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

## Ambiente de empacotamento

O empacotamento pode ser muito atrapalhado e isso pode incomodar muito para você (ao igual que qualquer tarefa repetitiva). Então por isso o Libretools existe com o objetivo de fazer as coisas mais simples.

### Pasta Chroot

Vai precisar de um ambiente de empacotamento limpo para garantir de que os pacotes, funcionem em cada sistema do Parábola apesar da configuração e os dados que você tem no seu sistema. Por isso está o chroot.

Você precisa criar dentro uma pasta chroot para a construção de pacotes. Isso também irá ajudá-lo a identificar as dependências que estão faltando e manter seu sistema limpo todos os dias também. A maneira mais fácil de fazer isso para ser executado é

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

Você deve trocar CHROOTDIR, CHROOT, CHCOPY no /etc/libretools.conf de acordo a configuração do seu chroot.

### Pasta de trabalho libretools

Para minimizar os erros nos dados de carga, criamos ferramentas automáticas para o processo, nosso libretools utiliza a hierarquia de diretórios do nosso repositório.

Tem um script que lhe ajudará a gerar uma pasta de trabalho adequado, incrivelmente chamado `createworkdir`. Execute isto, e criará todas as pastas necessárias, e inclusive o git-clone fará a árvore ABSLibre para você.

     $ createworkdir

Pode achar mais informação sobre árvore de pasta aquí.

### Host de Parabola para a configuração do seu ssh

Você deve adicionar isto ao seu ~/ssh/config:

File: `~/.ssh/config`

    Host parabola
          Port 1863
          HostName repo.parabolagnulinux.org
          User repo

E enviar a sua chave publica (~/.ssh/id_rsa.pub ou nome personalizado) a Parabola mailing list.

Se você deseja que o nome do seu host seja diferente, também tem que trocar o seu
File: `~/.config/libretools/libretools.conf`

    '''PARABOLAHOST=nome_personalizado'''

## Criação de pacotes

Para fazer um librepackage, só necessitará do PKGBUILD de abslibre. Para atualizar no seu $WORKDIR o abslibre, só tem que fazer:

     $ updateabslibre

Warning: Não usar qualquer pasta no $WORKDIR/repos ou $WORKDIR/staging para construir

Lembre que o libremakepkg debe ser executado via root.

Você necessita "copiar ou vincular os arquivos desde abslibre e fazer:

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

-u opção para libremakepkg atualizar o chroot root antes de criar o pacote

-c opção para libremakepkg limpar a copia de chroot antes de construir o pacote

Quando isto termine, você terá um pacote de ${PKGDEST} especificado no arquivo /etc/makepkg.conf.

Veja a página de libremakepkg para uma descrição de como trabalha o libremakepkg.

## Criando pacotes

Por favor, siga esta guia: Creating -libre packages

## Subir pacotes

Para subir pacotes no nosso repositorio, só tem que fazer:

     $ librestage {repo-to-upload}
     $ librerelease

## Dicas e truques

### Libertando vários pacotes ao mesmo tempo

Originalmente, librerelease deveria decidir onde colocar um pacote e subir ao repositório servidor imediatamente. Agora, librestage faz a primeira parte e librerelease faz a segunda, então na prática, você pode fazer vários pacotes e etapas para subir mais tarde.

### Organizando um só pacote para vários repositórios

Toma nota, librestage aceita vários nomes de repositórios como argumento. Se você faz isso, pode organizar o paquete(s) em todos eles, deixando carregar os pacotes em qualquer número de repositórios que você desejar. Não é uma função para abusar, mas é útil enquanto migram a repositórios [libre] e [libre-testing]... por exemplo, você poderá libertar a [core] e [libre], o [testing] e [libre-testing] ao mesmo tempo.

### Control MD5sum

Se você troca a matriz de fontes num PKGBUILD, terá que trocar a matriz md5sums para poder usar para teus pacotes. Modifique do PKGBUILD e use a utilização deste comando para gerar md5sum para os teus pacotes:

     $ makepkg -g >> PKGBUILD

### Conexión SSH para Parabola

Tenha certeza que as permissões no /home/${user}/.ssh sejan 700:

     $ chmod 700 * *.*

Se você adicionou o host de parabola para o teu ~/.ssh/config, pode simplesmente fazer:

     $ ssh parabola

Categories:

- Packaging
- Libretools