Creating -libre packages (Português)

From ParabolaWiki
Jump to: navigation, search

Este artigo descreve o processo de criação de pacotes livres, isto é, como substituir os pacotes de Archlinux que contém dependências ou códigos não livres.

1 Pré-requisitos

  • É necessário conhecimento básico de como um pacote Arch é construído (PKGBUILDs, makepkg + seus flags, etc.). Uma boa experiência, é se anteriormente você praticou com o AUR.
  • Estar sempre no #parabola e/ou assinar os pacotes na nossa [lista de discussão http://lists.parabolagnulinux.org/mailman/listinfo].
  • Seguir as instruções em nossa Guia de Mantenedor de Pacotes
  • Atualizar makepkg.conf de makepkg.conf.pacnew se você não tiver algum feito por você.
  • Configurar ~/.makepkg.conf especialmente a sessão PACKAGE OUTPUT, que está perto do fim do arquivo.

2 Criando um pacote "-libre"

Nós nos referimos a um pacote-libre, como um pacote que substitui um pacote não-libre dos repositórios oficiais do Arch Linux. Por exemplo, no caso dokernel26 se tornaria emkernel26-libre. Às vezes, há pacotes que não compartilham o mesmo nome, como no caso do firefox que sua versão livre é o Icecat.

O pacote -libre é criado nos seguintes casos:

  • O pacote não é livre, mas uma substituição livre está disponível.
  • O pacote tem algumas partes não livres, mas é funcional sem eles.
  • O pacote depende de outros pacotes não livres, mas é funcional sem eles.
  • O pacote recomenda software não-livre.
Nota: No último caso, pode haver necessidade de recompilar, então usamos um rePKGBUILD

3 Como editar o PKGBUILD

3.1 A opção mais fácil

Para fazer um pacote -libre, o PKGBUILD precisa ser mudado.

  • Um pacote -libre precisa substituir o pacote não livre, assim que você deve adicionar:
File: PKGBUILD
provides=("nonlibrepackage=$pkgver")
replaces=('nonlibrepackage')
conflicts=('nonlibrepackage')
  • As dependências não livres devem ser removidas, para identificá-los há um script chamadoPKGBUILD-check-nonfree para verificar se um PKGBUILD tem dependências não-livres. Removê-los do
File: PKGBUILD
depends=()
  • Se um patch é necessário, adicione ele no
File: PKGBUILD
sources=()
  • Se as peças que nós removemos foram os únicos que tinham uma licença personalizada, remova "custom" no
File: PKGBUILD
license=()
  • Adicione uma indicação de que o pacote é libre
File: PKGBUILD
pkgdesc='description.'
  • Finalmente, adicione um sufixo "-libre" em
File: PKGBUILD
pkgname=nonlibrepackage

3.2 A opção difícil

3.2.1 A função mksource

Não só o processo de construção deve criar binários livres para a distribuição; as fontes também têm que estar disponíveis. Para isso, use a função padrão chamado "mksource" para a criação de fontes tarballs:

  • Declarar a função mksource () antes de construir () (a ordem não importa, é apenas para facilitar a leitura do PKGBUILD)
  • Coloque todos os passos necessários para fazer o download da fonte original e criar um livre, isso inclui descarregar, descompactar, aplicar correções, remover arquivos e/ou diretórios e rempaquetar de novo.
  • Coloque este tarball livre em um servidor Web público. O nosso é este daqui.
  • Mudar a matriz de origem no PKGBUILD para apontar para ele, em vez do original.
  • Em caso de dúvida, verifique outro PKGBUILD em nossos repositórios.

Finalmente, executar isto:

$ source PKGBUILD; mksource

3.2.2 A função de construir

Encontrar se qualquer opção sobre a função construir contém as etapas de construção do software. Faça todas as modificações necessárias para apenas construir as fontes livres.

3.2.3 A função de pacote

Se o PKGBUILD contém uma função de pacote, tome as medidas necessárias para evitar a instalação de coisas não-libre. Certifique-se também se as licenças correspondentes estão corretamente instaladas no /usr/share/licenses/$pkgname, caso se não forem as licenças comuns.

4 Construção

A melhor forma de fazer pacotes é usando um chroot limpo se você seguiu a Guia de Mantenedor de Pacotes:

# libremakepkg -cu [makepkg flags] [-M --long-opt1] [-M --long-opt2] 

Se tudo correu bem, teste ele.

Agora, se você já é um Parabola Package Monkey (com um crachá e acesso ao servidor) tem que fazer as etapas do pacote e subir-los.

$ librestage $repo
$ librerelease

Após a próxima execução do db-update, estes pacotes serão incluídos no repositório de banco de dados.

Se você não é um package monkey, execute
$ makepkg --source
envie o *.src.tar.gz para a revisão e depois é só esperar pelos aplausos da galera :-).

5 Adicionar detalhes do pacote no artigo de libre-packages

Depois de criar o pacote-libre, por favor, adicione detalhes na página de Libre-packages na wiki de Parabola.

6 Adoção e manutenção

Se você quiser manter um pacote (por favor!) pedir a outro empaquetador para fazer as permissões necessárias.