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.
Contents
1 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
2 Editando /etc/libretools.conf
A configuração para o libretools está em
## 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
Pode colocar sua própria configuração por usuário ~/.config/libretools/libretools.conf em vez da global que está no /etc/libretools.conf.
Terá que editar este arquivo:
# $EDITOR /etc/libretools.conf
2.1 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.
## The working copy CHCOPY=$USUARIO
2.2 Escolhe um COMMITCMD
Primeiro escolhe um commitcmd:
## Uncomment only one of those COMMITCMD=git #COMMITCMD=hg
2.3 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:
## Package signing # Leave commented to disable signing #SIGEXT=".sig" #SIGID="0xSUAID"
2.4 Trocar ABSLIBREGIT
Se necessita forçar a abslibre.git (se você está mantendo um paquete), então necessitará editar o ABSLIBREGIT:
## 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
[remote "origin"] url = ssh://git@parabolagnulinux.org:1863/abslibre.git
3 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.
3.1 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.
3.2 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í.
3.3 Host de Parabola para a configuração do seu ssh
Você deve adicionar isto ao seu ~/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'''PARABOLAHOST=nome_personalizado'''
4 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
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.
5 Criando pacotes
Por favor, siga esta guia: Creating -libre packages
6 Subir pacotes
Para subir pacotes no nosso repositorio, só tem que fazer:
$ librestage {repo-to-upload} $ librerelease
7 Dicas e truques
7.1 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.
7.2 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.
7.3 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
7.4 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