Creating packages for other distributions (Português)
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-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
- dput — Ferramenta de envio de pacotes do Debian
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
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
- Exemplo de pbuilderrc
- Para criar um pacote fonte para o pbuilder lidar:
$ dpkg-buildpackage -d -us -uc -S
Veja também sobre o Debian
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
- Crie uma conta no
- Instale o pacote . A documentação upstream está disponível aqui.
- Crie um projeto exemplo .
- Crie um subprojeto exemplo
home:foo:bar
(opcional, mas recomendável). - Crie um novo pacote exemplo com . 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: .
- 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:
- 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 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