Next: , Up: Introdução   [Contents][Index]


1.1 Gerenciando software do jeito do Guix

Guix provides a command-line package management interface (see Gerenciamento de pacote), tools to help with software development (see Desenvolvimento), command-line utilities for more advanced usage (see Utilitários), as well as Scheme programming interfaces (see Interface de programação). O build daemon é responsável por compilar pacotes em nome dos usuários (see Configurando o daemon) e por baixar binários pré-compilados de fontes autorizados (see Substitutos).

Guix inclui definições de pacotes para muitos pacotes GNU e não-GNU, todos os quais respeitam a liberdade de computação do usuário. É extensível: os usuários podem escrever suas próprias definições de pacotes (see Definindo pacotes) e disponibilizá-los como módulos de pacotes independentes (see Módulos de pacote). Também é personalizável: os usuários podem derivar definições de pacotes especializados das existentes, incluindo da linha de comando (see Opções de transformação de pacote).

Nos bastidores, a Guix implementa a disciplina gerenciamento de pacotes funcional pioneira da Nix (see Agradecimentos). No Guix, o processo de compilação e instalação de pacotes é visto como uma função, no sentido matemático. Essa função recebe entradas, como scripts de compilação, um compilador e bibliotecas, e retorna um pacote instalado. Como uma função pura, seu resultado depende apenas de suas entradas – por exemplo, não pode fazer referência a um software ou scripts que não foram explicitamente passados como entradas. Uma função de compilação sempre produz o mesmo resultado ao passar por um determinado conjunto de entradas. Não pode alterar o ambiente do sistema em execução de qualquer forma; por exemplo, ele não pode criar, modificar ou excluir arquivos fora de seus diretórios de compilação e instalação. Isto é conseguido através da execução de processos de compilação em ambientes isolados (ou containers), onde somente suas entradas explícitas são visíveis.

O resultado das funções de compilação do pacote é mantido (cached) no sistema de arquivos, em um diretório especial chamado armazém (see O armazém). Cada pacote é instalado em um diretório próprio no armazém – por padrão, em /gnu/store. O nome do diretório contém um hash de todas as entradas usadas para compilar esse pacote; Assim, a alteração uma entrada gera um nome de diretório diferente.

Essa abordagem é a fundação para os principais recursos do Guix: suporte para atualização transacional de pacotes e reversão, instalação por usuário e coleta de lixo de pacotes (see Recursos).


Next: Distribuição GNU, Up: Introdução   [Contents][Index]