Para adicionar um novo pacote à base de dados, ou para substituir a versão antiga de um pacote existente na base de dados, execute:
A base de dados e os pacotes não precisam estar no diretório ao usar repo-add, mas tenha em mente que ao usar pacman com aquela base de dados, eles devem estar juntos. Armazenar todos os pacotes compilados para serem incluídos no repositório em um diretório também permite usar a expansão shell glob para adicionar ou atualizar vários pacotes ao mesmo tempo.
Atenção: repo-add adiciona as entradas na base de dados na mesma ordem que foi passada na linha de comando. Se várias versões do mesmo pacote estiverem envolvidas, deve-se ter cuidado para garantir que a versão correta seja adicionada por último. Em particular, observe que a ordem lexical usada pelo shell depende do locale e difere do pedido de vercmp(8) usado pelo pacman.
Se você deseja oferecer suporte a várias arquiteturas, deve-se tomar precauções para evitar erros. Cada arquitetura deve ter sua própria árvore de diretórios:
O executável repo-add verifica se o pacote é apropriado. Se esse não for o caso, você encontrará mensagens de erro semelhantes a esta:
==> ERRO: '/home/archie/repopersonalizado/<arch>/foo-<arch>.pkg.tar.xz' não tem uma extensão válida para arquivo de base de dados.
repo-remove é usado para remover pacotes da base de dados de pacotes, exceto que somente nomes de pacotes são especificados na linha de comando.
Uma vez que a base de dados local do repositório tenha sido criado, adicione o repositório a pacman.conf para cada sistema que seja para usar o repositório. Um exemplo de um repositório personalizado está em pacman.conf. O nome do repositório é o nome do arquivo da base de dados com a extensão do arquivo omitida. No caso do exemplo acima, o nome do repositório simplesmente seria repo. Consulte a localização do repositório usando um URL file://, ou via FTP usando o diretório ftp://localhost/caminho/para/diretório.
Se quiser, adicione um repositório personalizado à lista de repositórios de usuário não oficiais, de forma que a comunidade possa se beneficiar dele.
Se você tiver várias máquinas com Arch na sua rede local, você pode compartilhar pacotes para que você possa diminuir significativamente os tempos de download. Tenha em mente que você não deve compartilhar entre arquiteturas diferentes (isto é, i686 e x86_64) ou você terá problemas.
Se você está procurando uma solução rápida, você pode simplesmente executar um servidor web autônomo, como o darkhttpd, que outros computadores possam usar como um primeiro espelho:
Você também poderia executar darkhttpd como um serviço systemd por conveniência. Basta adicionar esse servidor no topo de seu /etc/pacman.d/mirrorlist em máquinas clientes com Server = http://meuespelho:8080. Certifique-se de manter seu espelho atualizado.
Se você já está executando um servidor web para alguma outra finalidade, você pode querer reutilizá-lo como seu servidor de repo local em vez de darkhttpd. Por exemplo, se você já serve um site com nginx, você pode adicionar um bloco de servidor nginx na porta 8080:
Seja qual for o servidor web que você usa, lembre-se de abrir a porta 8080 para o tráfego local (e provavelmente você quer negar qualquer coisa que não seja local), então adicione uma regra como a seguinte para iptables:
Existem ferramentas específicas do Arch para descobrir automaticamente outros computadores em sua rede oferecendo um cache de pacote. Tente pacredir, pacserve, pkgdistcacheAUR ou paclanAUR. O pkgdistcache usa Avahi em vez de UDP simples, que pode funcionar melhor em determinadas redes domésticas que roteiam em vez de ponte entre WiFi e Ethernet.
Para compartilhar pacotes entre vários computadores, simplesmente compartilhe /var/cache/pacman/ usando qualquer protocolo de montagem em rede. Esta seção mostra como usar shfs ou SSHFS para compartilhar um cache de pacotes mais os diretórios de biblioteca relacionados entre vários computadores na mesma rede local. Tenha em mente que um cache compartilhado em rede pode ser lento dependendo da escolha do sistema de arquivos, entre outros fatores.
Por padrão, smbfs não fornece nomes de arquivos que contenham dois pontos, o que resulta no cliente baixar o pacote problemática novamente. Para evitar isso, use a opção de montagem mapchars no cliente.
Então, para compartilhar os pacotes, monte /var/cache/pacman/pkg do servidor em /var/cache/pacman/pkg para toda máquina cliente.
Atenção: Não torne /var/cache/pacman/pkg ou qualquer um de seus antecessores (ex., /var) um link simbólico. Pacman espera que esses sejam diretórios. Quando o pacman reinstala ou atualiza a si próprio, ele vai remover os links simbólicos e vai criar diretórios vazios no lugar. Porém, durante a transação, o pacman depende de alguns pacotes estarem lá, resultando em quebrar o processo de atualização. Veja FS#50298 para mais detalhes.
Outra abordagem em um ambiente local é rsync. Escolha um servidor para armazenamento em cache e ative o Rsync#rsync daemon. Nos clientes, sincronize em duas vias com este compartilhamento via protocolo rsync. Os nomes dos arquivos que contêm dois pontos não são um problema para o protocolo rsync.