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

From ArchWiki
Jump to: navigation, search
m (improve related links and templates)
(replaced external links (interactive))
(Tag: wiki-scripts)
 
(43 intermediate revisions by 9 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 20: Line 22:
 
[[tr:pacman]]
 
[[tr:pacman]]
 
[[uk:Pacman]]
 
[[uk:Pacman]]
[[zh-CN:Pacman]]
+
[[zh-hans:Pacman]]
[[zh-TW:Pacman]]
+
[[zh-hant:Pacman]]
==Descrição==
+
{{Related articles start (Português)}}
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|Creating packages (Português)}}
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|Downgrading packages}}
 +
{{Related|pacman/Package signing}}
 +
{{Related|pacman/Pacnew and Pacsave}}
 +
{{Related|pacman/Restore local database}}
 +
{{Related|pacman/Rosetta}}
 +
{{Related|pacman/Tips and tricks}}
 +
{{Related|FAQ#Package management}}
 +
{{Related|System maintenance}}
 +
{{Related|Arch Build System (Português)}}
 +
{{Related|Official repositories (Português)}}
 +
{{Related|Arch User Repository (Português)}}
 +
{{Related articles end}}
 +
{{Bad translation (Português)|Desatualizado, faltando aqui informações contidas no original}}
  
==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|sistema de compilação]]. A meta do pacman é tornar o mais fácil possivel gerenciar pacotes, sejam eles dos [[Official repositories|oficiais repositórios Arch]] 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.
+
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===
+
Pacman é escrito na linguagem de programação C e usa o formato de pacote {{ic|.pkg.tar.xz}}.
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 oficial pacote {{Pkg|pacman}} também contém outras ferramentas úteis, tais como o '''makepkg''', '''pactree''', '''vercmp''' e mais: execute {{ic|pacman -Ql 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|url=https://www.archlinux.org/pacman/pacman.8.html#_examples}}.
  
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
+
{{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 do pacote|pacman -Si]] para visualizar as dependências opcionais de um pacote, juntamente com uma breve descrição das funcionalidades de cada um.}}
  
