Creating packages for other distributions (Português)

Arch é o melhor. Mas você ainda pode querer empacotar para outras distribuições.

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.

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-makeAUR, 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-ubuntuAUR (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:

  • 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 || dputAUR

Sobrescrever tratamento de dependências

O dpkg não reconhece as dependências instaladas pelo pacman. Isso significa que 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 :

$ dpkg-buildpackage -d -us -uc

Você também pode precisar sobrescrever adicionando as seguintes linhas ao :

override_dh_shlibdeps:
   dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
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.

  • , ubuntu-keyring e são necessários.
  • eatmydata está disponível como . Para evitar erros de , 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
$ dpkg-buildpackage -d -us -uc -S

Veja também sobre o Debian

Fedora

Como criar um pacote RPM

Veja também sobre o Fedora

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 um pacote

  1. Crie uma conta no
  2. Instale o pacote . A documentação upstream está disponível aqui.
  3. Crie um projeto exemplo .
  4. Crie um subprojeto exemplo home:foo:bar (opcional, mas recomendável).
  5. Crie um novo pacote exemplo com . Salve o XML criado e, então, sai.
  6. Mude para um diretório de trabalho limpe e, então, façacheckout do projeto que você acabou de criar: .
  7. Agora, use cd para ir entrar nele: .

Gerenciando um pacote

Agora é hora de decidir como administraremos nosso projeto. Existem duas maneiras práticas de fazer isso:

  1. 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;
  2. 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 com o seguinte conteúdo:

Aqui está um exemplo para gimp-gitAUR:

  • Faça o OBS rastreá-lo:
  • 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: .
  • 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

Veja também

gollark: This is osmarks-approved™ assßssembly.
gollark: Even if you may need to generate slightly awful asm and use the xmm/ymm/whatever registers.
gollark: Wrong. You CAN make them bigger.
gollark: I mean, you can write your own compiler.
gollark: Or, if you are cool™, make pointers 128 bits.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.