Difference between revisions of "Pacman (Português)"

From ArchWiki
Jump to: navigation, search
m (improve related links and templates)
(Motivo de instalação: Place the Tip at more appropriate place)
 
(99 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 +
{{Lowercase title}}
 
[[Category:Package management (Português)]]
 
[[Category:Package management (Português)]]
 +
[[ar:Pacman]]
 
[[cs:Pacman]]
 
[[cs:Pacman]]
 
[[da:Pacman]]
 
[[da:Pacman]]
Line 6: Line 8:
 
[[en:Pacman]]
 
[[en:Pacman]]
 
[[es:Pacman]]
 
[[es:Pacman]]
 +
[[fa:Pacman]]
 
[[fr:Pacman]]
 
[[fr:Pacman]]
 
[[id:Pacman]]
 
[[id:Pacman]]
Line 11: Line 14:
 
[[ja:Pacman]]
 
[[ja:Pacman]]
 
[[ko:Pacman]]
 
[[ko:Pacman]]
[[lt:Pacman]]
 
 
[[nl:Pacman]]
 
[[nl:Pacman]]
 
[[pl:Pacman]]
 
[[pl:Pacman]]
Line 18: Line 20:
 
[[sr:Pacman]]
 
[[sr:Pacman]]
 
[[sv:Pacman]]
 
[[sv:Pacman]]
[[tr:pacman]]
+
[[zh-hans:Pacman]]
[[uk:Pacman]]
+
[[zh-hant:Pacman]]
[[zh-CN:Pacman]]
+
{{Related articles start (Português)}}
[[zh-TW:Pacman]]
+
{{Related|Criando pacotes}}
==Descrição==
+
{{Related|Fazendo downgrade de pacotes}}
O gestor de pacotes '''Pacman''' é uma das grandes vantagens do Arch Linux. Combina um simples pacote no formato binário com um facil sistema de compilação fácil de usar (ver [[makepkg]] e [[ABS]]). Com o '''Pacman''' é fácil gerir pacotes, sendo os oficiais dos repositórios do Arch ou os que são feitos pelo utilizador.
+
{{Related|pacman/Assinatura de pacote}}
O '''Pacman''' pode manter um sistema actualizado através da sincronização de listas de pacotes com o servidor "mestre". Este modelo de servidor/cliente permite o utilizador fazer o download/instalar pacotes com um simples comando, sendo resolvidas todas as dependências. (semelhante ao apt-get do Debian).
+
{{Related|pacman/Pacnew e Pacsave}}
 +
{{Related|pacman/Restaurar base de dados local}}
 +
{{Related|pacman/Rosetta}}
 +
{{Related|pacman/Dicas e truques}}
 +
{{Related|FAQ (Português)#Gerenciamento de pacote}}
 +
{{Related|Manutenção do sistema}}
 +
{{Related2|Arch Build System (Português)|Arch Build System}}
 +
{{Related|Repositórios oficiais}}
 +
{{Related2|Arch User Repository (Português)|Arch User Repository}}
 +
{{Related articles end}}
  
==Utilização==
+
O [[Wikipedia:Package management system|gerenciador de pacote]] '''[https://www.archlinux.org/pacman/ pacman]''' é uma das grandes vantagens do Arch Linux. Combina um simples pacote no formato binário, com um fácil uso de [[Arch Build System (Português)|sistema de compilação]]. A meta do pacman é tornar o mais fácil possível gerenciar pacotes, sejam eles dos [[repositórios oficiais]] ou das próprias compilações do usuário.
  
Para realmente aprender o que o '''Pacman''' consegue fazer, leia <code>man pacman</code>. O que se segue é apenas uma pequena demonstração das operações que podem ser feitas.
+
O ''pacman'' mantém o sistema atualizado, listas de pacotes de sincronização com o servidor mestre. Este modelo servidor/cliente também permite o usuário baixar/instalar pacotes com um simples comando, completo com todas as dependências requeridas.
  
===Instalar e Remover Pacotes===
+
O ''pacman'' é escrito na linguagem de programação C e usa o formato [[w:pt:TAR|tar]] para empacotamento.
Antes de instalar pacotes, é boa ideia sincronizar a lista local de pacotes com a dos repositórios e actualizar o seu sistema com:
 
  
pacman -Syu
+
{{Dica|O pacote {{Pkg|pacman}} também contém outras ferramentas úteis, tal como o [[makepkg (Português)|makepkg]], '''pactree''', '''vercmp''' e [[checkupdates (Português)|checkupdates]]. Execute {{ic|pacman -Qlq pacman <nowiki>|</nowiki> grep bin}} para ver uma lista completa.}}
  
Para instalar ou actualizar apenas um pacote ou uma lista de pacotes (incluindo dependencias) siga o seguinte comando:
+
== Uso ==
  
pacman -S nome_pacote1 nome_pacote2
+
O que se segue é apenas uma pequena amostra das operações que o ''pacman'' pode executar. Para ler mais exemplos, consulte {{man|8|pacman}}.
  
Por vezes há mais versões de um pacote em diferentes repositórios (ex:  extra e testing). Pode especificar qual deles instalar:
+
{{Dica|Para usuários que utilizaram outras distribuições linux antes, ver o artigo [[Pacman Rosetta]] será útil.}}
  
pacman -S extra/nome_pacote
+
=== Instalando pacotes ===
pacman -S testing/nome_pacote
 
  
Para remover um pacote, deixando todas as dependências instaladas:
+
{{Nota|Alguns pacotes muitas vezes têm uma série de [[PKGBUILD (Português)#optdepends|dependências opcionais]] de pacotes que fornecem funcionalidades adicionais para a aplicação, embora não seja estritamente necessário para executá-lo. Ao instalar um pacote, o ''pacman'' irá listar suas dependências opcionais entre as mensagens de saída, porém elas não serão encontrados no arquivo {{ic|pacman.log}}: utilize o comando [[#Consultando base de dados de pacotes|pacman -Si]] para visualizar as dependências opcionais de um pacote, juntamente com uma breve descrição das funcionalidades de cada um.}}
  
pacman -R nome_pacote
+
{{Nota|Ao instalar um pacote que requer apenas uma dependência (opcional) de algum outro pacote (isto é, necessário por você), é recomendado usar a opção {{ic|--asdeps}}. Para detalhes, veja [[#Motivo de instalação|Motivo de instalação]].}}
  
Para remover todas as dependências de um pacote que não estão a ser utilizadas por nenhum outro:
+
{{Atenção|1=Ao instalar pacotes no Arch, evite atualizar a lista de pacotes sem [[#Atualizando pacotes|atualizar o sistema]] (por exemplo, quando um [[#Pacotes não podem ser obtidos na instalação|pacote não é encontrado]] nos repositórios oficiais). Na prática, '''não''' execute o comando {{ic|pacman -Sy ''nome_pacote''}}, pois isso poderia levar para problemas de dependências. Veja [[Manutenção do sistema#Sem suporte a atualizações parciais]] e [https://bbs.archlinux.org/viewtopic.php?id=89328 BBS#89328].}}
  
pacman -Rs nome_pacote
+
==== Instalando pacotes específicos ====
  
Para remover um pacote sem verificar as suas dependências (perigoso):
+
Para instalar um único pacote ou lista de pacotes (incluindo dependências), execute o seguinte comando:
  
  pacman -Rd nome_pacote
+
  # pacman -S ''nome_pacote1'' ''nome_pacote2'' ...
  
===Actualizar o Sistema===
+
Para instalar uma lista de pacotes com expressão regular (veja [https://bbs.archlinux.org/viewtopic.php?id=7179 esse tópico do fórum]):
  
O '''Pacman''' pode actualizar todos os pacotes do sistema com apenas um comando. Este processo poderá demorar algum tempo, variando de acordo com as caracteristicas do seu computador, ligação de internet e a quantidade de pacotes a actualizar.
+
# pacman -S $(pacman -Ssq ''regexp_pacote'')
Primeiro vai sincronizar os repositorios (y) e seguidamente actualiza os pacotes necessários (u)
 
  
pacman -Syu
+
Às vezes, há várias versões de um pacote nos diferentes repositórios, por exemplo ''extra'' e ''testing''. Para instalar a versão anterior, o repositório deve ser definido na frente:
  
===Fazer Query à Base de Dados de Pacotes===
+
# pacman -S extra/''nome_pacote''
  
O '''Pacman''' consegue procurar na base de dados de pacotes uma lista destes. Pode apenas escrever parte do nome de um pacote para procurar todos os pacotes correspondentes a uma lista de caracteres (string):
+
Para instalar um número de pacotes que compartilham padrões em sua nomenclatura -- não todo um grupo nem todos pacotes correspondentes; por exemplo {{Grp|plasma}}:
 +
 +
# pacman -S plasma-{desktop,mediacenter,nm}
  
pacman -Ss pacote
+
É claro, que não é limitado e pode ser expandido para quaisquer níveis sejam necessários:
  
Para procurar os pacotes instalados:
+
# pacman -S plasma-{workspace{,-wallpapers},pa}
  
pacman -Qs pacote
+
==== Instalando grupos de pacotes ====
  
Uma vez que conheça o nome dos pacotes que está à procura, pode visualizar algumas informações no pacote. Nota: ''query info'' (-Qi) vai mostrar mais informação do que ''sync info'' (-Si), desde que o pacote esteja instalado.
+
Alguns pacotes pertencem a um [[Criando pacotes#Pacotes meta e grupos|grupo de pacotes]] que podem ser instalados simultaneamente. Por exemplo, o comando:
  
  pacman -Si pacote
+
  # pacman -S gnome
pacman -Qi pacote
 
  
Para uma lista dos ficheiros que estão num pacote:
+
solicitará que você selecione os pacotes do grupo {{Grp|gnome}} que você deseja instalar.
  
pacman -Ql pacote
+
Às vezes, um grupo de pacote conterá uma grande quantidade de pacotes, e pode haver só alguns que você quer ou não instalar. Em vez de digitar todos os números, exceto aqueles que você não quer, pode ser mais conveniente selecionar ou excluir pacotes ou intervalos de pacotes com a seguinte sintaxe:
  
Para uma lista dos pacotes instalados como dependencias mas que já não sao necessários:
+
Digite uma seleção (padrão=todos): 1-10 15
  
pacman -Qdt
+
que vai selecionar pacotes 1 até 10 e 15 para a instalação, ou:
  
Pode também fazer um ''query'' sobre a qual pacote pertence um ficheiro presente no sistema.
+
Digite uma seleção (padrão=todos):: ^5-8 ^2
  
pacman -Qo /caminho/do/ficheiro
+
vai selecionar todos os pacotes, exceto 5 até 8 e 2 para a instalação.
  
===Outros usos===
+
Para ver quais pacotes pertencem ao grupo gnome, execute:
O '''Pacman''' é uma ferramenta de gestão de pacotes um pouco extensiva. Aqui estão algumas outras funcionalidades.
 
* Fazer o download de um pacote sem o instalar:
 
pacman -Sw nome_pacote
 
  
* Instalar um pacote local (sem ser de um repositório):
+
  # pacman -Sg gnome
  pacman -U /caminho/do/pacote/nome_pacote-versão.pkg.tar.gz
 
  
* Apagar a ''cache'' de pacotes (/var/cache/pacman/pkg):
+
Também visite https://www.archlinux.org/groups/ para saber quais os grupos de pacotes disponíveis.
pacman -Scc
 
  
Para mais informação detalhada fazer <code>pacman --help</code> ou <code>man pacman</code>
+
{{Nota|Se um pacote na lista já está instalado no sistema, ele será reinstalado mesmo se já estiver atualizado. Este comportamento pode ser substituído com a opção {{ic|--needed}}.}}
  
==Configuração==
+
=== Removendo pacotes ===
A configuração do '''Pacman''' está presente em <code>/etc/pacman.conf</code>. Para saber como fazer a sua própria configuração ver <code>man pacman.conf</code>
 
  
===Opções Gerais===
+
Para remover um único pacote, deixando todas as suas dependências instaladas:
As opções gerais estão na secção [options]. Leia a página de manual ou olhe para a configuração por defeito do ''pacman.conf'' para informação sobre o que pode ser feito.
 
  
===Repositórios===
+
# pacman -R ''nome_pacote''
Nesta secção pode definir quais os repositórios a utilizar, como referido em {{ic|/etc/pacman.conf}} que está localizado em {{ic|/etc/pacman.d/}}. Os repositórios podem ser definidos directamente neste ficheiro ou incluídos noutro ficheiro. Estes ficheiros podem ser encontradas no directório {{ic|/etc/pacman.d/}}, sendo eles '''community''', '''core''', '''extra''' e '''testing'''. É importante editar cada um deles para incluir os repositórios que desejar. O que se segue é um exemplo para os repositórios oficiais que têm muitos [[mirrors]]. Evite utilizar ''ftp.archlinux.org'' [https://www.archlinux.org/news/302/]
 
  
<pre>
+
Para remover um pacote e suas dependências que não são exigidas por qualquer outro pacote instalado:
[nome-repositório]
 
Server = ftp://servidor.net/repo
 
</pre>
 
  
<pre>
+
# pacman -Rs ''nome_pacote''
[core]
 
# Adicionar aqui os seus servidores preferidos, serão utilizados primeiro
 
Include = /etc/pacman.d/core
 
</pre>
 
  
'''nota''' Algum cuidado tem que ser tomando quando utilizar os repositório '''testing'''
+
Para remover um pacote, suas dependências e todos os pacotes que dependem deste pacote:
  
===Erros===
+
{{Atenção|Esta operação é recursiva, e deve ser usada com cuidado, pois pode remover muitos pacotes potencialmente necessários.}}
  
Se obteve o seguinte erro
+
# pacman -Rsc ''nome_pacote''
'''not found in sync db'''
 
é porque o pacote não foi encontrado visto o repositório não ter sido definido correctamente.
 
  
==Links Relacionados==
+
Para remover um pacote, o qual é exigido por outro pacote, sem remover o pacote dependente:
* [[Improve Pacman Performance]]
+
 
* [[Colored Pacman output]]
+
# pacman -Rdd ''nome_pacote''
* [[Downgrade packages]]
+
 
* [[Redownloading all installed packages]]
+
O ''pacman'' salva arquivos de configuração importantes ao remover certos aplicativos e os nomes com a extensão: ''.pacsave''. Para prevenir a criação desses arquivos de backup use a opção {{ic|-n}}:
* [[Arch User Repository]]
+
 
* [[Local repository HOW-TO]]
+
# pacman -Rn ''nome_pacote''
* [[Custom local repository with ABS and gensync]]
+
 
* [[Howto Upgrade via Home Network]] (Network Shared Pacman Cache)
+
{{Nota|O ''pacman'' não removerá as configurações que o próprio aplicativo cria (por exemplo, "dotfiles" na pasta home).}}
* [[rucksack]]
+
 
* [[Pacman GUI Frontends]]
+
=== Atualizando pacotes ===
* [[Pacman_Aliases|Pacman Aliases (for bash)]]
+
 
 +
{{Atenção|
 +
*Os usuários devem seguir as orientações em [[Manutenção do sistema#Atualizando o sistema]] para atualizar os seus sistemas regularmente e nao executar o seguinte comando as cegas.
 +
*Arch suporta apenas atualizações completa de sistema. Veja [[Manutenção do sistema#Sem suporte a atualizações parciais]] e [[#Instalando pacotes]] para mais detalhes.}}
 +
 
 +
O ''pacman'' pode atualizar todos os pacotes no sistema com apenas um comando. Isso pode demorar um pouco dependendo de como anda a atualização do sistema. Este comando pode sincronizar as bases de dados do repositório ''e'' atualizar os pacotes do sistema (excluindo pacotes "locais" que não estão nos repositórios configurados):
 +
 
 +
# pacman -Syu
 +
 
 +
=== Consultando base de dados de pacotes ===
 +
 
 +
O ''pacman'' consulta a base de dados do pacote local com a opção {{ic|-Q}}, a base de dados de sincronização com a opção {{ic|-S}} e a base de dados de arquivos com a opção {{ic|-F}}. Veja {{ic|pacman -Q --help}}, {{ic|pacman -S --help}} e {{ic|pacman -F --help}} para as respectivas subopções de cada opção.
 +
 
 +
 
 +
O ''pacman'' pode pesquisar por pacotes na base de dados, pesquisando nomes e descrições dos pacotes:
 +
 
 +
$ pacman -Ss ''string1'' ''string2'' ...
 +
 
 +
 
 +
Algumas vezes, ERE (Extended Regular Expressions) incorporadas no {{Ic|-s}} podem causar muitos dos resultados indesejados, então têm que ser limitadas a corresponder ao nome de pacote apenas; não a descrição nem qualquer outro campo:
 +
 
 +
$ pacman -Ss '^vim-'
 +
 
 +
 
 +
Para procurar os pacotes já instalados:
 +
 
 +
$ pacman -Qs ''string1'' ''string2'' ...
 +
 
 +
Para procurar nomes de pacotes em pacotes remotos:
 +
 
 +
$ pacman -Fs ''string1'' ''string2'' ...
 +
 
 +
Para exibir informações detalhadas sobre um determinado pacote:
 +
 
 +
$ pacman -Si ''nome_pacote''
 +
 
 +
Para os pacotes instalados localmente:
 +
 
 +
$ pacman -Qi ''nome_pacote''
 +
 
 +
Inserindo duas opções {{ic |-i}} também exibirá a lista de arquivos de backup e seus estados de alterações:
 +
 
 +
$ pacman -Qii ''nome_pacote''
 +
 
 +
Para obter uma lista dos arquivos instalados por um pacote:
 +
 
 +
$ pacman -Ql ''nome_pacote''
 +
 
 +
Para obter uma lista dos arquivos instalados por um pacote remoto:
 +
 
 +
$ pacman -Fl ''nome_pacote''
 +
 
 +
Para verificar a presença dos arquivos instalados por um pacote:
 +
 
 +
$ pacman -Qk ''nome_pacote''
 +
 
 +
Passando a opção {{ic|k}} duas vezes, irá ser realizado uma verificação mais aprofundada.
 +
 
 +
Pode-se também consultar a base de dados para saber qual pacote um arquivo no arquivo do sistema pertence:
 +
 
 +
$ pacman -Qo ''/caminho/para/nome_de_arquivo''
 +
 
 +
Para consultar o banco de dados para saber de qual pacote remoto um arquivo pertence:
 +
 
 +
$ pacman -Fo ''/caminho/para/nome_de_arquivo''
 +
 
 +
Para listar todos os pacotes que não são exigidos como dependências (órfãos):
 +
 
 +
$ pacman -Qdt
 +
 
 +
Para listar todos os pacotes explicitamente instalados e que não são necessários como dependências:
 +
 
 +
$ pacman -Qet
 +
 
 +
Para listar a árvore de dependência de um pacote:
 +
 
 +
$ pactree ''nome_pacote''
 +
 
 +
Para listar todos os pacotes dependentes de um pacote ''instalado'', use ''whoneeds'' do pacote {{AUR|pkgtools}}:
 +
 
 +
$ whoneeds ''nome_pacote''
 +
 
 +
Ou a opção inversa para ''pactree'':
 +
 
 +
$ pactree -r ''nome_pacote''
 +
 
 +
Veja [[Pacman/Dicas e truques]] para mais exemplos.
 +
 
 +
==== Estrutura da base de dados ====
 +
 
 +
As bases de dados do ''pacman'' estão normalmente localizadas em {{ic|/var/lib/pacman/sync}}. Para cada repositório especificado em {{ic|/etc/pacman.conf}} haverá um arquivo de base de dados correspondente localizado lá. Os arquivos das bases de dados são arquivos tar-gzipped contendo um diretório para cada pacote, por exemplo, para o pacote {{Pkg|which}}:
 +
 
 +
{{bc|
 +
% tree which-2.20-6
 +
which-2.20-6<nowiki>
 +
|-- depends
 +
`-- desc</nowiki>
 +
}}
 +
 
 +
O arquivo {{ic|depends}} lista os pacotes que este pacote depende, enquanto a {{ic|desc}} possui uma descrição do pacote, como o tamanho do arquivo e o hash do MD5.
 +
 
 +
=== Limpando o cache de pacotes ===
 +
 
 +
O ''pacman'' armazena seus pacotes baixados em {{ic|/var/cache/pacman/pkg/}} e não remove as versões antigas ou desinstaladas automaticamente, portanto, é necessário limpar deliberadamente essa pasta periodicamente para impedir que essa pasta cresça indefinidamente em tamanho.
 +
 
 +
A opção interna para remover todos os pacotes em cache que não estão instalados atualmente é:
 +
 
 +
# pacman -Sc
 +
 
 +
{{Atenção|
 +
* Apenas faça isso quando estiver certeza de que as versões anteriores dos pacotes não são mais necessárias, por exemplo, para um [[downgrade (Português)|downgrade]] posterior. {{ic|pacman -Sc}} deixa as versões dos pacotes atualmente instalados, as versões antigas teriam que ser recuperadas por outros meios, como o [[Arch Linux Archive (Português)|Arch Linux Archive]].
 +
* É possível esvaziar completamente a pasta cache com {{ic|pacman -Scc}}. Além disso, isso também impede a reinstalação de um pacote diretamente da pasta de cache em caso de necessidade, exigindo um novo download. Isso deve ser evitado a menos que seja necessário ter espaço em disco imediatamente.
 +
}}
 +
 
 +
Devido às limitações acima, considere uma alternativa para ter mais controle sobre quais pacotes e quantos são excluídos do cache:
 +
 
 +
O script ''paccache'', fornecido pelo próprio pacote {{Pkg|pacman}}, exclui todas as versões em cache de cada pacote independentemente de estarem instalados ou não, exceto os 3 mais recentes, por padrão:
 +
 
 +
# paccache -r
 +
 
 +
{{Dica|1=Você pode criar [[#Hooks]] para executar isso automaticamente após cada transação do pacman. Veja [https://bbs.archlinux.org/viewtopic.php?pid=1694743#p1694743 este tópico] para obter exemplos.}}
 +
 
 +
Você pode definir quantas versões recentes deseja manter:
 +
 
 +
# paccache -rk 1
 +
 
 +
Para remover todas as versões em cache de pacotes desinstalados, execute novamente ''paccache'' com:
 +
 
 +
# paccache -ruk0
 +
 
 +
Veja {{ic|paccache -h}} para mais opções.
 +
 
 +
{{AUR|pkgcacheclean}} e {{AUR|pacleaner}} são duas alternativas.
 +
 
 +
=== Comandos adicionais ===
 +
 
 +
Faça o download de um pacote sem instalá-lo:
 +
 
 +
# pacman -Sw ''nome_pacote''
 +
 
 +
Instale um pacote "local" que não seja de um repositório remoto (ex., o pacote é do [[AUR (Português)|AUR]]):
 +
 
 +
# pacman -U ''/caminho/para/pacote/nome_pacote-versão.pkg.tar.xz''
 +
 
 +
Para manter uma cópia do pacote local no cache do ''pacman'', use:
 +
 
 +
# pacman -U file:///''caminho/para/pacote/nome_pacote-versão.pkg.tar.xz''
 +
 
 +
Instale um pacote "remoto" (não de um repositório indicado nos arquivos de configuração do pacman):
 +
 
 +
# pacman -U ''<nowiki>http://www.exemplo.com/repo/exemplo.pkg.tar.xz</nowiki>''
 +
 
 +
Para inibir as ações {{ic|-S}}, {{ic|-U}} e {{ic|-R}}, a opção {{ic|-p}} pode ser usada.
 +
 
 +
O ''pacman'' sempre lista os pacotes a serem instalados ou removidos e pede permissão antes de executar.
 +
 
 +
=== Motivo de instalação ===
 +
 
 +
A base de dados do ''pacman'' distingue os pacotes instalados em dois grupos de acordo com o motivo pelo qual eles foram instalados:
 +
 
 +
* '''instalados explicitamente''': os pacotes foram passados literalmente para um comando genérico ''pacman'' {{ic|-S}} ou {{ic|-U}};
 +
* '''dependências''': os pacotes que, apesar de nunca (em geral) terem sido passados para um comando de instalação do ''pacman'', foram instalados implicitamente porque é [[dependência|exigido]] por outro pacote que foi instalado explicitamente.
 +
 
 +
Ao instalar um pacote, é possível forçar o motivo da instalação da ''dependência'' com:
 +
 
 +
# pacman -S --asdeps ''nome_pacote''
 +
 
 +
{{Dica|A instalação de dependências opcionais com {{ic|--asdeps}} fará com que, se você [[Pacman/Dicas e truques#Removendo pacotes não usados (órfãos)|remover pacotes órfãos]], o ''pacman'' também removerá as dependências opcionais.}}
 +
 
 +
Ao '''re'''instalar um pacote, o motivo dessa instalação atual é preservado por padrão.
 +
 
 +
A lista de pacotes instalados explicitamente pode ser vista com {{ic|pacman -Qe}}, enquanto a lista de dependências instaladas pode ser vista com {{ic|pacman -Qd}}.
 +
 
 +
Para alterar o motivo da instalação de um pacote já instalado, execute:
 +
 
 +
# pacman -D -asdeps ''nome_pacote''
 +
 
 +
Use {{ic|--asexplicit}} para a operação oposta.
 +
 
 +
=== Pesquisar por um pacote que contenha um arquivo específico ===
 +
 
 +
Sincronize a base de dados de arquivos:
 +
 
 +
# pacman -Fy
 +
 
 +
Pesquise por um pacote contendo um arquivo, p.ex.:
 +
 
 +
# pacman -Fs pacman
 +
core/pacman 5.0.1-4
 +
    usr/bin/pacman
 +
    usr/share/bash-completion/completions/pacman
 +
extra/xscreensaver 5.36-1
 +
    usr/lib/xscreensaver/pacman
 +
 
 +
{{Dica|Você pode definir um trabalho cron ou um temporizador do systemd para sincronizar a base de dados de arquivos regularmente.}}
 +
 
 +
Para funcionalidade avançada, instale o [[pkgfile (Português)|pkgfile]], que usa uma base de dados separada com todos os arquivos e seus pacotes associados.
 +
 
 +
== Configuração ==
 +
 
 +
As configurações do ''pacman'' estão localizados em {{ic|/etc/pacman.conf}}: este é o local onde o usuário configura o programa para funcionar da forma desejada. Informações detalhadas sobre o arquivo de configuração pode ser encontrada em {{man|5|pacman.conf}}.
 +
 
 +
=== Opções gerais ===
 +
 
 +
Opções gerais estão na seção {{ic|[options]}}. Leia {{man|8|pacman}} ou olhe no {{ic|pacman.conf}} padrão para obter informações sobre o que pode ser feito aqui.
 +
 
 +
==== Comparando versões antes de atualizar ====
 +
 
 +
Para ver versões antigas e novas dos pacotes disponíveis, descomente a linha "VerbosePkgLists" em {{ic|/etc/pacman.conf}}. A saída de {{ic|pacman -Syu}} será algo como:
 +
 
 +
Pacote (6)            Versão antiga  Versão nova    Alteração  Tamanho de download
 +
 +
extra/libmariadbclient  10.1.9-4    10.1.10-1      0.03 MiB      4.35 MiB
 +
extra/libpng            1.6.19-1    1.6.20-1      0.00 MiB      0.23 MiB
 +
extra/mariadb          10.1.9-4    10.1.10-1      0.26 MiB      13.80 MiB
 +
 
 +
==== Pular pacotes para não serem atualizados ====
 +
 
 +
{{Atenção|Tenha cuidado ao pular pacotes, já que não há suporte a [[atualizações parciais]].}}
 +
 
 +
Para pular a atualização de um pacote específico quando estiver [[#Atualizando pacotes|atualizando]] o sistema, faça:
 +
 
 +
IgnorePkg=linux
 +
 
 +
Para vários pacotes use uma lista separada por espaço, ou use adicionais linhas {{ic|IgnorePkg}}. Além disso, padrões de ''glob'' podem ser usados. Se você deseja pular pacotes apenas uma vez, você também pode usar a opção {{ic|--ignore}} na linha de comando - dessa vez com uma lista separada por vírgula.
 +
 
 +
Ainda será possível atualizar pacotes ignorados usando {{ic|pacman -S}}: neste caso, ''pacman'' lhe lembrará de que os pacotes têm incluídos em uma declaração de {{ic|IgnorePkg}}.
 +
 
 +
==== Pular um grupos de pacotes para não serem atualizados ====
 +
 
 +
{{Atenção|Tenha cuidado ao pular grupos de pacotes, já que não há suporte a [[atualizações parciais]].}}
 +
 
 +
Tal como acontece com os pacotes, pular um grupo de pacote inteiro também é possível:
 +
 
 +
IgnoreGroup=gnome
 +
 
 +
==== Pular arquivos para não serem instalados no sistema ====
 +
 
 +
Para pular sempre a instalação de lista de diretórios sob {{Ic|NoExtract}}. Por exemplo, para evitar a instalação de units de [[systemd (Português)|systemd]] use:
 +
 
 +
NoExtract=usr/lib/systemd/system/*
 +
 
 +
Regras posteriores sobrescrevem as anteriores e podem negar uma regra adicionando antes {{ic|!}}.
 +
 
 +
{{Dica|O ''pacman'' emite mensagens de avisos sobre locales faltando ao atualizar um pacote para os quais os locales foram limpados com ''localepurge'' ou ''bleachbit''. Comentando a opção {{ic|CheckSpace}} em {{ic|pacman.conf}} suprime aviso, mas considera que a funcionalidade de verificação de espaço será desabilitada para todos os pacotes.}}
 +
 
 +
==== Manter vários arquivos de configuração ====
 +
 
 +
Se você tiver vários arquivos de configuração (ex.: configuração principal e configuração com repositório [[testing (Português)|testing]] habilitado) e você gostaria de compartilhar opções entre configurações, você pode usar a opção {{ic|Include}} declarada nos arquivos de configuração, ex.:
 +
 
 +
Include = ''/caminho/para/configurações/comuns''
 +
 
 +
sendo que arquivo {{ic|''/caminho/para/configurações/comuns''}} contém as mesmas opções para ambas configurações.
 +
 
 +
==== Hooks ====
 +
 
 +
''pacman'' pode executar hooks de pré- e pós-transação do diretório {{ic|/usr/share/libalpm/hooks/}}; mais diretórios podem ser especificados com a opção {{ic|HookDir}} no {{ic|pacman.conf}}, que tem como padrão {{ic|/etc/pacman.d/hooks}}. Nomes de arquivo hook devem ser sufixados com ''.hook''.
 +
 
 +
Para mais informações sobre hooks do alpm, veja {{man|5|alpm-hooks}}.
 +
 
 +
=== Repositórios e espelhos ===
 +
 
 +
Além da seção especial [[#Opções gerais|[options]]], cada outra {{ic|[section]}} no {{ic|pacman.conf}} define um repositório de pacote a ser usado. Um ''repositório'' é uma coleção ''lógica'' de pacotes, que são armazenados ''fisicamente'' em um ou mais servidores: por esse motivo, cada servidor é chamado de um ''espelho'' para o repositório.
 +
 
 +
Repositórios são distinguidos entre [[Repositórios oficiais|oficial]] e [[Unofficial user repositories|não oficiais]]. A ordem de repositórios no arquivo de configuração importa; repositórios listados primeiro terão precedências sobre os listados posteriormente quando pacotes nos dois repositórios tiverem nomes idênticos, independentemente do número da versão. Para usar um repositório após adicioná-lo, você precisará [[#Atualizando pacotes|atualizar]] todo o sistema primeiro.
 +
 
 +
Cada seção de repositório permite definir a lista de seus espelhos diretamente ou em um arquivo externo por meio da diretiva {{ic|Include}}: por exemplo, os espelhos para os repositórios oficiais são incluídos no {{ic|/etc/pacman.d/mirrorlist}}. Veja o artigo [[Mirrors]] para configuração de espelho.
 +
 
 +
==== Segurança de pacote ====
 +
 
 +
O ''pacman'' oferece suporte a assinaturas de pacotes, que adiciona uma camada extra de segurança para os pacotes. A configuração padrão, {{ic|1=SigLevel = Required DatabaseOptional}}, habilita verificação de assinatura para todos os pacotes em um nível global: isso pode ser sobrescrito por linhas {{ic|SigLevel}} para cada repositório. Para mais detalhes sobre assinatura de pacote e verificação de assinatura, dê uma olhada em [[pacman-key (Português)|pacman-key]].
 +
 
 +
== Solução de problemas ==
 +
 
 +
=== Erro "falha em submeter a transação (arquivos conflitantes)" ===
 +
 
 +
Se você vir o erro: [https://bbs.archlinux.org/viewtopic.php?id=56373]
 +
 
 +
erro: não foi possível preparar transação
 +
erro: falha ao submeter transação (arquivos conflitantes)
 +
''pacote'': ''/caminho/para/arquivo'' existe no sistema de arquivos
 +
Ocorreram erros e, portanto, nenhum pacote foi atualizado.
 +
 
 +
Por que isso aconteceu: o ''pacman'' detectou um conflito de arquivo e, por design, não vai sobrescrever arquivos para você. Este é um recurso de design, não uma falha.
 +
 
 +
O problema geralmente é trivial de resolver. Uma maneira segura é primeiro verificar se outro pacote possui o arquivo ({{ic|pacman -Qo ''/caminho/para/arquivo''}}). Se o arquivo for de propriedade de outro pacote, [[Diretrizes de relatórios de erro|preencha um relatório de erro]]. Se o arquivo não for de outro pacote, renomeie o arquivo que "existe no sistema de arquivos" e execute novamente o comando de atualização. Se tudo correr bem, o arquivo pode então ser removido.
 +
 
 +
Se você instalou um programa manualmente sem usar o ''pacman'' ou um frontend dele (p.ex.: por meio de {{ic|make install}}), você tem que removê-lo e todos os seus arquivos para, depois, reinstalar adequadamente usando o ''pacman''. Veja também [[Pacman/Dicas e truques#Identificar arquivos que pertençam a nenhum pacote]].
 +
 
 +
Todo pacote instalado fornece um arquivo {{ic|/var/lib/pacman/local/''$pacote-$versão''/files}} que contém metadados sobre esse pacote. Se o arquivo ficar corrompido, vazio ou desaparecer, ele resulta em erros de {{ic|existe no sistema de arquivos}} ao tentar atualizar o pacote. Tal erro geralmente está relacionado a um pacote. Em vez de renomear manualmente e posteriormente remover todos os arquivos que pertencem ao pacote em questão, você pode tentar excepcionalmente executar {{ic|pacman -S --force $pacote}} para forçar o ''pacman'' a sobrescrever esses arquivos.
 +
 
 +
{{Atenção|Tenha cuidado ao usar a opção {{ic|--force}} (por exemplo, {{ic|pacman -Syu --force}}), pois ela pode causar grandes problemas se usada inadequadamente. É altamente recomendado usar essa opção apenas quando as notícias do Arch instruem o usuário a fazê-lo.}}
 +
 
 +
=== Erro "falha em submeter a transação (pacote inválido ou corrompido)" ===
 +
 
 +
Procure por arquivos ''.part'' (pacotes baixados parcialmente) em {{ic|/var/cache/pacman/pkg}} e remove-os (muitas vezes causado pelo uso da opção {{ic|XferCommand}} em {{ic|pacman.conf}}).
 +
 
 +
# find /var/cache/pacman/pkg/ -iname "*.part" -exec rm {} \;
 +
 
 +
=== Erro "falha ao iniciar a transação (não foi possível travar a base de dados)" ===
 +
 
 +
Quando o ''pacman'' vai alterar a base de dados de pacotes, por exemplo instalar um pacote, ele cria um arquivo de trava em {{ic|/var/lib/pacman/db.lck}}. Isso evita que uma outra instância do ''pacman'' tente alterar a base de dados de pacotes ao mesmo tempo.
 +
 
 +
Se o ''pacman'' for interrompido enquanto altera a base de dados, esse arquivo de trava obsoleto pode permanecer. Se você tem certeza que nenhuma outra instância do ''pacman'' está em execução, então exclua o arquivo de trava:
 +
 
 +
# rm /var/lib/pacman/db.lck
 +
 
 +
=== Pacotes não podem ser obtidos na instalação ===
 +
 
 +
Esse erro se manifesta como {{ic|não encontrado na base de dados de sincronização}}, {{ic|alvo não encontrado}} ou {{ic|falha ao obter o arquivo}}.
 +
 
 +
Primeiramente, assegure-se de que o pacote realmente existe (e cuidado para erros de escrita!). Se você tem certeza que o pacote existe, sua lista de pacote pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente execute {{ic|pacman -Syyu}} para forçar uma atualização de todas as listas de pacote e atualize.
 +
 
 +
Pode ser também que aquele repositório contendo o pacote não está habilidade no seu sistema. Por exemplo, o pacote pode estar no repositório ''multilib'', mas o ''multilib'' não está habilitado em seu {{ic|pacman.conf}}.
 +
 
 +
Veja também [[FAQ (Português)#Por que há alguma uma única versão de cada biblioteca compartilhada nos repositórios oficiais?]].
 +
 
 +
=== Reinstalação manual do pacman ===
 +
 
 +
{{Atenção|É extremamente fácil quebrar seu sistema ainda mais, usando essa abordagem. Use isso apenas como um último recurso se o método do [[#pacman trava durante uma atualização]] não for uma opção.}}
 +
 
 +
Mesmo se o ''pacman'' estiver terrivelmente quebrado, você pode corrigi-lo manualmente baixando os últimos pacotes e extraindo-os para os locais corretos. Os passos difíceis a se executar são
 +
 
 +
# Determinar dependências para instalar
 +
# Baixar cada pacote de um espelho de sua escolha
 +
# Extrair cada pacote para a raiz
 +
# Reinstalar esses pacotes com {{ic|pacman -Sf}} para atualizar a base de dados de pacote
 +
# Fazer uma atualização completa do sistema
 +
 
 +
Se você tem um sistema do Arch saudável disponível, você pode ver a lista completa de dependências com
 +
 
 +
$ pacman -Q $(pactree -u pacman)
 +
 
 +
mas você pode precisar atualizar algumas delas, dependendo do seu problema. Um exemplo de extração de um pacote é
 +
 
 +
# tar -xvpwf ''pacote.tar.xz'' -C / --exclude .PKGINFO --exclude .INSTALL
 +
 
 +
Note que o uso da opção {{ic|w}} para modo interativo. Executar não interativamente é muito arriscado já que você pode acabar sobrescrevendo um arquivo importante. Também tenha cuidado ao extrair pacotes na ordem correta (i.e. dependências primeiro). [https://bbs.archlinux.org/viewtopic.php?id=95007 Essa publicação no fórum] contém um exemplo deste processo no qual apenas duas dependências do ''pacman'' estava quebradas.
 +
 
 +
=== pacman trava durante uma atualização ===
 +
 
 +
No caso do ''pacman'' travar com um erro de "escrita da base de dados" enquanto remove pacotes, e a reinstalação ou atualização de pacotes falha a partir daí, faça o seguinte:
 +
 
 +
# Inicialize usando a mídia de instalação do Arch. Preferivelmente use uma mídia recente, para que a versão do ''pacman'' seja igual ou mais nova do que a do sistema.
 +
# Monte o sistema de arquivos raiz do sistema (ex.: {{ic|mount /dev/sdaX /mnt}}) como root e verifique se a montagem tem espaço suficiente com {{ic|df -h}}
 +
# Monte os sistemas de arquivos proc e sysfs também: {{ic|mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev }}
 +
# Se o sistema usa locais padrão de base de dados e diretório, você pode agora atualizar a base de dados do ''pacman'' do sistema e atualizá-lo via {{ic|1=pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syyu}} como root.
 +
# Após a atualização, uma forma de verificar se pacotes não atualizados, mas ainda quebrados: {{ic|find /mnt/usr/lib -size 0}}
 +
# Seguido pela reinstalação de qualquer pacote ainda quebrado via {{ic|1=pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S ''pacote''}}.
 +
 
 +
=== Erro "Unable to find root device" após a reinicialização ===
 +
 
 +
Muito provavelmente seus initramfs quebrou durante uma atualização do kernel (uso indevido da opção {{ic|--force}} do ''pacman'' pode ser uma causa). Você tem duas opções; primeiro, tente a entrada ''Fallback''.
 +
 
 +
{{Dica|No caso de você ter removido o ''Fallback'', você pode sempre pressionar a tecla {{ic|Tab}} quando o gerenciador de boot aparecer (para Syslinux) ou {{ic|e}} (para GRUB), renomear {{ic|initramfs-linux-fallback.img}} e pressione {{ic|Enter}} ou {{ic|b}} (dependendo do seu gerenciador de boot) para inicializar com os novos parâmetros.}}
 +
 
 +
Quando o sistema iniciar, execute este comando (para o Kernel {{Pkg|linux}} padrão) através do console ou de um terminal para reconstruir a imagem initramfs:
 +
 
 +
# mkinitcpio -p linux
 +
 
 +
Se isso não funcionar, de uma versão atual do Arch (CD/DVD ou pendrive USB), [[mount|monte]] as partições ''root'' e ''boot''. Então, faça um [[chroot (Português)|chroot]] usando o ''arch-chroot'':
 +
 
 +
# arch-chroot /mnt
 +
# pacman -Syu mkinitcpio systemd linux
 +
 
 +
{{Nota|
 +
* Se você não tem uma versão atual ou se tem apenas alguma outra distribuição Linux "live", você pode fazer [[chroot (Português)|chroot]] usando o jeito antigo. Obviamente, terá que digitar mais do que simplesmente executar o script {{ic|arch-chroot}}.
 +
* Se ''pacman'' falhar com {{ic|não foi possível resolver máquina}}, por favor [[Configuração de rede#Verificando a conexão|verifique sua conexão com a Internet]].
 +
* Se você não conseguir entrar no ambiente do arch-chroot ou chroot, mas precisa reinstalar os pacotes, você pode usar o comando {{ic|pacman -r /mnt -Syu foo bar}} para usar o ''pacman'' em sua partição raiz.}}
 +
 
 +
A reinstalação do kernel (o pacote {{Pkg|linux}}) vai gerar automaticamente a imagem com {{ic|mkinitcpio -p linux}}. Não precisa fazer separadamente.
 +
 
 +
Após, recomenda-se que você execute {{ic|exit}}, {{ic|umount /mnt/{boot,} }} e {{ic|reboot}}.
 +
 
 +
=== Assinatura de "<email@exemplo.org>" tem confiança desconhecida, falha na instalação ===
 +
 
 +
Você pode tentar:
 +
* atualizar as chaves conhecidas, executando {{ic|pacman-key --refresh-keys}}
 +
* atualizar manualmente o pacote {{Pkg|archlinux-keyring}} primeiro, i.e. {{ic|pacman -Sy archlinux-keyring && pacman -Su}}
 +
* siga [[pacman-key (Português)#Redefinindo todas as chaves]]
 +
 
 +
=== Solicitação de importação de chaves PGP ===
 +
 
 +
Se estiver [[Guia de instalação|instalando]] o Arch com uma ISO desatualizado, você provavelmente terá que importar chaves PGP. Concorde com baixar a chave para proceder. Se você não consegue adicionar a chave PGP com sucesso, atualizar o chaveiro ou atualizar {{Pkg|archlinux-keyring}} (veja [[#Assinatura de "<email@exemplo.org>" tem confiança desconhecida, falha na instalação|acima]]).
 +
 
 +
=== Erro: chave "0123456789ABCDEF" não pôde ser procurado remotamente ===
 +
 
 +
Se pacotes forem assinados com novas chaves, que foram adicionadas apenas recentemente ao {{Pkg|archlinux-keyring}}, essas chaves não estão disponível localmente durante a atualização (problema [[w:pt:o ovo ou a galinha|ovo ou galinha]]). O {{Pkg|archlinux-keyring}} instalado não contém a chave até estar atualizado. Pacman tenta contornar isso procurando em um servidor de chaves, o que pode não ser possível, por exemplo, atrás de proxys ou firewall e resulta no erro informado. Atualize o {{Pkg|archlinux-keyring}} primeiro como mostrado [[#Assinatura de "<email@exemplo.org>" tem confiança desconhecida, falha na instalação|acima]].
 +
 
 +
=== Assinatura de "Usuário <email@archlinux.org>" é inválida, falha na instalação ===
 +
 
 +
Quando a hora do sistema está errado, as chaves de assinatura são considerados como expiradas (ou inválidas) e verificações de assinatura em pacotes vão falhar com o erro a seguir:
 +
 
 +
erro: ''pacote'': assinatura de "Usuário <email@archlinux.org>" é inválida
 +
erro: falha ao submeter transação (pacote inválido ou corrompido (assinatura PGP))
 +
Ocorreram erros e, portanto, nenhum pacote foi atualizado.
 +
 
 +
Certifique-se de corrigir o [[time|tempo]], por exemplo com {{ic|ntpd -qg}} executado como root, e execute {{ic|hwclock -w}} como root antes de instalações ou atualizações subsequentes.
 +
 
 +
=== Erro 'aviso: locale atual é inválida; usando locale padrão "C"' ===
 +
 
 +
Como a própria mensagem de erro diz, sua locale está configurada incorretamente. Consulte [[Locale (Português)|Locale]].
 +
 
 +
=== pacman não respeita as configurações de proxy ===
 +
 
 +
Certifique-se que as variáveis de ambiente relevantes ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} etc.) estão configuradas. Se você usa o ''pacman'' com [[sudo]], você precisa configurar o sudo para [[sudo#Environment variables|passar essas variáveis ​​de ambiente para o pacman]].
 +
 
 +
=== Como faço para reinstalar todos os pacotes, mantendo informações sobre se algo foi explicitamente instalado ou como uma dependência? ===
 +
 
 +
Para reinstalar todos os pacotes nativos: {{ic|<nowiki>pacman -Qnq | pacman -S -</nowiki>}} (a opção {{ic|-S}} preserva a razão de instalação por padrão).
 +
 
 +
Então você terá que reinstalar todos os pacotes externos, que podem ser listados com {{ic|pacman -Qmq}}.
 +
 
 +
=== Erro "cannot open shared object file" ===
 +
 
 +
Parece que uma transição anterior do ''pacman'' removeu ou corrompeu as bibliotecas compartilhadas necessárias para o ''pacman'' em si.
 +
 
 +
Para recuperar dessa situação, você precisa desempacotar manualmente as bibliotecas necessárias para seu sistema. Primeiro descubra qual pacote contém a biblioteca em falta e, então, localize-o no cache do ''pacman'' ({{ic|/var/cache/pacman/pkg/}}). Desempacote a biblioteca compartilhada necessária no sistema de arquivos. Isso vai permitir executar o ''pacman''.
 +
 
 +
Agora, você precisa [[#Instalando pacotes específicos|reinstalar]] o pacote quebrado. Note que você precisa usar a opção {{ic|--force}}, pois você acabou de desempacotar arquivos de sistema e o''pacman'' não tem conhecimento deles. O ''pacman'' vai substituir corretamente nosso arquivo de biblioteca compartilhada com o do pacote.
 +
 
 +
É isso. Atualize o resto do sistema.
 +
 
 +
=== Congelamento de downloads de pacote ===
 +
 
 +
Houve alguns relatos a cerca de problemas de rede que impedem o ''pacman'' de atualizar/sincronizar repositórios. [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&#61;65728] Ao instalar o Arch Linux nativamente, essas questões foram resolvidas substituindo o gerenciador de download de arquivos padrão do ''pacman'' com um alternativo (veja [[Melhorar desempenho do pacman]] para mais detalhes). Ao instalar o Arch Linux como um SO hospedeiro no [[VirtualBox (Português)|Virtualbox]], essa questão também foi resolvido usando ''Host interface'' em vez de ''NAT'' nas propriedades da máquina.
 +
 
 +
=== Falha ao obter arquivo 'core.db' do espelho ===
 +
 
 +
Se você receber essa mensagem de erro com os [[mirrors|espelhos]] (''mirrors'') corretos, tente configurar um [[Resolv.conf|servidor de nomes]] diferente.
 +
 
 +
== Veja também ==
 +
 
 +
* [https://www.archlinux.org/pacman/ Página inicial do pacman]
 +
* {{man|3|libalpm}}
 +
* {{man|8|pacman}}
 +
* {{man|5|pacman.conf}}
 +
* {{man|8|repo-add}}

Latest revision as of 19:06, 13 February 2018

O gerenciador de pacote pacman é uma das grandes vantagens do Arch Linux. Combina um simples pacote no formato binário, com um fácil uso de sistema de compilação. A meta do pacman é tornar o mais fácil possível gerenciar pacotes, sejam eles dos repositórios oficiais ou das próprias compilações do usuário.

O pacman mantém o sistema atualizado, listas de pacotes de sincronização com o servidor mestre. Este modelo servidor/cliente também permite o usuário baixar/instalar pacotes com um simples comando, completo com todas as dependências requeridas.

O pacman é escrito na linguagem de programação C e usa o formato tar para empacotamento.

Dica: O pacote pacman também contém outras ferramentas úteis, tal como o makepkg, pactree, vercmp e checkupdates. Execute pacman -Qlq pacman | grep bin para ver uma lista completa.

Contents

Uso

O que se segue é apenas uma pequena amostra das operações que o pacman pode executar. Para ler mais exemplos, consulte pacman(8).

Dica: Para usuários que utilizaram outras distribuições linux antes, ver o artigo Pacman Rosetta será útil.

Instalando pacotes

Nota: Alguns pacotes muitas vezes têm uma série de dependências opcionais de pacotes que fornecem funcionalidades adicionais para a aplicação, embora não seja estritamente necessário para executá-lo. Ao instalar um pacote, o pacman irá listar suas dependências opcionais entre as mensagens de saída, porém elas não serão encontrados no arquivo pacman.log: utilize o comando pacman -Si para visualizar as dependências opcionais de um pacote, juntamente com uma breve descrição das funcionalidades de cada um.
Nota: Ao instalar um pacote que requer apenas uma dependência (opcional) de algum outro pacote (isto é, necessário por você), é recomendado usar a opção --asdeps. Para detalhes, veja Motivo de instalação.
Atenção: Ao instalar pacotes no Arch, evite atualizar a lista de pacotes sem atualizar o sistema (por exemplo, quando um pacote não é encontrado nos repositórios oficiais). Na prática, não execute o comando pacman -Sy nome_pacote, pois isso poderia levar para problemas de dependências. Veja Manutenção do sistema#Sem suporte a atualizações parciais e BBS#89328.

Instalando pacotes específicos

Para instalar um único pacote ou lista de pacotes (incluindo dependências), execute o seguinte comando:

# pacman -S nome_pacote1 nome_pacote2 ...

Para instalar uma lista de pacotes com expressão regular (veja esse tópico do fórum):

# pacman -S $(pacman -Ssq regexp_pacote)

Às vezes, há várias versões de um pacote nos diferentes repositórios, por exemplo extra e testing. Para instalar a versão anterior, o repositório deve ser definido na frente:

# pacman -S extra/nome_pacote

Para instalar um número de pacotes que compartilham padrões em sua nomenclatura -- não todo um grupo nem todos pacotes correspondentes; por exemplo plasma:

# pacman -S plasma-{desktop,mediacenter,nm}

É claro, que não é limitado e pode ser expandido para quaisquer níveis sejam necessários:

# pacman -S plasma-{workspace{,-wallpapers},pa}

Instalando grupos de pacotes

Alguns pacotes pertencem a um grupo de pacotes que podem ser instalados simultaneamente. Por exemplo, o comando:

# pacman -S gnome

solicitará que você selecione os pacotes do grupo gnome que você deseja instalar.

Às vezes, um grupo de pacote conterá uma grande quantidade de pacotes, e pode haver só alguns que você quer ou não instalar. Em vez de digitar todos os números, exceto aqueles que você não quer, pode ser mais conveniente selecionar ou excluir pacotes ou intervalos de pacotes com a seguinte sintaxe:

Digite uma seleção (padrão=todos): 1-10 15

que vai selecionar pacotes 1 até 10 e 15 para a instalação, ou:

Digite uma seleção (padrão=todos):: ^5-8 ^2

vai selecionar todos os pacotes, exceto 5 até 8 e 2 para a instalação.

Para ver quais pacotes pertencem ao grupo gnome, execute:

# pacman -Sg gnome

Também visite https://www.archlinux.org/groups/ para saber quais os grupos de pacotes disponíveis.

Nota: Se um pacote na lista já está instalado no sistema, ele será reinstalado mesmo se já estiver atualizado. Este comportamento pode ser substituído com a opção --needed.

Removendo pacotes

Para remover um único pacote, deixando todas as suas dependências instaladas:

# pacman -R nome_pacote

Para remover um pacote e suas dependências que não são exigidas por qualquer outro pacote instalado:

# pacman -Rs nome_pacote

Para remover um pacote, suas dependências e todos os pacotes que dependem deste pacote:

Atenção: Esta operação é recursiva, e deve ser usada com cuidado, pois pode remover muitos pacotes potencialmente necessários.
# pacman -Rsc nome_pacote

Para remover um pacote, o qual é exigido por outro pacote, sem remover o pacote dependente:

# pacman -Rdd nome_pacote

O pacman salva arquivos de configuração importantes ao remover certos aplicativos e os nomes com a extensão: .pacsave. Para prevenir a criação desses arquivos de backup use a opção -n:

# pacman -Rn nome_pacote
Nota: O pacman não removerá as configurações que o próprio aplicativo cria (por exemplo, "dotfiles" na pasta home).

Atualizando pacotes

Atenção:

O pacman pode atualizar todos os pacotes no sistema com apenas um comando. Isso pode demorar um pouco dependendo de como anda a atualização do sistema. Este comando pode sincronizar as bases de dados do repositório e atualizar os pacotes do sistema (excluindo pacotes "locais" que não estão nos repositórios configurados):

# pacman -Syu

Consultando base de dados de pacotes

O pacman consulta a base de dados do pacote local com a opção -Q, a base de dados de sincronização com a opção -S e a base de dados de arquivos com a opção -F. Veja pacman -Q --help, pacman -S --help e pacman -F --help para as respectivas subopções de cada opção.


O pacman pode pesquisar por pacotes na base de dados, pesquisando nomes e descrições dos pacotes:

$ pacman -Ss string1 string2 ...


Algumas vezes, ERE (Extended Regular Expressions) incorporadas no -s podem causar muitos dos resultados indesejados, então têm que ser limitadas a corresponder ao nome de pacote apenas; não a descrição nem qualquer outro campo:

$ pacman -Ss '^vim-'


Para procurar os pacotes já instalados:

$ pacman -Qs string1 string2 ...

Para procurar nomes de pacotes em pacotes remotos:

$ pacman -Fs string1 string2 ...

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

$ pacman -Si nome_pacote

Para os pacotes instalados localmente:

$ pacman -Qi nome_pacote

Inserindo duas opções -i também exibirá a lista de arquivos de backup e seus estados de alterações:

$ pacman -Qii nome_pacote

Para obter uma lista dos arquivos instalados por um pacote:

$ pacman -Ql nome_pacote

Para obter uma lista dos arquivos instalados por um pacote remoto:

$ pacman -Fl nome_pacote

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

$ pacman -Qk nome_pacote

Passando a opção k duas vezes, irá ser realizado uma verificação mais aprofundada.

Pode-se também consultar a base de dados para saber qual pacote um arquivo no arquivo do sistema pertence:

$ pacman -Qo /caminho/para/nome_de_arquivo

Para consultar o banco de dados para saber de qual pacote remoto um arquivo pertence:

$ pacman -Fo /caminho/para/nome_de_arquivo

Para listar todos os pacotes que não são exigidos como dependências (órfãos):

$ pacman -Qdt

Para listar todos os pacotes explicitamente instalados e que não são necessários como dependências:

$ pacman -Qet

Para listar a árvore de dependência de um pacote:

$ pactree nome_pacote

Para listar todos os pacotes dependentes de um pacote instalado, use whoneeds do pacote pkgtoolsAUR:

$ whoneeds nome_pacote

Ou a opção inversa para pactree:

$ pactree -r nome_pacote

Veja Pacman/Dicas e truques para mais exemplos.

Estrutura da base de dados

As bases de dados do pacman estão normalmente localizadas em /var/lib/pacman/sync. Para cada repositório especificado em /etc/pacman.conf haverá um arquivo de base de dados correspondente localizado lá. Os arquivos das bases de dados são arquivos tar-gzipped contendo um diretório para cada pacote, por exemplo, para o pacote which:

% tree which-2.20-6 
which-2.20-6
|-- depends
`-- desc

O arquivo depends lista os pacotes que este pacote depende, enquanto a desc possui uma descrição do pacote, como o tamanho do arquivo e o hash do MD5.

Limpando o cache de pacotes

O pacman armazena seus pacotes baixados em /var/cache/pacman/pkg/ e não remove as versões antigas ou desinstaladas automaticamente, portanto, é necessário limpar deliberadamente essa pasta periodicamente para impedir que essa pasta cresça indefinidamente em tamanho.

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

# pacman -Sc
Atenção:
  • Apenas faça isso quando estiver certeza de que as versões anteriores dos pacotes não são mais necessárias, por exemplo, para um downgrade posterior. pacman -Sc deixa as versões dos pacotes atualmente instalados, as versões antigas teriam que ser recuperadas por outros meios, como o Arch Linux Archive.
  • É possível esvaziar completamente a pasta cache com pacman -Scc. Além disso, isso também impede a reinstalação de um pacote diretamente da pasta de cache em caso de necessidade, exigindo um novo download. Isso deve ser evitado a menos que seja necessário ter espaço em disco imediatamente.

Devido às limitações acima, considere uma alternativa para ter mais controle sobre quais pacotes e quantos são excluídos do cache:

O script paccache, fornecido pelo próprio pacote pacman, exclui todas as versões em cache de cada pacote independentemente de estarem instalados ou não, exceto os 3 mais recentes, por padrão:

# paccache -r
Dica: Você pode criar #Hooks para executar isso automaticamente após cada transação do pacman. Veja este tópico para obter exemplos.

Você pode definir quantas versões recentes deseja manter:

# paccache -rk 1

Para remover todas as versões em cache de pacotes desinstalados, execute novamente paccache com:

# paccache -ruk0

Veja paccache -h para mais opções.

pkgcachecleanAUR e pacleanerAUR são duas alternativas.

Comandos adicionais

Faça o download de um pacote sem instalá-lo:

# pacman -Sw nome_pacote

Instale um pacote "local" que não seja de um repositório remoto (ex., o pacote é do AUR):

# pacman -U /caminho/para/pacote/nome_pacote-versão.pkg.tar.xz

Para manter uma cópia do pacote local no cache do pacman, use:

# pacman -U file:///caminho/para/pacote/nome_pacote-versão.pkg.tar.xz

Instale um pacote "remoto" (não de um repositório indicado nos arquivos de configuração do pacman):

# pacman -U http://www.exemplo.com/repo/exemplo.pkg.tar.xz

Para inibir as ações -S, -U e -R, a opção -p pode ser usada.

O pacman sempre lista os pacotes a serem instalados ou removidos e pede permissão antes de executar.

Motivo de instalação

A base de dados do pacman distingue os pacotes instalados em dois grupos de acordo com o motivo pelo qual eles foram instalados:

  • instalados explicitamente: os pacotes foram passados literalmente para um comando genérico pacman -S ou -U;
  • dependências: os pacotes que, apesar de nunca (em geral) terem sido passados para um comando de instalação do pacman, foram instalados implicitamente porque é exigido por outro pacote que foi instalado explicitamente.

Ao instalar um pacote, é possível forçar o motivo da instalação da dependência com:

# pacman -S --asdeps nome_pacote
Dica: A instalação de dependências opcionais com --asdeps fará com que, se você remover pacotes órfãos, o pacman também removerá as dependências opcionais.

Ao reinstalar um pacote, o motivo dessa instalação atual é preservado por padrão.

A lista de pacotes instalados explicitamente pode ser vista com pacman -Qe, enquanto a lista de dependências instaladas pode ser vista com pacman -Qd.

Para alterar o motivo da instalação de um pacote já instalado, execute:

# pacman -D -asdeps nome_pacote

Use --asexplicit para a operação oposta.

Pesquisar por um pacote que contenha um arquivo específico

Sincronize a base de dados de arquivos:

# pacman -Fy

Pesquise por um pacote contendo um arquivo, p.ex.:

# pacman -Fs pacman
core/pacman 5.0.1-4
    usr/bin/pacman
    usr/share/bash-completion/completions/pacman
extra/xscreensaver 5.36-1
    usr/lib/xscreensaver/pacman
Dica: Você pode definir um trabalho cron ou um temporizador do systemd para sincronizar a base de dados de arquivos regularmente.

Para funcionalidade avançada, instale o pkgfile, que usa uma base de dados separada com todos os arquivos e seus pacotes associados.

Configuração

As configurações do pacman estão localizados em /etc/pacman.conf: este é o local onde o usuário configura o programa para funcionar da forma desejada. Informações detalhadas sobre o arquivo de configuração pode ser encontrada em pacman.conf(5).

Opções gerais

Opções gerais estão na seção [options]. Leia pacman(8) ou olhe no pacman.conf padrão para obter informações sobre o que pode ser feito aqui.

Comparando versões antes de atualizar

Para ver versões antigas e novas dos pacotes disponíveis, descomente a linha "VerbosePkgLists" em /etc/pacman.conf. A saída de pacman -Syu será algo como:

Pacote (6)            Versão antiga  Versão nova    Alteração   Tamanho de download

extra/libmariadbclient  10.1.9-4     10.1.10-1      0.03 MiB       4.35 MiB
extra/libpng            1.6.19-1     1.6.20-1       0.00 MiB       0.23 MiB
extra/mariadb           10.1.9-4     10.1.10-1      0.26 MiB      13.80 MiB

Pular pacotes para não serem atualizados

Atenção: Tenha cuidado ao pular pacotes, já que não há suporte a atualizações parciais.

Para pular a atualização de um pacote específico quando estiver atualizando o sistema, faça:

IgnorePkg=linux

Para vários pacotes use uma lista separada por espaço, ou use adicionais linhas IgnorePkg. Além disso, padrões de glob podem ser usados. Se você deseja pular pacotes apenas uma vez, você também pode usar a opção --ignore na linha de comando - dessa vez com uma lista separada por vírgula.

Ainda será possível atualizar pacotes ignorados usando pacman -S: neste caso, pacman lhe lembrará de que os pacotes têm incluídos em uma declaração de IgnorePkg.

Pular um grupos de pacotes para não serem atualizados

Atenção: Tenha cuidado ao pular grupos de pacotes, já que não há suporte a atualizações parciais.

Tal como acontece com os pacotes, pular um grupo de pacote inteiro também é possível:

IgnoreGroup=gnome

Pular arquivos para não serem instalados no sistema

Para pular sempre a instalação de lista de diretórios sob NoExtract. Por exemplo, para evitar a instalação de units de systemd use:

NoExtract=usr/lib/systemd/system/*

Regras posteriores sobrescrevem as anteriores e podem negar uma regra adicionando antes !.

Dica: O pacman emite mensagens de avisos sobre locales faltando ao atualizar um pacote para os quais os locales foram limpados com localepurge ou bleachbit. Comentando a opção CheckSpace em pacman.conf suprime aviso, mas considera que a funcionalidade de verificação de espaço será desabilitada para todos os pacotes.

Manter vários arquivos de configuração

Se você tiver vários arquivos de configuração (ex.: configuração principal e configuração com repositório testing habilitado) e você gostaria de compartilhar opções entre configurações, você pode usar a opção Include declarada nos arquivos de configuração, ex.:

Include = /caminho/para/configurações/comuns

sendo que arquivo /caminho/para/configurações/comuns contém as mesmas opções para ambas configurações.

Hooks

pacman pode executar hooks de pré- e pós-transação do diretório /usr/share/libalpm/hooks/; mais diretórios podem ser especificados com a opção HookDir no pacman.conf, que tem como padrão /etc/pacman.d/hooks. Nomes de arquivo hook devem ser sufixados com .hook.

Para mais informações sobre hooks do alpm, veja alpm-hooks(5).

Repositórios e espelhos

Além da seção especial [options], cada outra [section] no pacman.conf define um repositório de pacote a ser usado. Um repositório é uma coleção lógica de pacotes, que são armazenados fisicamente em um ou mais servidores: por esse motivo, cada servidor é chamado de um espelho para o repositório.

Repositórios são distinguidos entre oficial e não oficiais. A ordem de repositórios no arquivo de configuração importa; repositórios listados primeiro terão precedências sobre os listados posteriormente quando pacotes nos dois repositórios tiverem nomes idênticos, independentemente do número da versão. Para usar um repositório após adicioná-lo, você precisará atualizar todo o sistema primeiro.

Cada seção de repositório permite definir a lista de seus espelhos diretamente ou em um arquivo externo por meio da diretiva Include: por exemplo, os espelhos para os repositórios oficiais são incluídos no /etc/pacman.d/mirrorlist. Veja o artigo Mirrors para configuração de espelho.

Segurança de pacote

O pacman oferece suporte a assinaturas de pacotes, que adiciona uma camada extra de segurança para os pacotes. A configuração padrão, SigLevel = Required DatabaseOptional, habilita verificação de assinatura para todos os pacotes em um nível global: isso pode ser sobrescrito por linhas SigLevel para cada repositório. Para mais detalhes sobre assinatura de pacote e verificação de assinatura, dê uma olhada em pacman-key.

Solução de problemas

Erro "falha em submeter a transação (arquivos conflitantes)"

Se você vir o erro: [1]

erro: não foi possível preparar transação
erro: falha ao submeter transação (arquivos conflitantes)
pacote: /caminho/para/arquivo existe no sistema de arquivos
Ocorreram erros e, portanto, nenhum pacote foi atualizado.

Por que isso aconteceu: o pacman detectou um conflito de arquivo e, por design, não vai sobrescrever arquivos para você. Este é um recurso de design, não uma falha.

O problema geralmente é trivial de resolver. Uma maneira segura é primeiro verificar se outro pacote possui o arquivo (pacman -Qo /caminho/para/arquivo). Se o arquivo for de propriedade de outro pacote, preencha um relatório de erro. Se o arquivo não for de outro pacote, renomeie o arquivo que "existe no sistema de arquivos" e execute novamente o comando de atualização. Se tudo correr bem, o arquivo pode então ser removido.

Se você instalou um programa manualmente sem usar o pacman ou um frontend dele (p.ex.: por meio de make install), você tem que removê-lo e todos os seus arquivos para, depois, reinstalar adequadamente usando o pacman. Veja também Pacman/Dicas e truques#Identificar arquivos que pertençam a nenhum pacote.

Todo pacote instalado fornece um arquivo /var/lib/pacman/local/$pacote-$versão/files que contém metadados sobre esse pacote. Se o arquivo ficar corrompido, vazio ou desaparecer, ele resulta em erros de existe no sistema de arquivos ao tentar atualizar o pacote. Tal erro geralmente está relacionado a um pacote. Em vez de renomear manualmente e posteriormente remover todos os arquivos que pertencem ao pacote em questão, você pode tentar excepcionalmente executar pacman -S --force $pacote para forçar o pacman a sobrescrever esses arquivos.

Atenção: Tenha cuidado ao usar a opção --force (por exemplo, pacman -Syu --force), pois ela pode causar grandes problemas se usada inadequadamente. É altamente recomendado usar essa opção apenas quando as notícias do Arch instruem o usuário a fazê-lo.

Erro "falha em submeter a transação (pacote inválido ou corrompido)"

Procure por arquivos .part (pacotes baixados parcialmente) em /var/cache/pacman/pkg e remove-os (muitas vezes causado pelo uso da opção XferCommand em pacman.conf).

# find /var/cache/pacman/pkg/ -iname "*.part" -exec rm {} \;

Erro "falha ao iniciar a transação (não foi possível travar a base de dados)"

Quando o pacman vai alterar a base de dados de pacotes, por exemplo instalar um pacote, ele cria um arquivo de trava em /var/lib/pacman/db.lck. Isso evita que uma outra instância do pacman tente alterar a base de dados de pacotes ao mesmo tempo.

Se o pacman for interrompido enquanto altera a base de dados, esse arquivo de trava obsoleto pode permanecer. Se você tem certeza que nenhuma outra instância do pacman está em execução, então exclua o arquivo de trava:

# rm /var/lib/pacman/db.lck

Pacotes não podem ser obtidos na instalação

Esse erro se manifesta como não encontrado na base de dados de sincronização, alvo não encontrado ou falha ao obter o arquivo.

Primeiramente, assegure-se de que o pacote realmente existe (e cuidado para erros de escrita!). Se você tem certeza que o pacote existe, sua lista de pacote pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente execute pacman -Syyu para forçar uma atualização de todas as listas de pacote e atualize.

Pode ser também que aquele repositório contendo o pacote não está habilidade no seu sistema. Por exemplo, o pacote pode estar no repositório multilib, mas o multilib não está habilitado em seu pacman.conf.

Veja também FAQ (Português)#Por que há alguma uma única versão de cada biblioteca compartilhada nos repositórios oficiais?.

Reinstalação manual do pacman

Atenção: É extremamente fácil quebrar seu sistema ainda mais, usando essa abordagem. Use isso apenas como um último recurso se o método do #pacman trava durante uma atualização não for uma opção.

Mesmo se o pacman estiver terrivelmente quebrado, você pode corrigi-lo manualmente baixando os últimos pacotes e extraindo-os para os locais corretos. Os passos difíceis a se executar são

  1. Determinar dependências para instalar
  2. Baixar cada pacote de um espelho de sua escolha
  3. Extrair cada pacote para a raiz
  4. Reinstalar esses pacotes com pacman -Sf para atualizar a base de dados de pacote
  5. Fazer uma atualização completa do sistema

Se você tem um sistema do Arch saudável disponível, você pode ver a lista completa de dependências com

$ pacman -Q $(pactree -u pacman)

mas você pode precisar atualizar algumas delas, dependendo do seu problema. Um exemplo de extração de um pacote é

# tar -xvpwf pacote.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL

Note que o uso da opção w para modo interativo. Executar não interativamente é muito arriscado já que você pode acabar sobrescrevendo um arquivo importante. Também tenha cuidado ao extrair pacotes na ordem correta (i.e. dependências primeiro). Essa publicação no fórum contém um exemplo deste processo no qual apenas duas dependências do pacman estava quebradas.

pacman trava durante uma atualização

No caso do pacman travar com um erro de "escrita da base de dados" enquanto remove pacotes, e a reinstalação ou atualização de pacotes falha a partir daí, faça o seguinte:

  1. Inicialize usando a mídia de instalação do Arch. Preferivelmente use uma mídia recente, para que a versão do pacman seja igual ou mais nova do que a do sistema.
  2. Monte o sistema de arquivos raiz do sistema (ex.: mount /dev/sdaX /mnt) como root e verifique se a montagem tem espaço suficiente com df -h
  3. Monte os sistemas de arquivos proc e sysfs também: mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev
  4. Se o sistema usa locais padrão de base de dados e diretório, você pode agora atualizar a base de dados do pacman do sistema e atualizá-lo via pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Syyu como root.
  5. Após a atualização, uma forma de verificar se pacotes não atualizados, mas ainda quebrados: find /mnt/usr/lib -size 0
  6. Seguido pela reinstalação de qualquer pacote ainda quebrado via pacman --root /mnt --cachedir=/mnt/var/cache/pacman/pkg -S pacote.

Erro "Unable to find root device" após a reinicialização

Muito provavelmente seus initramfs quebrou durante uma atualização do kernel (uso indevido da opção --force do pacman pode ser uma causa). Você tem duas opções; primeiro, tente a entrada Fallback.

Dica: No caso de você ter removido o Fallback, você pode sempre pressionar a tecla Tab quando o gerenciador de boot aparecer (para Syslinux) ou e (para GRUB), renomear initramfs-linux-fallback.img e pressione Enter ou b (dependendo do seu gerenciador de boot) para inicializar com os novos parâmetros.

Quando o sistema iniciar, execute este comando (para o Kernel linux padrão) através do console ou de um terminal para reconstruir a imagem initramfs:

# mkinitcpio -p linux

Se isso não funcionar, de uma versão atual do Arch (CD/DVD ou pendrive USB), monte as partições root e boot. Então, faça um chroot usando o arch-chroot:

# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
Nota:
  • Se você não tem uma versão atual ou se tem apenas alguma outra distribuição Linux "live", você pode fazer chroot usando o jeito antigo. Obviamente, terá que digitar mais do que simplesmente executar o script arch-chroot.
  • Se pacman falhar com não foi possível resolver máquina, por favor verifique sua conexão com a Internet.
  • Se você não conseguir entrar no ambiente do arch-chroot ou chroot, mas precisa reinstalar os pacotes, você pode usar o comando pacman -r /mnt -Syu foo bar para usar o pacman em sua partição raiz.

A reinstalação do kernel (o pacote linux) vai gerar automaticamente a imagem com mkinitcpio -p linux. Não precisa fazer separadamente.

Após, recomenda-se que você execute exit, umount /mnt/{boot,} e reboot.

Assinatura de "<email@exemplo.org>" tem confiança desconhecida, falha na instalação

Você pode tentar:

Solicitação de importação de chaves PGP

Se estiver instalando o Arch com uma ISO desatualizado, você provavelmente terá que importar chaves PGP. Concorde com baixar a chave para proceder. Se você não consegue adicionar a chave PGP com sucesso, atualizar o chaveiro ou atualizar archlinux-keyring (veja acima).

Erro: chave "0123456789ABCDEF" não pôde ser procurado remotamente

Se pacotes forem assinados com novas chaves, que foram adicionadas apenas recentemente ao archlinux-keyring, essas chaves não estão disponível localmente durante a atualização (problema ovo ou galinha). O archlinux-keyring instalado não contém a chave até estar atualizado. Pacman tenta contornar isso procurando em um servidor de chaves, o que pode não ser possível, por exemplo, atrás de proxys ou firewall e resulta no erro informado. Atualize o archlinux-keyring primeiro como mostrado acima.

Assinatura de "Usuário <email@archlinux.org>" é inválida, falha na instalação

Quando a hora do sistema está errado, as chaves de assinatura são considerados como expiradas (ou inválidas) e verificações de assinatura em pacotes vão falhar com o erro a seguir:

erro: pacote: assinatura de "Usuário <email@archlinux.org>" é inválida
erro: falha ao submeter transação (pacote inválido ou corrompido (assinatura PGP))
Ocorreram erros e, portanto, nenhum pacote foi atualizado.

Certifique-se de corrigir o tempo, por exemplo com ntpd -qg executado como root, e execute hwclock -w como root antes de instalações ou atualizações subsequentes.

Erro 'aviso: locale atual é inválida; usando locale padrão "C"'

Como a própria mensagem de erro diz, sua locale está configurada incorretamente. Consulte Locale.

pacman não respeita as configurações de proxy

Certifique-se que as variáveis de ambiente relevantes ($http_proxy, $ftp_proxy etc.) estão configuradas. Se você usa o pacman com sudo, você precisa configurar o sudo para passar essas variáveis ​​de ambiente para o pacman.

Como faço para reinstalar todos os pacotes, mantendo informações sobre se algo foi explicitamente instalado ou como uma dependência?

Para reinstalar todos os pacotes nativos: pacman -Qnq | pacman -S - (a opção -S preserva a razão de instalação por padrão).

Então você terá que reinstalar todos os pacotes externos, que podem ser listados com pacman -Qmq.

Erro "cannot open shared object file"

Parece que uma transição anterior do pacman removeu ou corrompeu as bibliotecas compartilhadas necessárias para o pacman em si.

Para recuperar dessa situação, você precisa desempacotar manualmente as bibliotecas necessárias para seu sistema. Primeiro descubra qual pacote contém a biblioteca em falta e, então, localize-o no cache do pacman (/var/cache/pacman/pkg/). Desempacote a biblioteca compartilhada necessária no sistema de arquivos. Isso vai permitir executar o pacman.

Agora, você precisa reinstalar o pacote quebrado. Note que você precisa usar a opção --force, pois você acabou de desempacotar arquivos de sistema e opacman não tem conhecimento deles. O pacman vai substituir corretamente nosso arquivo de biblioteca compartilhada com o do pacote.

É isso. Atualize o resto do sistema.

Congelamento de downloads de pacote

Houve alguns relatos a cerca de problemas de rede que impedem o pacman de atualizar/sincronizar repositórios. [2] [3] Ao instalar o Arch Linux nativamente, essas questões foram resolvidas substituindo o gerenciador de download de arquivos padrão do pacman com um alternativo (veja Melhorar desempenho do pacman para mais detalhes). Ao instalar o Arch Linux como um SO hospedeiro no Virtualbox, essa questão também foi resolvido usando Host interface em vez de NAT nas propriedades da máquina.

Falha ao obter arquivo 'core.db' do espelho

Se você receber essa mensagem de erro com os espelhos (mirrors) corretos, tente configurar um servidor de nomes diferente.

Veja também