Para remover um pacote, deixando todas as dependências instaladas:
+
{{Atenção|Ao instalar pacotes no Arch, evite atualizar a lista de pacotes sem [[#Atualizando pacotes|atualizar o sistema]] (por exemplo, quando um [[#Eu recebo um erro ao instalar um pacote: "não encontrou em sincronia com base de dados"|pacote não é encontrado]] nos repositórios oficiais). Na prática, execute o comando {{ic|pacman -Sy'''u''' ''nome_pacote''}} em vez de {{ic|pacman -Sy ''nome_pacote''}}, pois isso pode levar a problemas de dependências.}}
  
pacman -R nome_pacote
+
==== Instalando pacotes específicos ====
  
Para remover todas as dependências de um pacote que não estão a ser utilizadas por nenhum outro:
 
  
pacman -Rs nome_pacote
+
Para instalar um único pacote ou lista de pacotes (incluindo dependências), execute o seguinte comando:
  
Para remover um pacote sem verificar as suas dependências (perigoso):
+
# pacman -S ''nome_pacote1'' ''nome_pacote2'' ...
  
pacman -Rd nome_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:
  
===Actualizar o Sistema===
+
# pacman -S extra/''nome_pacote''
  
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.
+
Para instalar um grupo de pacotes que compartilham padrões em sua nomenclatura, mas sem instalar o grupo inteiro, por exemplo, se for instalar o {{Grp|plasma}}, mas apenas alguns pacotes como o plasma-desktop e o plasma-mediacenter, pode se utilizar o comando:
Primeiro vai sincronizar os repositorios (y) e seguidamente actualiza os pacotes necessários (u)
+
 +
# pacman -S ''plasma-{desktop,mediacenter}''
  
pacman -Syu
+
O comando acima também pode ser usado em subniveis como:
  
===Fazer Query à Base de Dados de Pacotes===
+
# pacman -S ''plasma-{workspace{,-wallpapers},pa}''
  
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):
+
==== Instalando grupos de pacotes ====
  
pacman -Ss pacote
+
Alguns pacotes pertencem a um grupo de pacotes que podem ser instalados simultaneamente. Por exemplo, o comando:
  
Para procurar os pacotes instalados:
+
# pacman -S gnome
  
pacman -Qs pacote
+
este comando solicitará que você selecione os pacotes do grupo {{Grp|gnome}} que você deseja instalar.
  
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.
+
À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:
  
  pacman -Si pacote
+
  Digite uma seleção (padrão=todos): 1-10 15
pacman -Qi pacote
 
  
Para uma lista dos ficheiros que estão num pacote:
+
irá selecionar pacotes 1 até 10 e 15 para a instalação, ou:
  
  pacman -Ql pacote
+
  Digite uma seleção (padrão=todos):: ^5-8 ^2
  
Para uma lista dos pacotes instalados como dependencias mas que já não sao necessários:
+
irá selecionar todos os pacotes, exceto 5 até 8 e 2 para a instalação.
  
pacman -Qdt
+
Para ver quais pacotes pertencem ao grupo gnome, execute:
  
Pode também fazer um ''query'' sobre a qual pacote pertence um ficheiro presente no sistema.
+
# pacman -Sg gnome
  
pacman -Qo /caminho/do/ficheiro
+
Também visite https://www.archlinux.org/groups/ para saber quais os grupos de pacotes disponíveis.
  
===Outros usos===
+
{{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}}.}}
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):
+
{{Dica |1=Ao instalar os pacotes, ''não'' atualizar a lista de pacotes sem [[#Atualizando pacotes|atualizar o sistema]] (ex. {{ic|pacman -Sy ''package_name''}}), isso pode ocasinar erros de dependêcias. Veja [[#Atualizações parciais não são suportadas]] e https://bbs.archlinux.org/viewtopic.php?id=89328.}}
pacman -U /caminho/do/pacote/nome_pacote-versão.pkg.tar.gz
 
  
* Apagar a ''cache'' de pacotes (/var/cache/pacman/pkg):
+
=== Removendo pacotes ===
pacman -Scc
 
  
Para mais informação detalhada fazer <code>pacman --help</code> ou <code>man pacman</code>
+
Para remover um único pacote, deixando todas as suas dependências instaladas:
  
==Configuração==
+
# pacman -R ''package_name''
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 pacote e suas dependências que não são exigidas por qualquer outro pacote instalado:
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 -Rs ''package_name''
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, suas dependências e todos os pacotes que dependem deste pacote:
[nome-repositório]
+
 
Server = ftp://servidor.net/repo
+
{{Atenção|Esta operação é recursiva, e deve ser usada com cuidado, pois pode remover muitos pacotes potencialmente necessários.}}
</pre>
+
 
 +
# pacman -Rsc ''package_name''
 +
 
 +
Para remover um pacote, o qual é exigido por outro pacote, sem remover o pacote dependente:
 +
 
 +
# pacman -Rdd ''package_name''
 +
 
 +
O pacman salva arquivos de configuração importantes ao remover certos aplicativos e os nomes com a extensão: {{ic|.pacsave}}. Para prevenir a criação desses arquivos de backup use a opção {{ic|-n}}:
 +
 
 +
# pacman -Rn ''package_name''
 +
 
 +
{{Nota|Pacman não removerá as configurações que o próprio aplicativo cria (por exemplo, "dotfiles" na pasta home).}}
 +
 
 +
=== Atualizando pacotes ===
 +
 
 +
{{Atenção|
 +
*Os usuários devem seguir as orientações em [[System maintenance#Upgrading the system]] para atualizar os seus sistemas regularmente e nao executar o seguinte comando as cegas.
 +
*Arch suporta apenas atualizações completa de sistema. Veja [[System maintenance#Partial upgrades are unsupported]] e [[#Instalando Pacotes]] para mais detalhes.}}
 +
 
 +
''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
 +
 
 +
{{Dica | Em vez de logo que as atualizações estiverem disponíveis, os usuários devem reconhecer que, devido à natureza Arch's rolling release, uma atualização pode ter consequências imprevisíveis. Isso significa que não é prudente atualizar se, por exemplo, tem alguma tarefa importante para fazer. Preferencialmente, atualize durante o tempo livre e esteja preparado para lidar com quaisquer problemas que possam surgir.}}
 +
 
 +
O Pacman é uma ferramenta de gerenciamento de pacotes poderosa, ao atualizar o sistema, os usuários devem estar atentos e ter a responsabilidade pela manutenção do seu próprio sistema. '''Ao realizar uma atualização do sistema, é essencial que os usuários leiam todas as saídas de informações do pacman e usem o bom senso.''' Se um arquivo de configuração que foi modificado pelo usuário precisar ser atualizado para uma nova versão de um pacote, um arquivo {{ic |.pacnew}} será criado para evitar a substituição de configurações alteradas pelo usuário, então, o Pacman pedirá ao usuário para juntá-las. Esses arquivos requerem intervenção manual do usuário e é uma boa prática para lidar com eles logo após cada atualização ou remoção do pacote.
 +
 
 +
{{Dica |Lembre-se que a saída do pacman é registrada no {{ic|/var/log/pacman.log}}.}}
 +
 
 +
Antes de atualizar, é aconselhável visitar [https://www.archlinux-br.org/ a página Arch Linux Brasil] para verificar as últimas notícias (alternativamente assinar o [http://www.archlinux-br.org/feeds/news/], [https://mailman.archlinux.org/mailman/listinfo/arch-announce/ arco-announce mailing list], ou seguir [https://twitter.com/archlinux @archlinux] no Twitter), quando atualizações exigem a intervenção do usuário (mais do que isso pode ser tratada simplesmente seguindo as instruções dadas pelo pacman), uma mensagem de notícias no site será criada.
 +
 
 +
Se alguém encontrar problemas que não podem ser resolvidos por estas instruções, certifique-se de pesquisar no fórum. É provável que os outros já tenham encontrado o mesmo problema e publicaram as instruções para resolvê-lo.
 +
 
 +
=== Consultando base de dados do pacote ===
 +
 
 +
Pacman consulta a base de dados do pacote local com a flag {{ic|-Q}}, veja:
 +
 
 +
$ pacman -Q --help
 +
 
 +
e consulte a base de dados de sincronização com a flag {{ic|-S}}, veja:
 +
 
 +
$ pacman -S --help
 +
 
 +
Pacman pode pesquisar por pacotes na base de dados, pesquisando nomes e descrições dos pacotes:
 +
 
 +
$ pacman -Ss ''string1'' ''string2'' ...
 +
 
 +
 
 +
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 ''package_name''
 +
 
 +
Para os pacotes instalados localmente:
 +
 
 +
$ pacman -Qi ''package_name''
 +
 
 +
Inserindo duas flags {{ic |-i}} também exibirá a lista de arquivos de backup e seus estados de alterações:
 +
 
 +
$ pacman -Qii ''package_name''
 +
 
 +
Para obter uma lista dos arquivos instalados por um pacote:
 +
 
 +
$ pacman -Ql ''package_name''
 +
 
 +
Para pacotes não instalados, use [[pkgfile]].
 +
 
 +
Para obter uma lista dos arquivos instalados por um pacote remoto:
 +
 
 +
$ pacman -Fl ''package_name''
 +
 
 +
Para verificar a presença dos arquivos instalados por um pacote:
 +
 
 +
$ pacman -Qk ''package_name''
 +
 
 +
Usando duas flags {{ic|k}}, 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 ''/path/to/file_name''
 +
 
 +
Para consultar o banco de dados para saber de qual pacote remoto um arquivo pertence:
 +
 
 +
$ pacman -Fo /path/to/file_name
 +
 
 +
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 ''package_name''
 +
 
 +
Para listar todos os pacotes dependentes de um pacote ''instalado'', use {{ic|whoneeds}} do pacote [[pkgtools]]:
 +
 
 +
$ whoneeds ''package_name''
 +
 
 +
Ou a flag inversa para  ''pactree'':
 +
 
 +
$ pactree -r ''package_name''
 +
 
 +
veja [[pacman tips]] 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.
 +
 
 +
=== Limpeza do cache do pacote ===
 +
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]] 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 [[Archive]] (''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 |Você pode criar [[pacman 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 ''package_name''
 +
 
 +
Instale um pacote local que não seja de um repositório remoto (ex., o pacote é do [[Arch User Repository (Português)]]:
 +
 
 +
# pacman -U ''/path/to/package/package_name-version.pkg.tar.xz''
 +
 
 +
Para manter uma cópia do pacote local no cache do pacman, use:
 +
 
 +
# pacman -U ''file:///path/to/package/package_name-version.pkg.tar.xz''
 +
 
 +
Instalar um pacote 'remoto' (não de um repositório indicado nos arquivos de configuração do pacman):
 +
 
 +
# pacman -U ''<nowiki>http://www.example.com/repo/example.pkg.tar.xz</nowiki>''
 +
 
 +
Para inibir as ações {{ic|-S}}, {{ic|-U}} e {{ic|-R}}, {{ic|-p}} pode ser usado.
 +
 
 +
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 que foram literalmente instalados com os comandos ''pacman'' {{ic|-S}} ou {{ic|-U}};
 +
* '''Dependências''': Os pacotes que, apesar de nunca (em geral) terem sido instalados explicitamente através de um comando de instalação do ''pacman'', foram instalados implicitamente porque é [[dependency|exigido]] por outro pacote que foi explicitamente instalado.
 +
 
 +
Ao instalar um pacote, é possível forçar o motivo da instalação da ''dependência'' com:
 +
 
 +
# pacman -S --asdeps ''package_name''
 +
 
 +
Quando reinstalar 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 ''package_name''
 +
 
 +
Use {{ic|--asexplicit}} para a operação oposta.
 +
 
 +
{{Dica |A instalação de dependências opcionais com o {{ic|--asdeps}} o causará de tal forma que, se você remover pacotes órfãos, o pacman também removerá as dependências opcionais.}}
 +
 
 +
=== Atualizações parciais não são suportadas ===
 +
 
 +
Arch é um rolling release, e novas versões de [[Wikipedia:Library (computing)|bibliotecas]] serão colocadas nos repositórios.  Os desenvolvedores e usuários confiáveis reconstruirão todos os pacotes nos repositórios que precisam ser reconstruídos com as bibliotecas. Se o sistema tem pacotes instalados localmente (tal como pacotes [[Arch User Repository (Português)]], os usuários deverão recontruí-los quando suas dependências receberem uma colisão [[Wikipedia:soname|soname]].
 +
 
 +
Isso significa que as atualizações parciais são '''não suportadas'''. Não use {{ic|pacman -Sy package}} ou equivalente como {{ic|pacman -Sy}} e depois {{ic|pacman -S package}}. Sempre atualize antes de instalar um pacote -- especialmente se o pacman atualizou as sincronização de repositórios. Tenha muito cuidado ao usar {{ic|IgnorePkg}} e {{ic|IgnoreGroup}}, pelo mesmo motivo.
 +
 
 +
Se um cenário de atualização parcial foi criado e os binários estão quebrados porque não conseguem encontrar as bibliotecas que estão ligadas, '''não "conserte" o problema simplesmente pelo symlinking'''. Bibliotecas recebem colisões [[Wikipedia:soname|soname]] quando elas '''não são compatíveis'''. Um simples {{ic|pacman -Syu}} para um espelho devidamente sincronizado resolverá o problema, desde que pacman não esteja quebrado.
 +
 
 +
== Configuração ==
 +
 
 +
Os ajustes 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 [https://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf].
 +
 
 +
=== Opções gerais ===
 +
 
 +
Opções gerais estão na seção {{ic|[options]}}. Leia a página de manual ou olhe no padrão {{ic|pacman.conf}} para obter informações sobre o que pode ser feito aqui.
 +
 
 +
==== Pular pacotes para não serem atualizados ====
 +
 
 +
Para pular a atualização de um pacote específico, faça:
 +
 
 +
IgnorePkg=linux
 +
 
 +
Para vários pacotes use uma lista separada por espaço, ou use adicionais linhas {{ic|IgnorePkg}}.
 +
 
 +
==== Pular um grupos de pacotes para não serem atualizados ====
 +
 
 +
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 [[systemd]] use:
 +
 
 +
NoExtract=usr/lib/systemd/system/*
 +
 
 +
=== Repositórios ===
 +
 
 +
A seção define quais [[Official repositories|repositórios]] usar, como referido no {{ic|/etc/pacman.conf}}. Podem ser mencionados aqui diretamente ou incluídos de outro arquivo (como {{ic|/etc/pacman.d/mirrorlist}}), tornando-se assim necessário manter apenas uma lista. Veja [[Mirrors|aqui]] para configuração de espelho.
 +
 
 +
{{hc|/etc/pacman.conf|2=
 +
#[testing]
 +
#SigLevel = PackageRequired
 +
#Include = /etc/pacman.d/mirrorlist
  
<pre>
 
 
[core]
 
[core]
# Adicionar aqui os seus servidores preferidos, serão utilizados primeiro
+
SigLevel = PackageRequired
Include = /etc/pacman.d/core
+
Include = /etc/pacman.d/mirrorlist
</pre>
+
 
 +
[extra]
 +
SigLevel = PackageRequired
 +
Include = /etc/pacman.d/mirrorlist
 +
 
 +
#[community-testing]
 +
#SigLevel = PackageRequired
 +
#Include = /etc/pacman.d/mirrorlist
 +
 
 +
[community]
 +
SigLevel = PackageRequired
 +
Include = /etc/pacman.d/mirrorlist
 +
 
 +
# If you want to run 32 bit applications on your x86_64 system,
 +
# enable the multilib repositories as required here.
 +
 
 +
#[multilib-testing]
 +
#SigLevel = PackageRequired
 +
#Include = /etc/pacman.d/mirrorlist
 +
 
 +
#[multilib]
 +
#SigLevel = PackageRequired
 +
#Include = /etc/pacman.d/mirrorlist
 +
 
 +
# An example of a custom package repository.  See the pacman manpage for
 +
# tips on creating your own repositories.
 +
#[custom]
 +
#SigLevel = Optional TrustAll
 +
#Server = file:///home/custompkgs}}
 +
 
 +
Cuidados devem ser tomados ao usar o repositório [testing]. Ele está em desenvolvimento ativo e a atualização pode fazer que alguns pacotes parem de funcionar. As pessoas que usam o repositório [testing] são encorajadas a se increver em [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public arch-dev-public mailing list] para obter informações atualizadas.}}
 +
 
 +
=== Segurança de pacotes ===
 +
 
 +
Pacman suporta 4 assinaturas de pacotes, que adiciona um nível extra de segurança para os pacotes. A configuração padrão, {{ic|1=SigLevel = Required DatabaseOptional}}, habilita a verificação de assinaturas para todos os pacotes em um nível global: este pode ser substituido por linhas por repositório {{ic|SigLevel}}, como mostrado acima.  Para mais detalhes sobre pacote de assinatura e verificação de assinatura, dê uma olhada em [[pacman-key]].
 +
 
 +
 
 +
== Solução de problemas ==
 +
 
 +
=== Uma atualização para o pacote XYZ quebrou meu sistema! ===
 +
 
 +
Arch Linux é uma distribuição de ponta rolling-release. Atualizações de pacotes disponíveis assim que são considerados estáveis ​​o suficiente para uso geral. No entanto, as atualizações, por vezes, exigem a intervenção do usuário: arquivos de configuração podem precisar ser atualizados, dependências opcionais podem alterar, etc.
 +
 
 +
A dica mais importante para se lembrar é não "às cegas" atualizar o sistema Arch. Sempre leia a lista de pacotes a serem atualizados. Note se os pacotes "críticos" vão ser atualizados ({{Pkg|linux}}, {{Pkg|xorg-server}}, e assim por diante). Se assim for, é geralmente uma boa idéia verificar se há alguma notícia no  http://www.archlinux-br.org/ e verifique as mensagens mais recentes no fórum para ver se as pessoas estão enfrentando problemas com o resultado de uma atualização.
 +
 
 +
Se uma atualização do pacote é esperada/conhecida por causar de problemas, empacotadores garantirão que pacman exiba uma mensagem apropriada quando o pacote é atualizado. Se enfrentar problemas após uma atualização, verifique a saída do pacman, veja o log ({{ic|/var/log/pacman.log}}).
 +
 
 +
Neste ponto, '''só depois de garantir que não há nenhuma informação disponível através de pacman, não há nenhuma notícia relativa em http://www.archlinux-br.org/, e não há mensagem no fórum sobre a atualização''', considere a busca de ajuda no fórum, através [[IRC channel|IRC]], ou [[Downgrading packages|downgrade do pacote problemático]].
 +
 
 +
=== Eu sei que uma atualização para o pacote ABC foi lançada, mas pacman diz que o meu sistema está atualizado! ===
 +
 
 +
Espelhos do Pacman não são sincronizados imediatamente. Pode demorar mais de 24 horas antes que uma atualização esteja disponível para você. As únicas opções é ser paciente ou usar outro espelho. [https://www.archlinux.org/mirrors/status/ MirrorStatus] pode ajudar a identificar um espelho atualizado.
 +
 
 +
=== Eu recebo um erro durante a atualização: "o arquivo já existe no sistema de arquivos"! ===
 +
 
 +
ASIDE: ''Tirado de https://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.''
 +
 
 +
error: could not prepare transaction
 +
error: failed to commit transaction (conflicting files)
 +
package: /path/to/file exists in filesystem
 +
Errors occurred, no packages were upgraded.
 +
 
 +
Por que isso está acontecendo: pacman detectou um conflito de arquivo, e pelo projeto, não vai substituir os arquivos para você. Esta é uma característica do projeto, e não um defeito.
 +
 
 +
O problema é usualmente simples de se resolver. Uma maneira segura é primeiro verificar se outro pacote possui o arquivo ({{ic|pacman -Qo /path/to/file}}). Se o arquivo é de propriedade de outro pacote, [[Reporting bug guidelines|enviar relatório de bug]]. Se o arquivo não é propriedade de outro pacote, renomeie o 'existente no sistema de arquivo' e re-execute o comando atualizar. Se tudo correr bem, o arquivo pode então ser removido.
 +
 
 +
Se você tinha instalado um programa manualmente, sem usar pacman ou interface, você tem que removê-lo e todos os seus arquivos e reinstalar corretamente usando pacman.
 +
 
 +
Cada pacote instalado fornece arquivo {{ic|/var/lib/pacman/local/$package-$version/files}} que contém metadata sobre este pacote. Se este arquivo for corrompido - é vazio ou ausente - que resulta no erro "o arquivo existe no sistema de arquivos" durante a atualização do pacote. Esse erro geralmente só diz respeito a um único pacote e, em vez de renomear manualmente e depois remover todos os arquivos que pertencem ao pacote em questão, você pode executar {{ic|pacman -S --force $package}} para forçar o pacman substituir estes arquivos
 +
 
 +
'''Não''' execute {{ic|pacman -Syu --force}}.
 +
 
 +
=== Eu recebo um erro ao instalar um pacote: "não encontrou em sincronia com base de dados" ===
 +
 
 +
Primeiramente, verifique se o pacote realmente existe (e fique atento para os erros de digitação!). Se o determinado pacote existe sua lista de pacotes pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente executar {{ic | pacman-Syy.}} para forçar uma atualização de todas as listas de pacotes
 +
 
 +
=== Eu recebo um erro ao instalar um pacote: "alvo não foi encontrado" ===
 +
 
 +
Primeiramente, verifique se o pacote realmente existe (e fique atento para os erros de digitação!). Se o determinado pacote existe sua lista de pacotes pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente executar {{ic | pacman-Syy}} para forçar uma atualização de todas as listas de pacotes. <br>Pode ser também que o repositório que contém o pacote não está ativado em seu sistema, por exemplo, o pacote poderia estar no repositório ''multilib'', mas ''multilib'' não está habilitado em seu ''pacman.conf''.
 +
 
 +
=== Pacman está atualizando várias vezes o mesmo pacote! ===
 +
 
 +
É devido a entradas duplicadas em {{ic|/var/lib/pacman/local/}}, tal como duas instâncias {{ic|linux}}. {{ic|pacman -Qi}} emite a versão correta, mas {{ic|pacman -Qu}} reconhece a versão antiga e, portanto, tentará atualizar.
 +
 
 +
Solução: eliminar a entrada em {{ic|/var/lib/pacman/local/}}.
 +
 
 +
{{Nota |A versão 3.4 do pacman deveria exibir um erro de entradas duplicadas, que deveria deixar esta nota obsoleta.}}
 +
 
 +
=== Pacman falha durante uma atualização! ===
 +
 
 +
No caso de colisão do pacman com um erro de "escrita de base de dados" enquanto remove um pacote, e falha ao reinstalar ou atualizar pacotes:
 +
 
 +
# Inicialize usando a mídia de instalação do Arch
 +
# Monte seu sistema de arquivos root.
 +
# Atualize a base de dados do pacman via {{ic|pacman -Syy}}.
 +
# Reinstale o pacote quebrado via {{ic|pacman -r /path/to/root -S package}}.
 +
 
 +
=== Eu instalei programa usando "make install"; esses arquivos não pertencem a nenhum pacote! ===
 +
 
 +
Se receber um erro "arquivos conflitantes", note que o pacman substituirá manualmente o programa instalado se adicionar com o {{ic|--force}}, por exemplo,({{ic|pacman -S --force}}). Veja [[Pacman tips#Identify files not owned by any package]] para um script que procura o arquivo de sistema por arquivos ''rejeitados''.
 +
{{Atenção |Tome cuidado ao usar a opção {{ic|--force}}, pois pode causar problemas graves se usada indevidamente. Recomenda-se usar esta opção apenas quando for requisitada em Arch notícias.}}
 +
 
 +
=== Preciso de um pacote com um arquivo específico. Como faço para saber o que ele dispõe? ===
 +
 
 +
Instale [[pkgfile]] que usa um banco de dados separado com todos os arquivos e seus pacotes associados.
 +
 
 +
=== Pacman está completamente quebrado! Como faço para reinstalá-lo? ===
 +
 
 +
No caso de pacman está quebrado sem possibilidade de reparo, baixe manualmente os pacotes necessários ({{Pkg|openssl}}, {{Pkg|libarchive}}, e {{Pkg|pacman}} e extraia eles no root. O binário pacman será restaurado juntamente com seu arquivo de configuração padrão. Depois disso, reinstale esses pacotes com pacman para manter a integridade do banco de dados do pacote. Informações adicionais e um exemplo de script (desatualizado) que automatiza o processo está disponível nesta [https://bbs.archlinux.org/viewtopic.php?id=95007] mensagem.
 +
 
 +
=== Depois de atualizar meu sistema, eu recebo um erro "não é possível encontrar o dispositivo root" depois de reiniciar e o meu sistema não mais inicializará. ===
 +
 
 +
Muito provavelmente seus initramfs quebrou durante uma atualização do kernel (uso indevido da opção do pacman {{ic|--force}} pode ser uma causa). Você tem duas opções:
 +
 
 +
'''1.''' Tente a entrada ''Fallback''.
 +
 
 +
: {{Dica |No caso de você ter removido esta entrada por alguma razão, 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 amarzenar no Kernel {{Pkg|linux}}) através do console ou de um terminal para reconstruir a imagem initramfs:
 +
 
 +
: {{bc|# mkinitcpio -p linux}}
 +
 
 +
'''2.''' Se não funcionar, de um lançamento 2012 Arch (CD/DVD ou USB), execute:
 +
 
 +
: {{Nota |Se você não tem uma versão de 2012 ou se tem apenas alguma outra distribuição Linux "live" que possa aplicar [[chroot]] usando o jeito antigo. Obviamente, não será mais simples que digitando o script {{ic|arch-chroot}}.}}
 +
 
 +
: {{bc|<nowiki>
 +
# mount /dev/sdxY /mnt        #Sua partição root.
 +
# mount /dev/sdxZ /mnt/boot    #Se usa uma partição /boot separada.
 +
# arch-chroot /mnt
 +
# pacman -Syu mkinitcpio systemd linux</nowiki>}}
 +
 
 +
: Reinstalando o Kernel (o pacote {{Pkg|linux}}) irá gerar automaticamente a imagem com {{ic|mkinitcpio -p linux}}. Não precisa fazer separamente.
 +
 
 +
: Depois, recomenda-se que você execute {{ic|exit}}, {{ic|umount /mnt/{boot,} }} e {{ic|reboot}}.
 +
 
 +
: {{Nota |Se você não pode entrar no ambiente arch-chroot ou chroot, mas precisa reintalar os pacotes você pode usar o comando {{ic|pacman -r /mnt -Syu foo bar}} para utilizar pacman em sua partição root.}}
 +
 
 +
=== Assinatura de "Usuário <email@gmail.com>" e de confiança desconhecida, falha na instalação ===
 +
 
 +
Siga [[pacman-key#Resetting all the keys]]. Ou pode tentar atualizar manualmente {{Pkg|archlinux-keyring}} primeiro o pacote, ex. {{ic|pacman -S archlinux-keyring}}.
 +
 
 +
=== Recebo "PackageName: assinatura do "User <email@archlinux.org>" é inválida" ===
 +
 
 +
error: PackageName: assinatura do "User <email@archlinux.org>" é inválida
 +
error: falha ao confirmar a transação (pacote inválido ou corrompido (PGP signature))
 +
Erros ocorreram, nenhum pacote foi atualizado.
 +
 
 +
Isso acontece quando o relógio do sistema está errado. Ajuste a [[time|hora]] e execute: {{bc|# hwclock -w}} antes de tentar instalar/atualizar um pacote novamente.}}
 +
 
 +
=== Recebo um erro "falha ao confirmar a transação (pacote inválido ou corrompido)" ===
 +
 
 +
Procure por arquivos {{ic|*.part}} (pacotes baixados parcialmente) em {{ic|/var/cache/pacman/pkg}} e remove eles (muitas vezes causado pelo uso da opção {{ic|XferCommand}} em {{ic|pacman.conf}}).
 +
 
 +
=== Recebo erro toda vez que uso pacman dizendo 'aviso: locale atual é inválida; usando padrão locale "C"'. O que eu faço? ===
 +
 
 +
Como a própria mensagem de erro diz, sua locale está configurada incorretamente. Consulte [[Locale]].
 +
 
 +
=== Como posso ter Pacman para minhas 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 Pacman com [[sudo]], você precisa configurar o sudo para [[sudo#Environment variables|passar essas variáveis ​​de ambiente para o Pacman]].
  
'''nota''' Algum cuidado tem que ser tomando quando utilizar os repositório '''testing'''
+
=== Como faço para reinstalar todos os pacotes, mantendo informações sobre se algo foi explicitamente instalado ou como uma dependência? ===
  
===Erros===
+
Para reinstalar todos os pacotes nativos: {{ic|pacman -S $(pacman -Qnq)}} (a opção {{ic|-S}} preserva a razão de instalação por padrão). <br> Então você terá que reinstalar todos os pacotes externos, que podem ser listados com {{ic|pacman -Qmq}}.
  
Se obteve o seguinte erro
+
== Veja também ==
'''not found in sync db'''
 
é porque o pacote não foi encontrado visto o repositório não ter sido definido correctamente.
 
  
==Links Relacionados==
+
* [[Common Applications/Utilities#Package management]]
* [[Improve Pacman Performance]]
 
* [[Colored Pacman output]]
 
* [[Downgrade packages]]
 
* [[Redownloading all installed packages]]
 
* [[Arch User Repository]]
 
* [[Local repository HOW-TO]]
 
* [[Custom local repository with ABS and gensync]]
 
* [[Howto Upgrade via Home Network]] (Network Shared Pacman Cache)
 
* [[rucksack]]
 
* [[Pacman GUI Frontends]]
 
* [[Pacman_Aliases|Pacman Aliases (for bash)]]
 

Latest revision as of 19:36, 7 August 2017

Tango-preferences-desktop-locale-modified.pngA tradução deste artigo ou seção não reflete o texto original.Tango-preferences-desktop-locale-modified.png

Motivo: Desatualizado, faltando aqui informações contidas no original (Discuta na Talk:Pacman (Português)#)

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 possivel gerenciar pacotes, sejam eles dos oficiais repositórios Arch ou das próprias compilações do usuário.

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.

Pacman é escrito na linguagem de programação C e usa o formato de pacote .pkg.tar.xz.

Dica: O oficial pacote pacman também contém outras ferramentas úteis, tais como o makepkg, pactree, vercmp e mais: execute pacman -Ql 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.
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, execute o comando pacman -Syu nome_pacote em vez de pacman -Sy nome_pacote, pois isso pode levar a problemas de dependências.

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 ...

À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 grupo de pacotes que compartilham padrões em sua nomenclatura, mas sem instalar o grupo inteiro, por exemplo, se for instalar o plasma, mas apenas alguns pacotes como o plasma-desktop e o plasma-mediacenter, pode se utilizar o comando:

# pacman -S plasma-{desktop,mediacenter}

O comando acima também pode ser usado em subniveis como:

# 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

este comando 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

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

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

irá 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.
Dica: Ao instalar os pacotes, não atualizar a lista de pacotes sem atualizar o sistema (ex. pacman -Sy package_name), isso pode ocasinar erros de dependêcias. Veja #Atualizações parciais não são suportadas e https://bbs.archlinux.org/viewtopic.php?id=89328.

Removendo pacotes

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

# pacman -R package_name

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

# pacman -Rs package_name

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 package_name

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

# pacman -Rdd package_name

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 package_name
Nota: Pacman não removerá as configurações que o próprio aplicativo cria (por exemplo, "dotfiles" na pasta home).

Atualizando pacotes

Atençã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
Dica: Em vez de logo que as atualizações estiverem disponíveis, os usuários devem reconhecer que, devido à natureza Arch's rolling release, uma atualização pode ter consequências imprevisíveis. Isso significa que não é prudente atualizar se, por exemplo, tem alguma tarefa importante para fazer. Preferencialmente, atualize durante o tempo livre e esteja preparado para lidar com quaisquer problemas que possam surgir.

O Pacman é uma ferramenta de gerenciamento de pacotes poderosa, ao atualizar o sistema, os usuários devem estar atentos e ter a responsabilidade pela manutenção do seu próprio sistema. Ao realizar uma atualização do sistema, é essencial que os usuários leiam todas as saídas de informações do pacman e usem o bom senso. Se um arquivo de configuração que foi modificado pelo usuário precisar ser atualizado para uma nova versão de um pacote, um arquivo .pacnew será criado para evitar a substituição de configurações alteradas pelo usuário, então, o Pacman pedirá ao usuário para juntá-las. Esses arquivos requerem intervenção manual do usuário e é uma boa prática para lidar com eles logo após cada atualização ou remoção do pacote.

Dica: Lembre-se que a saída do pacman é registrada no /var/log/pacman.log.

Antes de atualizar, é aconselhável visitar a página Arch Linux Brasil para verificar as últimas notícias (alternativamente assinar o [1], arco-announce mailing list, ou seguir @archlinux no Twitter), quando atualizações exigem a intervenção do usuário (mais do que isso pode ser tratada simplesmente seguindo as instruções dadas pelo pacman), uma mensagem de notícias no site será criada.

Se alguém encontrar problemas que não podem ser resolvidos por estas instruções, certifique-se de pesquisar no fórum. É provável que os outros já tenham encontrado o mesmo problema e publicaram as instruções para resolvê-lo.

Consultando base de dados do pacote

Pacman consulta a base de dados do pacote local com a flag -Q, veja:

$ pacman -Q --help

e consulte a base de dados de sincronização com a flag -S, veja:

$ pacman -S --help

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

$ pacman -Ss string1 string2 ...


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 package_name

Para os pacotes instalados localmente:

$ pacman -Qi package_name

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

$ pacman -Qii package_name

Para obter uma lista dos arquivos instalados por um pacote:

$ pacman -Ql package_name

Para pacotes não instalados, use pkgfile.

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

$ pacman -Fl package_name

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

$ pacman -Qk package_name

Usando duas flags k, 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 /path/to/file_name

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

$ pacman -Fo /path/to/file_name

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 package_name

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

$ whoneeds package_name

Ou a flag inversa para pactree:

$ pactree -r package_name

veja pacman tips 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.

Limpeza do cache do pacote

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 Archive (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:
Template error: are you trying to use the = sign? Visit Help:Template#Escape template-breaking characters for workarounds.

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 package_name

Instale um pacote local que não seja de um repositório remoto (ex., o pacote é do Arch User Repository (Português):

# pacman -U /path/to/package/package_name-version.pkg.tar.xz

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

# pacman -U file:///path/to/package/package_name-version.pkg.tar.xz

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

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

Para inibir as ações -S, -U e -R, -p pode ser usado.

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 que foram literalmente instalados com os comandos pacman -S ou -U;
  • Dependências: Os pacotes que, apesar de nunca (em geral) terem sido instalados explicitamente através de um comando de instalação do pacman, foram instalados implicitamente porque é exigido por outro pacote que foi explicitamente instalado.

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

# pacman -S --asdeps package_name

Quando 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 package_name

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

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

Atualizações parciais não são suportadas

Arch é um rolling release, e novas versões de bibliotecas serão colocadas nos repositórios. Os desenvolvedores e usuários confiáveis reconstruirão todos os pacotes nos repositórios que precisam ser reconstruídos com as bibliotecas. Se o sistema tem pacotes instalados localmente (tal como pacotes Arch User Repository (Português), os usuários deverão recontruí-los quando suas dependências receberem uma colisão soname.

Isso significa que as atualizações parciais são não suportadas. Não use pacman -Sy package ou equivalente como pacman -Sy e depois pacman -S package. Sempre atualize antes de instalar um pacote -- especialmente se o pacman atualizou as sincronização de repositórios. Tenha muito cuidado ao usar IgnorePkg e IgnoreGroup, pelo mesmo motivo.

Se um cenário de atualização parcial foi criado e os binários estão quebrados porque não conseguem encontrar as bibliotecas que estão ligadas, não "conserte" o problema simplesmente pelo symlinking. Bibliotecas recebem colisões soname quando elas não são compatíveis. Um simples pacman -Syu para um espelho devidamente sincronizado resolverá o problema, desde que pacman não esteja quebrado.

Configuração

Os ajustes 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 man pacman.conf.

Opções gerais

Opções gerais estão na seção [options]. Leia a página de manual ou olhe no padrão pacman.conf para obter informações sobre o que pode ser feito aqui.

Pular pacotes para não serem atualizados

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

IgnorePkg=linux

Para vários pacotes use uma lista separada por espaço, ou use adicionais linhas IgnorePkg.

Pular um grupos de pacotes para não serem atualizados

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 systemd use:

NoExtract=usr/lib/systemd/system/*

Repositórios

A seção define quais repositórios usar, como referido no /etc/pacman.conf. Podem ser mencionados aqui diretamente ou incluídos de outro arquivo (como /etc/pacman.d/mirrorlist), tornando-se assim necessário manter apenas uma lista. Veja aqui para configuração de espelho.

/etc/pacman.conf
#[testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

[extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

#[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

#[multilib]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs

Cuidados devem ser tomados ao usar o repositório [testing]. Ele está em desenvolvimento ativo e a atualização pode fazer que alguns pacotes parem de funcionar. As pessoas que usam o repositório [testing] são encorajadas a se increver em arch-dev-public mailing list para obter informações atualizadas.}}

Segurança de pacotes

Pacman suporta 4 assinaturas de pacotes, que adiciona um nível extra de segurança para os pacotes. A configuração padrão, SigLevel = Required DatabaseOptional, habilita a verificação de assinaturas para todos os pacotes em um nível global: este pode ser substituido por linhas por repositório SigLevel, como mostrado acima. Para mais detalhes sobre pacote de assinatura e verificação de assinatura, dê uma olhada em pacman-key.


Solução de problemas

Uma atualização para o pacote XYZ quebrou meu sistema!

Arch Linux é uma distribuição de ponta rolling-release. Atualizações de pacotes disponíveis assim que são considerados estáveis ​​o suficiente para uso geral. No entanto, as atualizações, por vezes, exigem a intervenção do usuário: arquivos de configuração podem precisar ser atualizados, dependências opcionais podem alterar, etc.

A dica mais importante para se lembrar é não "às cegas" atualizar o sistema Arch. Sempre leia a lista de pacotes a serem atualizados. Note se os pacotes "críticos" vão ser atualizados (linux, xorg-server, e assim por diante). Se assim for, é geralmente uma boa idéia verificar se há alguma notícia no http://www.archlinux-br.org/ e verifique as mensagens mais recentes no fórum para ver se as pessoas estão enfrentando problemas com o resultado de uma atualização.

Se uma atualização do pacote é esperada/conhecida por causar de problemas, empacotadores garantirão que pacman exiba uma mensagem apropriada quando o pacote é atualizado. Se enfrentar problemas após uma atualização, verifique a saída do pacman, veja o log (/var/log/pacman.log).

Neste ponto, só depois de garantir que não há nenhuma informação disponível através de pacman, não há nenhuma notícia relativa em http://www.archlinux-br.org/, e não há mensagem no fórum sobre a atualização, considere a busca de ajuda no fórum, através IRC, ou downgrade do pacote problemático.

Eu sei que uma atualização para o pacote ABC foi lançada, mas pacman diz que o meu sistema está atualizado!

Espelhos do Pacman não são sincronizados imediatamente. Pode demorar mais de 24 horas antes que uma atualização esteja disponível para você. As únicas opções é ser paciente ou usar outro espelho. MirrorStatus pode ajudar a identificar um espelho atualizado.

Eu recebo um erro durante a atualização: "o arquivo já existe no sistema de arquivos"!

ASIDE: Tirado de https://bbs.archlinux.org/viewtopic.php?id=56373 by Misfit138.

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /path/to/file exists in filesystem
Errors occurred, no packages were upgraded.

Por que isso está acontecendo: pacman detectou um conflito de arquivo, e pelo projeto, não vai substituir os arquivos para você. Esta é uma característica do projeto, e não um defeito.

O problema é usualmente simples de se resolver. Uma maneira segura é primeiro verificar se outro pacote possui o arquivo (pacman -Qo /path/to/file). Se o arquivo é de propriedade de outro pacote, enviar relatório de bug. Se o arquivo não é propriedade de outro pacote, renomeie o 'existente no sistema de arquivo' e re-execute o comando atualizar. Se tudo correr bem, o arquivo pode então ser removido.

Se você tinha instalado um programa manualmente, sem usar pacman ou interface, você tem que removê-lo e todos os seus arquivos e reinstalar corretamente usando pacman.

Cada pacote instalado fornece arquivo /var/lib/pacman/local/$package-$version/files que contém metadata sobre este pacote. Se este arquivo for corrompido - é vazio ou ausente - que resulta no erro "o arquivo existe no sistema de arquivos" durante a atualização do pacote. Esse erro geralmente só diz respeito a um único pacote e, em vez de renomear manualmente e depois remover todos os arquivos que pertencem ao pacote em questão, você pode executar pacman -S --force $package para forçar o pacman substituir estes arquivos

Não execute pacman -Syu --force.

Eu recebo um erro ao instalar um pacote: "não encontrou em sincronia com base de dados"

Primeiramente, verifique se o pacote realmente existe (e fique atento para os erros de digitação!). Se o determinado pacote existe sua lista de pacotes pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente executar pacman-Syy. para forçar uma atualização de todas as listas de pacotes

Eu recebo um erro ao instalar um pacote: "alvo não foi encontrado"

Primeiramente, verifique se o pacote realmente existe (e fique atento para os erros de digitação!). Se o determinado pacote existe sua lista de pacotes pode estar desatualizada ou seus repositórios podem estar configurados incorretamente. Tente executar pacman-Syy para forçar uma atualização de todas as listas de pacotes.
Pode ser também que o repositório que contém o pacote não está ativado em seu sistema, por exemplo, o pacote poderia estar no repositório multilib, mas multilib não está habilitado em seu pacman.conf.

Pacman está atualizando várias vezes o mesmo pacote!

É devido a entradas duplicadas em /var/lib/pacman/local/, tal como duas instâncias linux. pacman -Qi emite a versão correta, mas pacman -Qu reconhece a versão antiga e, portanto, tentará atualizar.

Solução: eliminar a entrada em /var/lib/pacman/local/.

Nota: A versão 3.4 do pacman deveria exibir um erro de entradas duplicadas, que deveria deixar esta nota obsoleta.

Pacman falha durante uma atualização!

No caso de colisão do pacman com um erro de "escrita de base de dados" enquanto remove um pacote, e falha ao reinstalar ou atualizar pacotes:

  1. Inicialize usando a mídia de instalação do Arch
  2. Monte seu sistema de arquivos root.
  3. Atualize a base de dados do pacman via pacman -Syy.
  4. Reinstale o pacote quebrado via pacman -r /path/to/root -S package.

Eu instalei programa usando "make install"; esses arquivos não pertencem a nenhum pacote!

Se receber um erro "arquivos conflitantes", note que o pacman substituirá manualmente o programa instalado se adicionar com o --force, por exemplo,(pacman -S --force). Veja Pacman tips#Identify files not owned by any package para um script que procura o arquivo de sistema por arquivos rejeitados.

Atenção: Tome cuidado ao usar a opção --force, pois pode causar problemas graves se usada indevidamente. Recomenda-se usar esta opção apenas quando for requisitada em Arch notícias.

Preciso de um pacote com um arquivo específico. Como faço para saber o que ele dispõe?

Instale pkgfile que usa um banco de dados separado com todos os arquivos e seus pacotes associados.

Pacman está completamente quebrado! Como faço para reinstalá-lo?

No caso de pacman está quebrado sem possibilidade de reparo, baixe manualmente os pacotes necessários (openssl, libarchive, e pacman e extraia eles no root. O binário pacman será restaurado juntamente com seu arquivo de configuração padrão. Depois disso, reinstale esses pacotes com pacman para manter a integridade do banco de dados do pacote. Informações adicionais e um exemplo de script (desatualizado) que automatiza o processo está disponível nesta [2] mensagem.

Depois de atualizar meu sistema, eu recebo um erro "não é possível encontrar o dispositivo root" depois de reiniciar e o meu sistema não mais inicializará.

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

1. Tente a entrada Fallback.

Dica: No caso de você ter removido esta entrada por alguma razão, 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 amarzenar no Kernel linux) através do console ou de um terminal para reconstruir a imagem initramfs:
# mkinitcpio -p linux

2. Se não funcionar, de um lançamento 2012 Arch (CD/DVD ou USB), execute:

Nota: Se você não tem uma versão de 2012 ou se tem apenas alguma outra distribuição Linux "live" que possa aplicar chroot usando o jeito antigo. Obviamente, não será mais simples que digitando o script arch-chroot.
# mount /dev/sdxY /mnt         #Sua partição root.
# mount /dev/sdxZ /mnt/boot    #Se usa uma partição /boot separada.
# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
Reinstalando o Kernel (o pacote linux) irá gerar automaticamente a imagem com mkinitcpio -p linux. Não precisa fazer separamente.
Depois, recomenda-se que você execute exit, umount /mnt/{boot,} e reboot.
Nota: Se você não pode entrar no ambiente arch-chroot ou chroot, mas precisa reintalar os pacotes você pode usar o comando pacman -r /mnt -Syu foo bar para utilizar pacman em sua partição root.

Assinatura de "Usuário <email@gmail.com>" e de confiança desconhecida, falha na instalação

Siga pacman-key#Resetting all the keys. Ou pode tentar atualizar manualmente archlinux-keyring primeiro o pacote, ex. pacman -S archlinux-keyring.

Recebo "PackageName: assinatura do "User <email@archlinux.org>" é inválida"

error: PackageName: assinatura do "User <email@archlinux.org>" é inválida
error: falha ao confirmar a transação (pacote inválido ou corrompido (PGP signature))
Erros ocorreram, nenhum pacote foi atualizado. 
Isso acontece quando o relógio do sistema está errado. Ajuste a hora e execute:
# hwclock -w
antes de tentar instalar/atualizar um pacote novamente.}}

Recebo um erro "falha ao confirmar a transação (pacote inválido ou corrompido)"

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

Recebo erro toda vez que uso pacman dizendo 'aviso: locale atual é inválida; usando padrão locale "C"'. O que eu faço?

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

Como posso ter Pacman para minhas configurações de proxy?

Certifique-se que as variáveis de ambiente relevantes ($http_proxy, $ftp_proxy etc.) estão configuradas. Se você usa 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 -S $(pacman -Qnq) (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.

Veja também