Gerenciamento de pacotes

Fonte: Wikiversidade
  • Marcelo H. P. Ferreira
  • Mateus Furquim

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

Pacotes são termos amplamente conhecidos principalmente por usuários dos sistemas operacionais GNU/Linux. Muitos desses usuários, os usam sem notar que o estão fazendo. Para realizar instalações de software, geralmente os usuários procuram fazer a instalação pelo terminal e digitam comandos que buscam e instalam os softwares desejados.

Ao digitar tais comandos, como: dpkg, apt-get, aptitude, yaourt, pacman, gem, pip, eles estão fazendo uso de software gerenciadores de pacotes, que instalam, desinstalam, atualizam os aplicativos sem que o usuário precise compilar o código fonte manualmente. Dessa forma, os utilizadores tem menos dificuldades ao lidar com os aplicativos no seu sistema operacional e gastam menos tempo resolvendo as dependências.

Pacote[editar | editar código-fonte]

Um pacote de software, em geral compactados, contém todos os arquivos binários, shell scripts, de configuração, de dados, de documentação para a sua correta instalação. Além dos arquivos, ele possui as informações de instalação, configuração, manutenção e remoção do software[1].

Benefícios[editar | editar código-fonte]

  • Facilitam a instalação de aplicativos, programas;
  • Contém todas as dependências necessárias;
  • Fácil desinstalação;
  • Bom para usuários leigos;
  • Agiliza instalação dos softwares.

Malefícios[editar | editar código-fonte]

  • Depende de outros usuários empacotarem;
  • Pode demorar a ser empacotado;
  • Pode ser complexo empacotar;
  • Pacotes que tenham as mesmas dependências, mas com versões diferentes.

Dependências[editar | editar código-fonte]

Para um simples programa ser executado, muitas vezes é necessário apenas os arquivos binários que a própria linguagem fornece. Quando o programa começa a ficar mais complexo, ou quando é um software, é utilizado código fonte de outros programas além do fornecido pela própria biblioteca nativa da linguagem usada[2].

As dependências de um programa ou software, são todos os recursos necessários para sua correta compilação e execução. O próprio pacote define quais são os outros pacotes o qual ele possui dependência, dessa forma, o usuário fará a instalação somente por pacotes.

Debian[editar | editar código-fonte]

Exemplo de resolução de dependências no gerenciador de pacotes debian.

# apt install openstack
Lendo listas de pacotes... Pronto
Construindo árvore de dependências       
Lendo informação de estado... Pronto
The following additional packages will be installed:
  conjure-up distro-info ieee-data jq juju juju-2.0 liblxc1 libonig2 lxc-common lxcfs lxd lxd-client python3-appdirs python3-bson python3-bson-ext python3-cinderclient
Pacotes sugeridos:
  shunit2 juju-core criu lxd-tools python-cliff-doc python-configobj-doc python-debtcollector-doc python-glanceclient-doc python3-pykde4 python-keystoneauth1-doc
Os NOVOS pacotes a seguir serão instalados:
  conjure-up distro-info ieee-data jq juju juju-2.0 liblxc1 libonig2 lxc-common lxcfs lxd lxd-client openstack python3-appdirs python3-bson python3-bson-ext

Para conhecer mais sobre o gerenciador de pacotes debian, acesse o how to[3].

Arch Linux[editar | editar código-fonte]

Exemplo de resolução de dependências no gerenciador de pacotes pacman.

# pacman -S openstack-guest-agents-unix
resolving dependencies...
looking for conflicting packages...

Packages (6) patchelf-0.9-1  python2-crypto-2.6.1-3  python2-simplejson-3.8.2-1  python2-xenstore-0.0.2-4  xenstore-6.2.0-2  openstack-guest-agents-unix-1:1.39.1-1

Total Download Size:    4.92 MiB
Total Installed Size:  21.49 MiB

:: Proceed with installation? [Y/n] y

Repositório de pacotes[editar | editar código-fonte]

Repositórios de pacotes são locais em que os pacotes dos softwares ficam armazenados e disponíveis para serem baixados por um gerênciador de pacotes. Repositórios remotos, em geral, são servidores de arquivos conectados a rede configurado para disponibilizar os pacotes por meio dos protocolos FTP ou HTTP. Há também os repositórios locais, configurados na própria máquina utilizados com o mesmo propósito com os repositórios remotos: prover os pacotes para atualizar, instalar pacotes. Diferentemente dos remotos, este é para fazer atualizações na própria máquina[1].

