Pacman (gerenciador de pacotes)

Origem: Wikipédia, a enciclopédia livre.
Pacman
Captura de tela
Pacman (gerenciador de pacotes)
Captura de tela do Pacman
Autor Judd Vinet
Desenvolvedor Vários[1]
Plataforma Arch Linux e derivados, Arch Hurd, PacBSD
Modelo do desenvolvimento Software livre
Lançamento 25 de fevereiro de 2002 (22 anos)
Versão estável 6.0.2[2] (3 de outubro de 2022; há 16 meses)
Idioma(s) Multilíngue
Escrito em C
Sistema operacional FreeBSD, GNU Hurd, Linux
Gênero(s) Gerenciador de pacotes
Interface Interface de linha de comandos
Licença GNU General Public License[3]
Estado do desenvolvimento Ativo
Tamanho 1 MB
Página oficial archlinux.org/pacman/
Repositório gitlab.archlinux.org/pacman/pacman

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.[4]

O programa foi escrito em C e usa o formato .pkg.tar.xz para os pacotes.

Configuração[editar | editar código-fonte]

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[editar | editar código-fonte]

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.[5] O seguinte é um PKGBUILD para o pacote patch, incluído na documentação do Pacman como exemplo:[6]

pkgname=patch
pkgver=2.5.4
pkgrel=3
pkgdesc="A utility to apply patch files to original sources"
arch=('i686' 'x86_64')
url="http://www.gnu.org/software/patch/patch.html"
license=('GPL')
groups=('base-devel')
depends=('glibc' 'ed')
source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz)
md5sums=('ee5ae84d115f051d87fcaaef3b4ae782')

build() {
  cd "$srcdir"/$pkgname-$pkgver
  ./configure --prefix=/usr
  make
}

package() {
  cd "$srcdir"/$pkgname-$pkgver
  make prefix="$pkgdir"/usr install
}

Comandos[editar | editar código-fonte]

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

Atualizando pacotes[editar | editar código-fonte]

Atualizar o sistema:

$ sudo pacman -Syu

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[editar | editar código-fonte]

Para reinstalar todos os pacotes nativos:

$ sudo pacman -S $(pacman -Qnq)

Backup, criação de um arquivo contendo os nomes dos pacotes então instalados explicitamente (do repositório oficial):

$ pacman -Qqen > "/pasta de destino/nome-do-arquivo.txt"

Restaurar backup, através do arquivo criado com o comando acima:

$ sudo pacman -S --needed $(cat "/pasta de destino/nome-do-arquivo.txt")

Para remover os pacotes órfãos (dependências não usadas):

$ sudo pacman -Rsn $(pacman -Qtdq)

A opção integrada para remover todos os pacotes em cache que não estão atualmente instalados é:

$ sudo pacman -Sc

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:

$ sudo pacman -Sw pacote_nome

Instale um pacote local que não é de um repositório remoto (por exemplo, o pacote é a partir do AUR):

$ sudo pacman -U "/local de destino/pacote_nome-versao.pkg.tar.xz"

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[editar | editar código-fonte]

Pacman consulta o banco de dados de pacotes local com a opção -Q; ver:

$ pacman -Q --help

e consulta as bases de dados de sincronização com a opção -S; ver:

$ pacman -S --help

Pacman pode procurar por pacotes no banco de dados, em busca tanto em nomes e descrições dos pacotes:

$ pacman -Ss string1 string2 ...

Para procurar os pacotes já instalados:

$ pacman -Qs string1 string2 ...

Para exibir informações abrangentes sobre um determinado pacote:

$ pacman -Si pacote_nome

Para os pacotes instalados localmente:

$ pacman -Qi pacote_nome

Passando a opção -ii também irá exibir a lista de arquivos de backup e seus estados de modificação:

$ pacman -Qii pacote_nome

Para obter uma lista dos arquivos instalados por um pacote:

$ pacman -Ql pacote_nome

Para os pacotes não instalados, utilize pkgfile.

Para verificar a presença dos arquivos instalados por um pacote:

$ pacman -Qk pacote_nome

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:

$ pacman -Qo "/pasta de destino/nome_do_arquivo"

Para listar todos os pacotes que já não necessita como dependências (órfãos):

$ pacman -Qdt

Para listar todos os pacotes instalados de forma explícita e não necessários como dependências:

$ pacman -Qet

Para listar uma árvore de dependências de um pacote:

$ pactree pacote_nome

Para listar todos os pacotes, dependendo um instalado pacote, use whoneeds de pkgtools:

$ whoneeds pacote_nome

ou a bandeira reversa para pactree:

$ pactree -r pacote_nome

Comandos adicionais[editar | editar código-fonte]

O gerenciador de pacotes pacman também contém outras ferramentas úteis, como makepkg, pactree, vercmp, e checkupdates. Execute:

$ pacman -Ql pacman | grep /usr/bin/

para ver a lista completa.

Ou:

$ pacman -Ql pacman | awk -F"[/ ]" '/\/usr\/bin/ {print $5}'

Solução de problemas[editar | editar código-fonte]

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:

$ sudo rm /var/lib/pacman/db.lck

Distribuições Linux que usam o Pacman[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

Referências

  1. «pacman» (em inglês). The official pacman repository. Consultado em 5 de junho de 2023 
  2. «NEWS». pacman - The official pacman repository. Consultado em 5 de junho de 2023 
  3. «Copyright». Pacman Home Page. Consultado em 5 de junho de 2023 
  4. «Atualizando pacotes». ArchWiki. Consultado em 5 de junho de 2023 
  5. «makepkg(8) Manual Page». Consultado em 5 de junho de 2023 
  6. «PKGBUILD(5) Manual Page». Consultado em 5 de junho de 2023 

Ligações externas[editar | editar código-fonte]