# Pacman (gerenciador de pacotes)

Pacman (de Package Manager) é um software gerenciador de pacotes criado por Judd Vinet para o Arch Linux, e é considerado uma de suas principais funcionalidades. O objetivo do pacman é tornar possível o fácil gerenciamento de pacotes tanto dos repositórios oficiais quanto do AUR.
O pacman mantém o sistema atualizado sincronizando todos os pacotes com aqueles que estão atualmente nos servidores. Teoricamente, basta um simples comando para atualizar todos os pacotes (e consequentemente todo o sistema) para a última versão disponível.
O programa foi escrito em C e usa o formato .pkg.tar.xz para os pacotes.

## Configuração

Para configurar o Pacman você só precisa editar o arquivo /etc/pacman.conf, onde você pode adicionar repositórios e definir várias opções, e até criar seus próprios repositórios.

## Pacotes e sistema de compilação

Os pacotes do Pacman são arquivos tar compactados, que contêm metadados e uma estrutura de diretórios com os arquivos. Os pacotes são construídos com o makepkg, usando scripts do Bash, conhecidos como PKGBUILDs. O seguinte é um PKGBUILD para o pacote patch, incluído na documentação do Pacman como exemplo:

## Comandos

Para ver a lista completa de comandos do Pacman, use pacman --help.

### Atualizando pacotes

Atualizar o sistema:
Use a opção -Syyu para forçar um renovação do banco de dados, mesmo se este estiver atualizado; use -Syuw para apenas baixar os pacotes sem instalá-los, e para instalá-los mais tarde, use a opção -Su.

### Instalando e removendo pacotes

Para reinstalar todos os pacotes nativos:
Backup, criação de um arquivo contendo os nomes dos pacotes então instalados explicitamente (do repositório oficial):
Restaurar backup, através do arquivo criado com o comando acima:
Para remover os pacotes órfãos (dependências não usadas):
A opção integrada para remover todos os pacotes em cache que não estão atualmente instalados é:
Aviso: Só faça isso se tiver certeza de que os pacotes instalados estão estáveis e que um rebaixamento (downgrade) não será necessário, uma vez que irá remover todas as versões antigas da pasta cache, deixando para trás apenas as versões dos pacotes que estão instalados atualmente. Tendo versões mais antigas dos pacotes vem a calhar no caso de futuros problemas, resultante de atualização em um sistema quebrado, e se eles (pacotes) são removidos do cache a única maneira de recuperá-los é através de uma fonte alternativa de pacotes obsoletos, como o Arch Linux Archive.
Também é possível esvaziar completamente a pasta cache com o comando: pacman -Scc, mas fazê-lo é considerado uma má prática, como, além do acima explicado, também impede de reinstalar um pacote diretamente da pasta de cache em caso de necessidade, forçando o re-download (baixar novamente). Você nunca deve usá-lo a menos que haja uma necessidade "desesperada" de mais espaço em disco.
Baixar um pacote sem instalá-lo:
Instale um pacote local que não é de um repositório remoto (por exemplo, o pacote é a partir do AUR):
Aviso: Tome cuidado ao usar a opção --overwrite, pois pode causar problemas graves se utilizada indevidamente. É altamente recomendável usar esta opção somente quando há notícia no site oficial do Arch Linux instruindo o usuário a fazê-lo.

### Consultar bancos de dados de pacote

Pacman consulta o banco de dados de pacotes local com a opção -Q; ver:
e consulta as bases de dados de sincronização com a opção -S; ver:
Pacman pode procurar por pacotes no banco de dados, em busca tanto em nomes e descrições dos pacotes:
Para procurar os pacotes já instalados:
Para exibir informações abrangentes sobre um determinado pacote:
Para os pacotes instalados localmente:
Passando a opção -ii também irá exibir a lista de arquivos de backup e seus estados de modificação:
Para obter uma lista dos arquivos instalados por um pacote:
Para os pacotes não instalados, utilize pkgfile.
Para verificar a presença dos arquivos instalados por um pacote:
Passando a opção -kk irá executar uma verificação mais aprofundada.
Pode-se também consultar o banco de dados para saber a qual pacote um arquivo no sistema de arquivos pertence:
Para listar todos os pacotes que já não necessita como dependências (órfãos):
Para listar todos os pacotes instalados de forma explícita e não necessários como dependências:
Para listar uma árvore de dependências de um pacote:
Para listar todos os pacotes, dependendo um instalado pacote, use whoneeds de pkgtools:
ou a bandeira reversa para pactree:

### Comandos adicionais

O gerenciador de pacotes pacman também contém outras ferramentas úteis, como makepkg, pactree, vercmp, e checkupdates. Execute:
para ver a lista completa.
Ou:

### Solução de problemas

Se pacman é interrompido durante a mudança do banco de dados, este arquivo de bloqueio pode ficar obsoleto. Se tiver certeza de que não há instâncias do pacman rodando, então exclua o arquivo de bloqueio:

## Distribuições Linux que usam o Pacman

* Antergos
* Arch Linux
* BlackArch
* Chakra Linux
* DeLi Linux
* EndeavourOS
* Hyperbola GNU/Linux-libre
* KaOS
* Manjaro
* Parabola GNU/Linux-libre