# PackageKit

PackageKit é um conjunto de aplicações desenhadas para proporcionar um "Front-end" de alto nível para um elevado número de gestores de pacotes. O PackageKit foi concebido com a finalidade de tornar mais amigáveis as operações de instalação, atualização e remoção de pacotes dentro de um sistema Linux.
A finalidade primária, além das atribuições acima abordadas, é que o PackageKit sirva de software centralizador para as demais formas gráficas de se fazer alterações no sistema de pacotes, sendo integrado com ferramentas como o PolicyKit.
Devido à divergências de filosofia, licença ou finalidade de uma distribuição Linux, várias são as ferramentas implementadas para gerenciamento de pacotes, como por exemplo o apt, rpm, conary, portage. O PackageKit não é uma ferramenta que surgiu para substituir estas formas de gerenciamento, mas criar uma camada de abstração acima delas, provendo uma interface gráfica padrão para melhor gerenciamento gráfico dos softwares.

## Caracteristicas do Software

Algumas características do PackageKit, que podem influenciar na usabilidade de uma distribuição Linux:
* Atualizações de segurança no iniciar de um computador(boot);
* Instalação automática de arquivos, como por exemplo, os arquivos clipart do software OpenOffice;
* Instalação e configuração de novas funcionalidades, como por exemplo, leitras de Cartão SD;
* Permissão de usuários sem privilégios administrativos, para fazer instalações de softwares específicos;
E algumas características que não devem ser agregadas ao PackageKit
* Não é um daemon que depende de uma série de bibliotecas ou outros daemons, tornando-o pesado;
* Não é 100% estável. Devido ao seu número de versão, até que chegue a 1.0.0, a forma de configuração e operação pode mudar;
* Não é voltado para apenas uma plataforma ou arquitetura de hardware;
* Não é produzido por apenas uma empresa, tendo sim, participação de algumas delas, mas não é controlado por uma empresa;
Formalmente o PackageKit também pode ser considerado uma camada de abstração do D-bus, para permitir interação com pacotes, usuários e sistema de pacotes de uma distribuição.

## Formas de utilização

O PackageKit por si só é um daemon dentro do Sistema Operacional chamado packagekitd, que só executa ações quando requisições vindas do PackageKit são enviadas para determinada ferramenta de modo texto de gerenciamento de pacotes. Quando não recebe requisições, consome pouco ou nenhum recurso computacional.

### Linha de comando

O comando pkcon oferece uma interface em modo texto para a execução de comandos no PackageKit, como por exemplo:
Outros dois comando utilizados são o pkmon, que geralmente é utilizado em outro terminal para a finalidade de depuração de execução, e o pkgenpack, que serve para a geração de um pacote de serviços, ou metapacote.

### Ferramentas gráficas

O gnome-packagekit é o conjunto de ferramentas gráficas do PackageKit para a interface gráfica Gnome, e o KPackageKit, é a ferramenta equivalente para a interface gráfica KDE.

### libpackagekit

É uma biblioteca centralizada, que gera a funcionalidade de integração entre D-Bus e PackageKit. Seu estilo de codificação é bastante parecida com a da libc.

## Projetos associados

De acordo com o site oficial do PackageKit, estas são as ferramentas que utilizam o PackageKit.

### Distribuições Linux

Distribuições que configuram de forma prévia o PackageKit para melhor interagir com seu sistema de pacotes e com os usuários:
* Fedora
* openSUSE
* Foresight Linux
* Moblin
* Kubuntu
* openSUSE e seu derivado corporativo SLED

### Projetos que usam a API de sistema do PackageKit

* Gnome, com o gnome-packagekit
* KDE, com o KPackageKit
* Listaller
* OpenMoko

### Projetos que usam a API de sessão do PackageKit

* Nautilus
* system-config-printer do Fedora
* O queimador de CD do Gnome, Brasero
* Zero Install