Debian[editar | editar código-fonte]

Nas distribuições debian, pode ser encontrado um arquivo com a lista de repositórios utilizados pelo gerenciador de pacotes apt.

$ cat /etc/apt/sources.list
> deb http://br.archive.ubuntu.com/ubuntu/ trusty main 
> deb-src http://br.archive.ubuntu.com/ubuntu/ trusty main

Pode-se perceber que a estrutura do pacote no arquivo source.list é organizado, no qual o deb ou deb-src indicam se os pacotes são o código fonte ou binário. Em seguida é o protocolo seguido do nome do domínio onde estão os pacotes. O treceiro argumento é uma referência ao codinome da versão da distribuição utilizada (e.g. Ubuntu trusty). O último argumento trata da licença dos pacotes, main é a distribuição oficial, contrib é livrimente distribuído, non-free é de distribuição restrita[4].

Arch Linux[editar | editar código-fonte]

No caso do Arch Linux, a estrutura de arquivos com lista de repositórios é um pouco diferente. Um dos fatos que o torna diferente é o sistema de atualização dessa distribuição Linux ser rolling release[5][6].

$ cat /etc/pacman.conf 
> [core]
> Include = /etc/pacman.d/mirrorlist

$ cat /etc/pacman.d/mirrorlist
> ## Score: 7.0, Brazil
> Server = http://www.lasca.ic.unicamp.br/pub/archlinux/$repo/os/$arch

As seções [seção] no pacman.conf definem os repositórios a seram utilizados: [core], [extra], [community], [multilib] e [testing]. Um repositório é uma coleção lógica de pacotes que estão fisicamente armazenados em um ou mais servidores. Cada servidor é chamado de um mirror para o repositório. A ordem que os repositórios são colocadas no arquivo importa (os primeiros tem precedência sob os demais). Em seguida, tem-se o local do repositório é representado pelo Server, que no caso acima está dentro do arquivo a ser incluído pelo Include.

Para saber mais sobre configuração do pacman, veja o manual pacman.conf(5).

Gerenciador de pacotes[editar | editar código-fonte]

O gerenciamento dos pacotes são feitos por softwares capazes de ler as informações que contém em um pacote, executar os procedimentos descritos nele para a instalação, realizar a remoção e atualização do pacote[7]. Ou seja, os pacotes são montados para facilitar o uso dos usuários em momentos de instalação, atualização e remoção de programas e softwares e os gerênciadores de pacotes que implementam e disponibilizam essa facilidade de uso.

Softwares gerênciadores de pacotes[editar | editar código-fonte]

A impressão que se tem é que os gerenciadores de pacotes são somente para sistemas operacionais, porém além dos que são feitos especialmente para distribuições linux, há também a iniciativa de produzir um gerenciador de pacote para o Microsoft Windows e para o Apple OS.

Além disso, os gerênciadores de pacotes são utilizados para gerenciar dependências durante o desenvolvimento de um software, no qual a comunidade da linguagem produz códigos fontes que são recorrentemente utilizados durante as implementações e produzem bibliotecas e as distribuem no formato de pacotes e para alguns softwares como é o caso do vim, como exemplo tem-se:

DPKG[editar | editar código-fonte]

Para os sistemas operacionais GNU/linux baseados na distribuição do Debian, tem-se o gerenciador de pacotes chamado dpkg no qual processa os pacotes binários ou com código fonte no formato .deb[7].

O dpkg é o comando usado para manipular os pacotes debian (.deb), entretanto ele é limitado no sentido de que somente faz a leitura das informações do pacotes passado a ele por linha de comando e dos que já estão instalados no Sistema Operacional, ou seja a lista de outros pacotes disponíveis nos repositórios não são visíveis a ele[7]. Dessa forma, é uma desvantagem o fato de que, se durante a instalação de um pacote uma das dependências desse software não estiver disponível na máquina, a instalação dará erro e será impossível completa-la sem a instalação manual da dependência.

Instalando de pacotes[editar | editar código-fonte]

