Creating packages for other distributions (Português)

Status de tradução:
Esse artigo é uma tradução de
Creating packages for other distributions
. Data da última tradução: 2020-04-08. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Criando pacotes
Arch é o melhor
. Mas você ainda pode querer empacotar para outras distribuições.
Geral
Virtualização
é uma forma óbvia, mas requer manutenção de sistema(s) adicional(is).
Use ferramentas de empacotamento específica de distribuição. Exemplos:
dh-make
AUR
,
dpkg
(Debian),
rpm-tools
(Fedora). Atalhos como
dpkg-deb
pode ser adequado para tarefas menos complexas.
Chroot
para criar um sistema base dentro (apesar de separada do) Arch. Por exemplo:
debootstrap
(Debian),
dnf
(Fedora). Isso foi adicionado para beneficiar a construção em um ambiente mínimo e limpo.
Use chroot com ferramentas de empacotamento de uma forma automatizada. Exemplos:
pbuilder-ubuntu
AUR
(Debian).
Uma forma diferente de lidar (possivelmente incompatível) com dependências é com
vínculo estático
. Por favor, note que a maioria das distribuições não gostam dessa prática.
A prática comum se aplica independentemente da distribuição usada. Por exemplo,
não compilar pacotes como root
.
Debian
Debian Packaging Tutorial
explica as bases, descrevendo o uso das seguintes ferramentas:
cowdancer
— Interface de cópia e escrita para o pbuilder
https://packages.debian.org/sid/cowdancer
||
cowdancer
AUR
debootstrap
— Uma ferramenta usada para criar um sistema base Debian do zero, sem exibir a disponibilidade de dpkg ou apt.
https://packages.debian.org/sid/debootstrap
||
debootstrap
devscripts
— Scripts para facilitara vida de um mantenedor de pacote do Debian
https://packages.debian.org/sid/devscripts
||
devscripts
AUR
dh-autoreconf
— Complemento ao Debhelper para chamar autoreconf e limpar após a compilação
https://packages.debian.org/sid/dh-autoreconf
||
dh-autoreconf
AUR
dh-make
— Ferramenta que converte os arquivos fonte em fonte de pacote do Debian
https://packages.debian.org/sid/dh-make
||
dh-make
AUR
dpkg
— O gerenciador de pacotes do Debian
https://packages.debian.org/sid/dpkg
||
dpkg
dput
— Ferramenta de envio de pacotes do Debian
https://packages.debian.org/sid/dput
||
dput
AUR
equivs
— Contorne dependências de pacotes do Debian
https://launchpad.net/ubuntu/+source/equivs
||
equivs
AUR
git-buildpackage
— Ferramentas do Debian para integrar o sistema de compilação de pacotes com Git
https://honk.sigxcpu.org/piki/projects/git-buildpackage/
||
git-buildpackage
AUR
pbuilder-ubuntu
— Ambiente de chroot para compilação de pacotes do Debian
https://launchpad.net/ubuntu/+source/pbuilder
||
pbuilder-ubuntu
AUR
quilt
— Gerencia uma série de patches mantendo rastro de alterações que cada patch faz
https://savannah.nongnu.org/projects/quilt
||
quilt
Dicas e truques sobre o Debian
Sobrescrever tratamento de dependências
O
dpkg
não reconhece as dependências instaladas pelo
pacman
. Isso significa que
dpkg-buildpackage
geralmente falhará com erros como:
dpkg-checkbuilddeps: Unmet build dependencies: build-essential:native debhelper (>= 8.0.0)
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
Para contornar isso, use a opção
-d
:
$ dpkg-buildpackage -d -us -uc
Você também pode precisar sobrescrever
dh_shlibdeps
adicionando as seguintes linhas ao
debian/rules
:
override_dh_shlibdeps:
   dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
