Como criar um repositório personalizado no Arch Linux
31/05/2022
Olá, pessoal, tudo bem? Espero que sim. Neste post, vou mostrar como fazer um repositório do Arch Linux. Além de ser útil para criar um repositório personalizado, este post nos ajudará a entender como os repositórios do Arch funcionam por baixo dos panos.
Procedimento
Preparação
A primeira coisa a fazer é criar uma pasta. Dentro dela, o ideal é criar uma subpasta onde ficarão todos os arquivos PKGBUILD. Isso não é estritamente necessário, mas permite:
- Melhor organização e atualização mais fácil dos pacotes.
- Mostrar ao público como os pacotes são construídos, dando mais segurança a terceiros, especialmente se o repositório for compartilhado.
Depois de configurar isso, o próximo passo é criar alguns pacotes. Neste exemplo, vou compilar:
- O emulador de terminal
sakura - O gerenciador de arquivos
spacefm - O editor de texto
pico
Não há um número mínimo de pacotes, mas vou começar com dois e depois adicionar o terceiro para mostrar como funciona a adição.
Neste ponto, a árvore de diretórios deve ficar assim:
ItsZariep@PC~/duckverse-> tree
.
└── PKGBUILDS
├── pico
│ └── PKGBUILD
├── sakura
│ └── PKGBUILD
└── spacefm
└── PKGBUILD
4 directories, 3 files
Criando um PKGBUILD
Esse processo é bastante difundido; você pode ver exemplos de PKGBUILDs no AUR ou ler a documentação do PKGBUILD.
Configurando o makepkg e construindo o pacote
Para construir os pacotes, vá até a pasta onde está o PKGBUILD e execute:
makepkg
Antes disso, você pode querer configurar o makepkg. Para isso, copie o arquivo de configuração:
cp /etc/makepkg.conf ~/.makepkg.conf
Configure o seguinte de acordo com suas necessidades:
MAKEFLAGS: Para compilar mais rápido usando várias threads.
MAKEFLAGS="-j8" # Se você tem 8 threads
PKGEXT: Para alterar a extensão do pacote.
PKGEXT='.pkg.tar.zst'
PACKAGER: Para personalizar o nome do empacotador.
PACKAGER="ItsZariep"
Adicionando o pacote ao repositório
Quando tiver seus pacotes, coloque-os em uma pasta com o nome da arquitetura de destino (por exemplo, x86_64) e execute dentro dessa pasta:
repo-add name.db.tar.gz *.pkg.tar.zst
Nota: Altere a extensão se você usou uma diferente. Recomendo salvar esse comando em um script para facilitar futuras atualizações.
A árvore de diretórios agora deve ficar assim:
ItsZariep@PC~/duckverse-> tree
.
├── pkgbuilds
│ ├── sakura
│ │ └── PKGBUILD
│ ├── pico
│ │ └── PKGBUILD
│ └── spacefm
│ └── PKGBUILD
└── x86_64
├── db
├── duckverse.db -> duckverse.db.tar.gz
├── duckverse.db.tar.gz
├── duckverse.files -> duckverse.files.tar.gz
├── duckverse.files.tar.gz
└── sakura-3.8.7-1-x86_64.pkg.tar.zst
5 directories, 9 files
Nota:
dbé o nome do script onde o comandorepo-addfoi salvo.
Adicionando o repositório ao Pacman
Edite o /etc/pacman.conf e adicione:
[duckverse]
SigLevel = Never
Server = file:///home/itszariep/.local/share/duckverse/$arch
Se você enviou seu repositório para o GitHub (e habilitou o GitHub Pages), também pode usá-lo remotamente:
[duckverse]
SigLevel = Never
Server = https://itzselenux.github.io/$repo/$arch
Adicionando ou atualizando pacotes
Para adicionar mais pacotes ao repositório:
- Crie o novo pacote
.pkg.tar.zstcomo antes. - Adicione-o ao diretório correspondente.
- Atualize o banco de dados com o
repo-add.
Para atualizar um pacote:
- Recompile-o.
- Substitua o arquivo antigo.
- Execute o
repo-addnovamente.
Conclusão
Criar um repositório para o pacman é relativamente fácil. Porém, se você pretende fazer algo público e formal, tenha muito cuidado com as licenças, pois muitas não permitem redistribuição. Não respeitá-las pode causar problemas legais.
Fora isso, como mencionei, não é nenhuma ciência de foguetes criar e atualizar um repositório, mas dá trabalho mantê-lo.
Também recomendo usar chaves GPG para assinar os arquivos e oferecer maior segurança.