Para instalar um pacote no sistema, utilize a opção -i. Para isso é necessário indicar o caminho do pacote.deb.

No exemplo a seguir, o software não possui uma das dependências do pacote a ser instalado e neste caso a instalação é parada.

$ sudo dpkg -i vim_7.4.1689-3ubuntu1_i386.deb 
> A seleccionar pacote anteriormente não seleccionado vim:i386.
> (Lendo banco de dados ... 373358 ficheiros e directórios actualmente instalados.)
> A preparar para desempacotar vim_7.4.1689-3ubuntu1_i386.deb ...
> A descompactar vim:i386 (2:7.4.1689-3ubuntu1) ...
> dpkg: problemas com dependências impedem a configuração de vim:i386:
>  vim:i386 depende de vim-common (= 2:7.4.1689-3ubuntu1).
>  vim:i386 depende de vim-runtime (= 2:7.4.1689-3ubuntu1); porém:
>   Versão de vim-runtime no sistema é 2:7.4.1689-3ubuntu1.1.
>  vim:i386 depende de libacl1 (>= 2.2.51-8); porém:
>  vim:i386 depende de libgpm2 (>= 1.20.4); porém:

Após a instalação da dependência vim-runtime, o comando foi realizado e voltou a executar.

$ sudo dpkg -i vim-runtime_7.4.1689-3ubuntu1_all.deb 
> (Lendo banco de dados ... 373364 ficheiros e directórios actualmente instalados.)
> A preparar para desempacotar vim-runtime_7.4.1689-3ubuntu1_all.deb ...
> A descompactar vim-runtime (2:7.4.1689-3ubuntu1) sobre (2:7.4.1689-3ubuntu1.1) ...
> Configurando vim-runtime (2:7.4.1689-3ubuntu1) ...
> A processar 'triggers' para man-db (2.7.5-1) ...

Listando pacotes instalados[editar | editar código-fonte]

Para listar todos os pacotes instalados na máquina, utilize a opção -l.

$ dpkg -l
> Desired=Unknown/Install/Remove/Purge/Hold
> | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
> |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
> ||/ Nome            Versão       Arquitectura Descrição
> +++-===============-============-============-===================================
> ii  a11y-profile-ma 0.1.10-0ubun amd64        Accessibility Profile Manager - Uni
> ii  account-plugin- 3.12.11-0ubu amd64        Messaging account plugin for AIM
> ii  account-plugin- 0.12+16.04.2 all          GNOME Control Center account plugin
> ii  account-plugin- 0.12+16.04.2 all          GNOME Control Center account plugin
> ii  account-plugin- 0.12+16.04.2 all          GNOME Control Center account plugin
> ii  account-plugin- 3.12.11-0ubu amd64        Messaging account plugin for Jabber
> ii  account-plugin- 3.12.11-0ubu amd64        Messaging account plugin for Local 
> rc  account-plugin- 0.12+15.04.2 all          GNOME Control Center account plugin
> ...

Informação de pacotes[editar | editar código-fonte]

É possível ver as metainformações de um pacote, tal como o status, a versão, a lista de dependências entre outros.

$ dpkg --status vim
> Package: vim
> Status: install ok unpacked
> Priority: optional
> Section: editors
> Installed-Size: 2528
> Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
> Architecture: i386
> Version: 2:7.4.1689-3ubuntu1
> Provides: editor
> Depends: vim-common (= 2:7.4.1689-3ubuntu1), vim-runtime (= 2:7.4.1689-3ubuntu1), libacl1 (>= 2.2.51-8), libc6 (>= 2.15), libgpm2 (>= 1.20.4), libselinux1 (>= 1.32), libtinfo5 (>= 6)
> Suggests: ctags, vim-doc, vim-scripts
> Description: Vi IMproved - enhanced vi editor
>  Vim is an almost compatible version of the UNIX editor Vi.
>  .
>  Many new features have been added: multi level undo, syntax
>  highlighting, command line history, on-line help, filename
>  completion, block operations, folding, Unicode support, etc.
>  .
>  This package contains a version of vim compiled with a rather
>  standard set of features.  This package does not provide a GUI
>  version of Vim.  See the other vim-* packages if you need more
>  (or less).

Arquivos instalados pelo pacote[editar | editar código-fonte]