Nota
Quaisquer dependências de tempo de execução (e números de versão correspondentes) devem ser adicionadas manualmente ao
debian/control
, onde
${shlibs:Depends}
agora não tem significado.
Atenção
Mesmo
se
você conseguir compilar um pacote com sucesso desta forma, é
fortemente recomendado
construir em um ambiente limpo (como o chroot) para prevenir qualquer incompatibilidade.
Configurar um chroot
Veja o
How-To do Pbuilder
para uma introdução ao
pbuilder-ubuntu
. O uso de
cowdancer
, além disso, é recomendado, pois
cópia em gravação
oferece um benefício de desempenho significativo.
debian-archive-keyring
,
ubuntu-keyring
e
gnupg1
AUR
são necessários.
eatmydata
está disponível como
libeatmydata
. Para evitar erros de
LD_PRELOAD
, deve ser instalado dentro e fora do chroot. Como os caminhos são diferentes no Arch e Debian, crie os links simbólicos a seguir:
# ln -s /usr/lib/libeatmydata.so.1.1.1 /usr/lib/libeatmydata/libeatmydata.so
# ln -s /usr/lib/libeatmydata.so.1.1.1 /usr/lib/libeatmydata/libeatmydata.so.1
Exemplo de pbuilderrc
Para criar um pacote fonte para o pbuilder lidar:
$ dpkg-buildpackage -d -us -uc -S
Veja também sobre o Debian
Política do Debian
Novo Guia do Mantenedor
Quilt no empacotamento do Debian
Fedora
Como criar um pacote RPM
rpm-tools
— Fork do RPM.org, usado na maioria das distros RPM
http://www.rpm.org/
||
rpm-tools
mock
— Pega RPMs fonte e compila RPMs a partir deles em um chroot
https://github.com/rpm-software-management/mock/wiki
||
mock
AUR
Veja também sobre o Fedora
Copr
openSUSE
O
Open Build Service (OBS)
é um sistema genérico para criar e distribuir pacotes de fontes de uma maneira automática, consistente e reproduzível. Suporta pelo menos pacotes .deb, .rpm e Arch.
Criando pacotes do Arch no OBS com OSC
Nota
Para criar, você deve enviar o arquivo PKGBUILD, bem como dos arquivos de origem (carregando ou permitindo que o OBS baixe os arquivos). O OBS usa máquinas virtuais sem suporte de rede e não pode baixar nenhum arquivo.
Criando um pacote
Crie uma conta no
[1]
Instale
o pacote
osc
AUR
. A documentação upstream está disponível
aqui
.
Crie um projeto exemplo
home:foo
.
Crie um subprojeto exemplo
home:foo:bar
(opcional, mas recomendável).
Crie um novo pacote exemplo
ham
com
osc meta pkg -e home:foo:bar ham
. Salve o XML criado e, então, sai.
Mude para um diretório de trabalho limpe e, então, façacheckout do projeto que você acabou de criar:
osc co home:foo:bar/ham
.
Agora, use
cd
para ir entrar nele:
cd home:foo:bar/ham
.
Gerenciando um pacote
Agora é hora de decidir como administraremos nosso projeto. Existem duas maneiras práticas de fazer isso:
Manter um PKGBUILD mais seus arquivos auxiliares (como scripts *.install) em um sistema de controle de versão (como git, hg) e faça o OBS rastreá-lo;
Manter um pacote inteiramente no próprio OBS.
A primeira versão é mais flexível e dinâmica. Para prosseguir:
A partir do diretório do seu projeto, crie um arquivo
_service
com o seguinte conteúdo:
<services>
  <service name="tar_scm">
    <param name="scm">git</param>
    <param name="url">git://<seu_repo_aqui></param>
    <param name="versionformat">git%cd~%h</param>
    <param name="versionprefix"><sua_versão_aqui></param>
    <param name="filename"><nome_do_seu_pacote></param>
  </service>
  <service name="recompress">
    <param name="file">*.tar</param>
    <param name="compression">xz</param>
  </service>
  <service name="set_version"/>
</services>
Aqui está um exemplo para
gimp-git
AUR
:
<services>
  <service name="tar_scm">
    <param name="scm">git</param>
    <param name="url">git://git.gnome.org/gimp.git</param>
    <param name="versionformat">git%cd~%h</param>
    <param name="versionprefix">2.9.1</param>
    <param name="filename">gimp-git</param>
  </service>
  <service name="recompress">
    <param name="file">*.tar</param>
    <param name="compression">xz</param>
  </service>
  <service name="set_version"/>
</services>
Faça o OBS rastreá-lo:
osc add _service
Se você tiver outros arquivos para incluir no repositório, apenas continue como antes: adicione os arquivos no diretório do projeto e faça a OBS rastreá-los (o OBS usa o subversion como seu SCM subjacente, portanto, esse processo pode já ser familiar para você)
Faça check-in (=upload) seus arquivos no repo
osc ci -m "mensagem de commit (p.ex., atualiza pacote xxx para versão yyy"
.
Agora, após um tempo, OBS vai começar a compilar seu pacote.
Dicas e truques sobre o openSUSE
Para ver o progresso da compilação do seu pacote, faça
cd
para seu diretório de trabalho, então:
osc results
.
Há três repositórios, Arch:Core, Arch:Extra e Arch:Community. [community] pode ser anexado como um "caminho de repositório" após adicionar o repositório principal do Arch ao projeto.
Programa com o pacote ca-certificates-utils
Se a criação do OBS falhar por causa do pacote ca-certificates-utils, você poderá adicionar essa linha à configuração do seu projeto (na página do projeto, vá para Advanced -> Project Config).
Prefer: ca-certificates-utils ca-certificates
Veja também sobre o openSUSE
Repo exemplo:
cpu-x-git
Diretrizes de empacotamentos do openSUSE
Portal:Packaging do wiki do openSUSE
Veja também
BBS - PKGBUILD equivalentes para outras distros
BBS - Discussão original