Arch build system (Português)

Status de tradução:
Esse artigo é uma tradução de
Arch build system
. Data da última tradução: 2023-08-11. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Padrões de empacotamento do Arch
Arch User Repository
Criando pacotes
Kernel/Arch build system
makepkg
Repositórios oficiais
pacman
PKGBUILD
Aplicação de patch em pacotes
O sistema de compilação do Arch (em inglês, Arch build system – ABS) é um sistema
tipo portação
para compilar e empacotar software a partir do código-fonte. Enquanto o
pacman
é a ferramenta especializada do Arch para gerenciamento de pacote binário, o sistema de compilação do Arch é uma coleção de ferramentas para compilar o fonte em pacotes
.pkg.tar.zst
instaláveis.
Ports
é um sistema usado por *BSD para automatizar o processo de compilação de software a partir do código-fonte. O sistema usa um
port
para baixar, descompactar, patch, compilar e instalar o software dado. Um
port
é meramente um pequeno diretório no computador do usuário, nomeado pelo software correspondente para ser instalado, que contém uns poucos arquivos com as instruções para compilar e instalar o software a partir dos fontes. Isso torna a instalação de softwares tão simples quanto digitar
make
ou
make install clean
dentro de diretório de portação.
O sistema de compilação do Arch é baseado um conceito similar. Ele compreende uma coleção de repositórios git para cada pacote disponível no Arch Linux. Cada repositório contém um arquivo
PKGBUILD
(e às vezes outros arquivos) e não contém a fonte do software nem o binário. Ao executar o
makepkg
dentro de um diretório, as fontes do software são baixadas, o software é compilado e empacotado no diretório de compilação. Então, você pode usar
pacman
para instalar o pacote.
Conjunto de ferramentas
This article or section needs expansion.
Reason:
Adicionar
pkgctl
/
devtools
à lista. (Discuss in
Talk:Arch build system
)
O sistema de compilação do Arch inclui e depende de vários outros componentes e ferramentas que são usadas no processo de compilação de pacotes a partir da fonte:
Repositório
A estrutura de diretório contendo arquivos necessários para compilar todos os pacotes oficiais, mas não os pacotes em si nem os arquivos-fonte do software. Ele está disponível na forma de repositórios
Git
hospedados em
gitlab.archlinux.org
. Consulte a seção
#Estrutura de repositórios
para mais informações.
PKGBUILD
Um script
Bash
que contém a URL do código-fonte junto com as instruções de compilação e empacotamento.
makepkg
Uma ferramenta de comando shell que lê os PKGBUILDs, baixa automaticamente e compila os fontes e cria um
.pkg.tar*
de acordo com o vetor
PKGEXT
no
makepkg.conf
. Você também pode usar makepkg para fazer seus próprios pacotes personalizados do
AUR
ou fontes de terceiros. Veja
Criando pacotes
para mais informações.
pacman
pacman é completamente separado, mas é necessariamente invocado pelo makepkg ou manualmente, para instalar e remover os pacotes compilados e para obter dependências.
AUR
O Arch User Repository está separado do repositório oficial de PKGBUILDs, mas os pacotes do AUR podem ser compilados usando as mesmas ferramentas. Ele contém muitos milhares de PKGBUILDs contribuídos por usuários para software que está indisponível como um pacote oficial do Arch. Se você precisar compilar um pacote fora da árvore oficial do Arch, as chances são de que esteja no AUR.
Atenção
PKGBUILDs oficiais presumem que pacotes são
compilados em um
chroot
limpo
. Compilação de software em um sistema de compilação
sujo
pode falhar ou causar comportamentos inesperados em tempo de execução, porque se o sistema de compilação detecta dependências dinamicamente, o resultado depende de quais pacotes estão disponíveis no sistema de compilação.
Estrutura de repositórios
Os
repositórios oficiais
core
,
extra
,
core-testing
e
extra-testing
estão hospedados na
instância GitLab do Arch Linux
.
Cada pacote tem seu próprio repositório no espaço de nomes
archlinux/packaging/packages
. Cada repositório contém o PKGBUILD e os arquivos usados nas compilações oficiais. Além disso, alguns arquivos que são usados pelos desenvolvedores para o processo de compilação podem ser encontrados lá.
Por exemplo, a árvore para
acl
se parece com isso:
acl
├── keys
│   └── pgp
│       ├── 259B3792B3D6D319212CC4DCD5BF9FEB0313653A.asc
│       ├── 600CD204FBCEA418BD2CA74F154343260542DF34.asc
│       └── B902B5271325F892AC251AD441633B9FE837F581.asc
└── PKGBUILD
O código-fonte do pacote não está presente no diretório ABS. Em vez disso, o
PKGBUILD
contém uma URL que vai baixar o código-fonte quando o pacote é compilado.
Casos de uso
O sistema de compilação do Arch automatiza certas tarefas relacionadas à compilação a partir do código-fonte. Seus casos de uso são:
This article or section needs expansion.
Reason:
O principal caso de uso é obviamente compilar pacotes binários oficiais para o Arch Linux por desenvolvedores e empacotadores. As personalizações do usuário e as compilações não oficiais são secundárias. (Discuss in
Talk:Arch build system
)
Em qualquer caso que você queria compilar ou recompilar um pacote
Make
e instalar novos pacotes de fontes de software para os quais nenhum pacote está instalado ainda (veja
Criando pacotes
)
Personalizar pacotes existentes para atender suas necessidades (por exemplo, habilitar ou desabilitar opções,
patching
)
Recompilar todo o seu sistema usando suas
flags
de compilador, "à la FreeBSD"
Compilar e instalar, sem interferências, seu próprio kernel personalizado (veja
Compilação de kernel
)
Fazer com que módulos de kernel funcionem com um kernel personalizado
Compilar e instalar facilmente uma versão mais nova, antiga, beta ou de desenvolvimento de um pacote do Arch editando o número de versão no PKGBUILD
O ABS automatiza determinadas tarefas relacionadas à compilação a partir do código-fonte. Como alternativa ao uso do ABS, você pode executar essas tarefas manualmente.
Uso
Obtendo fonte de PKGBUILD
Para obter o arquivo
PKGBUILD
necessário para compilar um certo pacote a partir do fonte, você pode usar a ferramenta
pkgctl
ou usar diretamente o
Git
.
Usando a ferramenta pkgctl
Como pré-condição,
instale
o pacote
devtools
.
pkgctl
é uma ferramenta que trabalha com arquivos-fonte de compilação para pacotes do Arch Linux usando Git.
Para clonar o repositório
git
com os arquivos de compilação mais recentes usando
pkgctl
, o seguinte comando é usado:
$ pkgctl repo clone
pkgname
Dica
Isso clona por SSH por padrão, portanto, se você não definiu uma chave SSH em sua conta GitLab do Arch, você precisa clonar por HTTPS:
pkgctl repo clone --protocol=https
pkgname
.
Observe que aqui, os arquivos-fonte de compilação referem-se a
PKGBUILD
, possivelmente com alguns outros arquivos necessários, como chaves. Ou seja, os arquivos essenciais são necessários para o sistema de compilação do Arch Linux. Ele não se refere aos arquivos-fonte do pacote que foram escritos pela equipe que criou o pacote, como arquivos C ou Python.
Isso fornecerá a você não apenas os arquivos de compilação dos fontes atuais, mas também suas versões anteriores. Além disso, você pode usar todos os outros comandos
git
para verificar uma versão mais antiga do pacote ou rastrear alterações personalizadas.
Se você deseja obter uma versão específica de um pacote, pode usar algo como o seguinte:
$ pkgctl repo clone --switch="2:1.19.5-1" go
Leia
pkgctl-repo-clone(1)
para mais informações e para os outros comandos disponíveis.
Usando o git diretamente
Use o seguinte comando git para clonar um pacote:
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/
pkgname
.git
Por exemplo, para copiar os arquivos de compilação do Apache:
$ git clone https://gitlab.archlinux.org/archlinux/packaging/packages/apache.git
Compilar pacote
Configure o
makepkg
para compilar pacotes dos
PKGBUILDs
que você fez
checkout
, como explicado em
makepkg (Português)#Configuração
.
Em seguida, copie o diretório contendo o
PKGBUILD
que você deseja modificar para uma nova localização. Faça as modificações desejadas lá e use
makepkg
, como descrito em
makepkg (Português)#Uso
, para criar e instalar o novo pacote.
Dicas e truques
Preserve pacotes modificados
Atualizar o sistema com o
pacman
vai substituir um pacote modificado com o pacote de menos nome dos repositórios oficiais. Veja as instruções a seguir para como evitar isso.
Insira um vetor de grupo no
PKGBUILD
, e adicione o pacote para um grupo chamado
modified
.
PKGBUILD
groups=('modified')
Adicione esse grupo à seção
IgnoreGroup
no
/etc/pacman.conf
.
/etc/pacman.conf
IgnoreGroup = modified
Se novas versões estiverem disponíveis nos repositórios oficiais durante uma atualização de sistema, pacman emite uma nota de que ele está ignorando essa atualização porque ele está na seção IgnoreGroup. Neste ponto, o pacote modificado deve ser recompilado para evitar atualizações parciais.
Outras ferramentas
pbget
- obtém PKGBUILDs de pacotes individuais diretamente da interface web. Inclui suporte ao AUR.