Para saber os arquivos instalados pelo pacote, utilize a opção -L. Observe que deve-se colocar apenas o nome do pacote sem a extensão .deb.

# dpkg -L sed
> /.
> /bin
> /bin/sed
> /usr
> /usr/share
[...]
> /usr/share/info
> /usr/share/info/sed.info.gz

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

Para remover o pacote do sistema, utilize a oplção -r. Observe que deve-se colocar apenas o nome do pacote sem a extensão .deb.

$ sudo dpkg -r vim
> (Lendo banco de dados ... 373363 ficheiros e directórios actualmente instalados.)
> A remover vim:i386 (2:7.4.1689-3ubuntu1) ...

APT[editar | editar código-fonte]

Como o dpkg é um software relativamente limitado e não tão fácil de usar para novos usuários que não possuem muito conhecimento de GNU/linux, foi desenvolvido um outro software que fornece uma interface de uso via terminal mais agradável e que conecta-se aos repositórios em busca de dependências não encontradas na máquina. Assim, o apt é um produto que faz uso do gerenciador de pacotes dpkg e provê ainda mais recursos para gerênciar os pacotes.

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

Para fazer a instalação de pacotes, não é necessário ter todas as dependências já instaladas, pois o apt irá buscar nos repositórios as dependências que faltam.

Antes de executar a instalação é importante fazer a sincronização com os repositórios (Exemplo dado no ubuntu 16.04):

$ sudo apt-get update
> Atingido:1 http://security.ubuntu.com/ubuntu xenial-security InRelease
> Atingido:2 http://br.archive.ubuntu.com/ubuntu xenial InRelease
> Atingido:3 http://br.archive.ubuntu.com/ubuntu xenial-updates InRelease
> Atingido:4 http://br.archive.ubuntu.com/ubuntu xenial-backports InRelease
> Trabalhando [0%]
> Lendo listas de pacotes... 98%
> Lendo listas de pacotes... Pronto

Após a atualização da lista de pacotes, é possível executar a instalação do pacote. Neste exemplo será instalado o pacote zenmap. Neste caso, o ambiente linux não possui as dependências dos pacotes: gksu e libgksu2-0, por conta disso o software fará pergunta se deseja realizar a instalação destes, caso contrário poderia ser adicionado essas dependências diretamente no comando de instalação do zenmap como demonstrado abaixo.

Opção 1

$ sudo apt install zenmap
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> The following additional packages will be installed:
>   gksu libgksu2-0
> Os NOVOS pacotes a seguir serão instalados:
>   gksu libgksu2-0 zenmap
> 0 pacotes atualizados, 3 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
> É preciso baixar 536 kB de arquivos.
> Depois desta operação, 3.432 kB adicionais de espaço em disco serão usados.
> Você quer continuar? [S/n] 

Opção 2

$ sudo apt install gksu libgksu2-0 zenmap
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> Os NOVOS pacotes a seguir serão instalados:
>   gksu libgksu2-0 zenmap
> 0 pacotes atualizados, 3 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
> É preciso baixar 536 kB de arquivos.
> Depois desta operação, 3.432 kB adicionais de espaço em disco serão usados.
> Obter:1 http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 libgksu2-0 amd64 2.0.13~pre1-6ubuntu8 [71,8 kB]
> Obter:2 http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 gksu amd64 2.0.2-9ubuntu1 [51,5 kB]
> Obter:3 http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 zenmap all 7.01-2ubuntu2 [412 kB]
> Baixados 536 kB em 2s (231 kB/s)

Informações dos pacotes[editar | editar código-fonte]

Nas informações dos pacotes é possível ver as metainformações do pacote, com o comando apt-get show 'name of package' no qual mostra informações de um pacote instalado. Para mostrar pacotes que não estejam instalados deve-se utilizar o comando apt-cache show 'name of package', caso ele esteja com as metainformações baixadas na máquina e para baixar essas informações é possível fazer a busca por este pacote antes.

