Gerenciadores de Pacotes Para tornar útil a informação contida em pacotes, é necessário um software que faça verificações e produza os resultados esperados das operações de instalação, remoção e atualização. Esse software é o gerenciador de pacotes. Entre dois exemplos de gerenciadores de pacotes, temos o rpm e o dpkg. Além de extrair os arquivos do pacote e copiá-los na árvore de diretórios do sistema e executar as intruções pré e pós instalação, o gerenciador de pacotes armazena os meta-dados em uma base de dados de pacotes. Diferentes gerenciadores utilizam diferentes métodos de armazenamento. O rpm, por exemplo, utiliza o BDB (Berkeley Database), uma estrutura de dados de hash ou árvore que permite a rápida recuperação dos dados em disco. O dpkg, em contrapartida, armazena as informações em arquivos em um diretório e em um arquivo texto com o status de cada pacote. O gerenciador de pacotes, geralmente, deve garantir a consistência do sistema, impedindo a instalação de pacotes cujas dependências não estejam instaladas ou impedindo a remoção de um pacote que é dependência de outros ainda instalados. A verificação de que o sistema está íntegro também pode ser feita, verificando que os arquivos no sistema são os mesmos dos pacotes. Isso pode ser feito utilizando "hashes" ou "sums" dos arquivos. Daí a importância de distinguir quais são arquivos de configuração, já que esses podem ser modificados. Lembrando que essa verificação não pode garantir segurança alguma do sistema, já que os "hashes" também podem ser modificados por um eventual invasor. O gerenciador de pacotes permite, além de instalar, remover e atualizar pacotes, a consulta a sua base de dados, permitindo verificar que pacotes estão instalados e seus meta-dados, incluindo relações com outros pacotes e arquivos. Os principais gerenciadores de pacote em sistemas que comumente utilizam GNU e Linux são o rpm e o dpkg. Enumerar todas as alternativas só não seria tão grande quanto enumerar as distribuições de GNU e Linux já que boa parte delas utilizam justamente o rpm e o dpkg. O rpm foi criado pela Red Hat e é, ainda hoje, utilizado nas distribuições que se baseiam ou se basearam nela. É também o formato de pacote padrão do LSB (Linux Standard Base). Recentemente, ocorreu uma iniciativa de modernizar o rpm. No entanto, essa iniciativa, chamada de rpm5, não pretende manter compatibilidade com o formato padrão do LSB e está adotando outros formatos, como o xar, cujos meta-dados são descritos utilizando XML. O dpkg é o gerenciador de pacotes criado pelo projeto Debian. O formato de seus pacotes são denominados deb, ao contrário do rpm, que é tanto o nome do gerenciador quanto do formato. Os meta-dados do deb são descritos em um formato RFC822, o mesmo dos cabeçalhos de e-mails, em um arquivo tar armazenado em um arquivo ar, onde se encontra o arquivo tar com os arquivos a instalar. Veremos em uma próxima seção como extrair esses arquivos utilizando ferramentas facilmente encontradas em sistemas diferentes do Debian.