$ apt show zenmap
> Package: zenmap
> Version: 7.01-2ubuntu2
> Priority: extra
> Section: universe/net
> Source: nmap
> Origin: Ubuntu
> Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
> Original-Maintainer: Hilko Bengen <bengen@debian.org>
> Bugs: https://bugs.launchpad.net/ubuntu/+filebug
> Installed-Size: 2.556 kB
> Provides: nmapfe
> Depends: python:any (<< 2.8), python:any (>= 2.7.5-5~), nmap, python (>= 2.5) | python-pysqlite2, python-gobject, python-gtk2
> Recommends: gksu
> Conflicts: nmapfe
> Replaces: nmapfe
> Homepage: http://nmap.org/
> Download-Size: 412 kB
> APT-Manual-Installed: yes
> APT-Sources: http://br.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages
> Description: The Network Mapper Front End
>  Zenmap is an Nmap frontend. It is meant to be useful for advanced users
>  and to make Nmap easy to use by beginners. It was originally derived
>  from Umit, an Nmap GUI created as part of the Google Summer of Code.

Infelizmente, esta ferramenta não permite ao usuário fazer uma listagem de todos os pacotes já instalados, para descobrir isso é necessário usar o recurso do gerenciador de pacotes dpkg --list o qual trará as informações do Nome, Versão, Arquitectura e Descrição de cada um dos pacotes.

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

Para fazer a busca de um pacote, usa-se o comando apt-get search 'name', no qual o gerenciador fará buscas na lista de pacotes atualizados e retornará a lista de pacotes que possuem o nome descrito na pesquisa.

$ sudo apt-get search nmap
> Sorting... Pronto
> Full Text Search... Pronto
> libwlocate-dev/xenial 0.0git20130108-0ubuntu1 amd64
>   Library for doing location lookup based on free openwlanmap.org data
> ndiff/xenial,xenial,now 7.01-2ubuntu2 all [installed,automatic]
>   The Network Mapper - result compare utility
> nmap/xenial,now 7.01-2ubuntu2 amd64 [installed,automatic]
>   "The Network Mapper" - (O Mapeador de Rede)
> nmapsi4/xenial 0.3.1-1 amd64
>   graphical interface to nmap, the network scanner
> pbnj/xenial,xenial 2.04-4.1 all
>   a suite of tools to monitor changes on a network
> python-nmap/xenial,xenial 0.5.0-1-1 all
>   Python interface to the Nmap port scanner
> python-scapy/xenial,xenial,now 2.2.0-1 all [installed]
>   Packet generator/sniffer and network scanner/discovery
> python3-nmap/xenial,xenial 0.5.0-1-1 all
>   Python3 interface to the Nmap port scanner
> umit/xenial,xenial 0.9.5-0ubuntu6 all
>   network tool and graphical frontend for nmap
> zenmap/xenial,xenial,now 7.01-2ubuntu2 all [installed]
>   The Network Mapper Front End

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

Uma das maiores vantagens ao se utilizar os gerenciadores de pacotes é o fato de facilitarem a atualização dos softwares e os manterem constantemente atualizados. É fácil pelo fato de ele fazer a atualização dos executaveis sem necessidade de intervenção do usuário, apenas a necessidade de indicar o pacote que deseja ou deixar que atualize todos os possíveis.

$ sudo apt-get upgrade
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> Calculando atualização... Pronto
> 0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.
$ sudo apt-get upgrade vim
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> vim is already the newest version (2:7.4.1689-3ubuntu1.1).
> Calculando atualização... Pronto
> 0 pacotes atualizados, 0 pacotes novos instalados, 0 a serem removidos e 0 não atualizados.

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

Muitas vezes, os pacotes que são instalados pedem sua utilidade para o usuário e passam a ocupar espaço em disco desnecessário. Para resolver este problema, foi feita a implementação das funções remove e autoremove no apt-get.

remove: remove o pacote especificado pelo usuário passado pelo nome.

autoremove: remove os pacotes que foram instalados como dependência e que já não estão mais em uso.

$ sudo apt remove zenmap
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> Os seguintes pacotes foram instalados automaticamente e já não são necessários:
>   gksu libgksu2-0
> Utilize 'sudo apt autoremove' para os remover.
> Os pacotes a seguir serão REMOVIDOS:
>   zenmap
> 0 pacotes atualizados, 0 pacotes novos instalados, 1 a serem removidos e 0 não atualizados.
> Depois desta operação, 2.556 kB de espaço em disco serão liberados.
> Você quer continuar? [S/n] s
> (Lendo banco de dados ... 374337 ficheiros e directórios actualmente instalados.)
> A remover zenmap (7.01-2ubuntu2) ...
$ sudo apt-get autoremove
> Lendo listas de pacotes... Pronto
> Construindo árvore de dependências       
> Lendo informação de estado... Pronto
> Os pacotes a seguir serão REMOVIDOS:
>   liblinear3 lua-lpeg ndiff
> 0 pacotes atualizados, 0 pacotes novos instalados, 3 a serem removidos e 0 não atualizados.
> Depois desta operação, 365 kB de espaço em disco serão liberados.
> Você quer continuar? [S/n] 


Pacman[editar | editar código-fonte]

Objetivo[editar | editar código-fonte]

O objetivo do pacman (package manager) é tornar a gerência de pacotes o mais fácil possível, seja nos repositórios oficiais ou os pacotes do próprio usuário[8].

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

Pacman é um programa que gerencia pacotes de software no Linux, escrito em C, utiliza arquivos compactados simples (.tar.gz) como formato de pacote, e mantém um banco de dados de pacote baseado em texto, para facilitar sua alteração caso seja necessário.

Pacman não tenta "fazer de tudo", pois vai contra o princípio de simplicidade do Arch Linux[9]. Esse gerenciador de pacotes apenas adiciona, remove e atualiza os pacotes do sistema, e permite que o usuário faça perguntas ao banco de dados sobre os pacotes já instalados, como uma lista dos seus arquivos e donos do pacote. Pacman também tenta resolver dependências automaticamente e baixar pacotes de um servidor remoto[10].

História[editar | editar código-fonte]

  • Versão 2.0 - Permite sincronizar pacotes, anteriormente os pacotes deveriam ser adicionados e atualizados.
  • Versão 3.0 - Mudança para duas partes: back-end libalpm (Arch Linux Package Management); e front-end pacman. Melhora em velocidade e resolução de dependência.
  • Versão 4.0 - Funcionalidade de assinatura e verificação de pacotes via GnuPG e GPGME.
  • Versão 5.0 - Suporte para funções pré/pós-transação, e sincronização de lista de arquivos com o banco de dados[10].

Releases[editar | editar código-fonte]

O código fonte de todas as releases está disponível neste link. Para instalar, baixe, descompacte e execute os três comandos mágicos:

$ ./configure
$ make
# make install

Leia ./configure --help para melhor documentação.

Uso[editar | editar código-fonte]

O pacman possui 4 funções base: Database, Query, Remove e Sync.

  • Database: Faz operações na base de dados, permitindo modificar certos atributos de pacotes instalados na base de dados e checar consistência interna.
  • Query: Permite visualizar pacotes instalados, e seus respectivos arquivos e meta-informações (dependências, conflitos, data de instalação, data de construção e tamanho).
  • Remove: Permite remover pacotes, ou grupos de pacotes, do sistema.
  • Sync: Permite sincronizar pacotes (ou grupos de pacotes), instalando-os diretamente de repositórios remotos, incluindo todas as dependências necessárias.
Instalando Pacotes[editar | editar código-fonte]

Para instalar pacotes, ou grupo de pacotes, passe a flag -S (função Sync).

# pacman -S nome_do_pacote1 nome_do_pacote2
# pacman -S nome_do_grupo_de_pacotes

Para instalar utilizando regex, consulte o pacman com a flag -Ssq (Sync search quiet), veja essa thread

# pacman -S $(pacman -Ssq regex_do_pacote)
Removendo Pacotes[editar | editar código-fonte]

Para remover pacotes, ou grupo de pacotes, passe a flag -R (função Remove).

# pacman -R nome_do_pacote1 nome_do_pacote2
# pacman -R nome_do_grupo_de_pacotes

Para remover pacotes e suas dependências que não são necessárias para nenhum outro pacote, utilize a flag -Rs (Remove recursive).

# pacman -Rs nome_do_pacote

Para remover pacotes órfãos (não necessários como dependência para nenhum pacote), chame pacman duas vezes: a primeira com a flag -R (Remove) e a segunda com a flag -Qdtq (Query dependencies unrequired quiet).

# pacman -R $(pacman -Qdtq)
Atualizando Pacotes[editar | editar código-fonte]

Para atualizar todos os pacotes do sistema, utilize a flag -Syu (Sync refresh sysupgrade).

# pacman -Syu
Informações dos Pacotes[editar | editar código-fonte]

Para questionar a base de dados local dos pacotes, utilize a flag -Q (função Query). Para questionar a base de dados remota dos pacotes, utilize a flag -S (função Sync).
Observação: As informações utilizando -Q e -S são diferentes.

# pacman -Q --help
# pacman -S --help

Para procurar pacotes já instalados, utilize a flag -Qs (função Query search). Para procurar pacotes que não estão necessariamente instalados, utilize a flag -Ss (função Sync search).

# pacman -Qs string1 string2
# pacman -Ss string1 string2

Para mostrar uma lista extensiva de informações sobre um pacote já instalado, utilize a flag -Qi (função Query info). Para mostrar uma lista extensiva de informações sobre um pacote não necessariamente instalado, utilize a flag -Si (função Sync info).

# pacman -Qi nome_do_pacote
# pacman -Si nome_do_pacote

Para mais informações sobre querying, acesse a wiki.

Informações da Base de Dados[editar | editar código-fonte]

Para saber a integridade dos arquivos de um determinado pacote, utilize a flag -Dk (função Database check).

# pacman -Dk nome_do_pacote

Para alterar a razão de instalação de um pacote já instalado, utilize a flag -D --asdeps (função Database dependency) ou -D --asexplicit (função Database explicit ).

# pacman -D --asdeps nome_do_pacote
# pacman -D --asexplicit nome_do_pacote

Desenvolvimento[editar | editar código-fonte]

Mailing List[editar | editar código-fonte]

Há um mailing list para o desenvolvimento do pacman hospedado pelo Arch Linux: inscreva-se, ou Veja os arquivos

Código Fonte[editar | editar código-fonte]

O versionamento do pacman é feito utilizando Git. O repositório central é hospedado pelo Arch Linux.

git clone git://projects.archlinux.org/pacman.git pacman
Bugs[editar | editar código-fonte]

Caso encontre bugs (o que é muito provável), por favor mande um email para pacman-dev@archlinux.org com as informações específicas, como a linha de comando, natureza do bug, e o banco de dados dos pacotes, caso ajude.

Também há uma ferramenta de rastreamento de bugs chamado Flyspray. Garanta que o bug está sendo registrado sob o projeto Pacman.

Copyright[editar | editar código-fonte]

pacman é Copyright 2006-2016 Pacman Development Team <pacman-dev@archlinux.org> e Copyright 2002-2006 Judd Vinet <jvinet@zeroflux.org> e é licensiado pela GNU General Public License, versão 2 ou mais recente.

Referências[editar | editar código-fonte]

  1. 1,0 1,1 FERREIRA, Rubem E., Gerenciamento de Pacotes de Software no Linux, 02 de Junho de 2008. disponível em: http://www.martinsfontespaulista.com.br/anexos/produtos/capitulos/222719.pdf
  2. OPENSUSE, Gerenciamento de pacotes. Disponível em: https://pt.opensuse.org/Gerenciamento_de_pacotes. Acessado em: 19 de Agosto de 2016
  3. SILVA, Gustavo Noronha. Como usar o APT. Agosto de 2005, disponível em: https://www.debian.org/doc/manuals/apt-howto/apt-howto.pt_BR.pdf
  4. Debian: Arquivos sources.list, disponível em: http://www.tutoriaisti.com.br/sistemas-operacionais/linux/debian-arquivos-sources-list/. Acessado em: 27 de Agosto de 2016
  5. https://www.archlinux.org/about/
  6. https://wiki.archlinux.org/index.php/Arch_Linux
  7. 7,0 7,1 7,2 HERTZOG, Raphaë. MAS, Roland. Debian 8 - O Manual do Administrador Debian - Debian Jessie, da Descoberta à Maestria. Edição 1. ISBN: 979-10-91414-10-4. Disponível em: https://debian-handbook.info/browse/pt-BR/stable/
  8. https://wiki.archlinux.org/index.php/Pacman
  9. https://wiki.archlinux.org/index.php/Arch\_Linux#Principles
  10. 10,0 10,1 https://www.archlinux.org/pacman/