Pesquisa de site

Nix – O gerenciador de pacotes puramente funcional para Linux


Nix é um sistema de gerenciamento de pacotes poderoso e puramente funcional, projetado para gerenciamento de pacotes confiável e reproduzível, lançado sob os termos da GNU LGPLv2.1. É o principal sistema de gerenciamento de pacotes do NixOS, uma distribuição Linux menos conhecida.

Nix oferece atualizações e reversões atômicas, múltiplas versões de instalação de pacotes, gerenciamento de pacotes multiusuário e configuração fácil de ambientes de construção para um pacote, independentemente de quais linguagens de programação e ferramentas um desenvolvedor está usando.

Em Nix, os pacotes são construídos a partir de uma linguagem de pacote funcional chamada “expressões Nix”. Esta abordagem funcional ao gerenciamento de pacotes garante que a instalação ou atualização de um pacote não possa quebrar outros pacotes.

O Nix também possui suporte multiusuário, o que implica que usuários normais (ou não privilegiados) do sistema podem instalar pacotes com segurança e cada usuário é identificado por um perfil (uma coleção de pacotes na loja Nix que aparece no PATH do usuário).

Caso um usuário tenha instalado um pacote, se outro usuário tentar instalar o mesmo pacote, o pacote não será compilado ou baixado uma segunda vez.

Atualmente suporta Linux (i686, x86_64) e Mac OS X (x86_64). No entanto, é bastante portátil, você pode experimentá-lo na maioria das plataformas que suportam threads POSIX e possuem um compilador C++11.

Neste artigo, mostraremos como instalar (em modo multiusuário) e usar o gerenciador de pacotes Nix no Linux. Discutiremos algumas das tarefas básicas de gerenciamento de pacotes em relação às ferramentas comumente usadas.

Como instalar o gerenciador de pacotes Nix no Linux

Instalaremos a versão mais recente do Nix (v2.1.3 no momento em que este artigo foi escrito) no modo multiusuário. Felizmente, existe um script de instalação pronto e preparado que você pode executar a partir de seu shell como um usuário normal usando o seguinte comando curl em seu sistema.

sh <(curl https://nixos.org/nix/install) --daemon

A execução do comando acima fará o download do tarball binário nix mais recente e você chegará à tela de instalação multiusuário do nix, conforme mostrado na captura de tela.

Para ver uma lista detalhada do que acontecerá durante o processo de instalação, digite y e pressione Enter. Se você estiver satisfeito e pronto para continuar, digite y e pressione Enter.

O script invocará o comando sudo quantas vezes for necessário. Você precisa permitir que ele use o sudo respondendo y e pressionando Enter.

O instalador executará alguns testes e gerará um relatório de configuração do Nix, criará usuários de compilação entre os IDs de usuário 30001 e 30032 e um grupo com o ID de grupo 30.000. Digite y para continuar quando solicitado. Ele configurará os grupos de compilação para os diferentes usuários de compilação e criará a estrutura básica de diretórios do Nix.

Ele modificará o arquivo /etc/bashrc (e /etc/zshrc para o zsh) se eles existirem. Observe que primeiro ele faz backup dos arquivos mencionados com uma extensão .backup-before-nix e o instalador também cria o arquivo /etc/profile.d/nix.sh.

O instalador também configurará o serviço nix-daemon e o serviço de soquete nix-daemon, carregará a unidade systemd para nix-daemon e iniciará os dois serviços mencionados acima.

Assim que a instalação for concluída, você precisa abrir uma nova janela de terminal para começar a usar o Nix. Alternativamente, feche e reabra seu shell para aplicar as alterações recentes. Em seguida, crie o arquivo /etc/profile.d/nix.sh (porque não é um arquivo de inicialização do shell, abrir um novo shell não o originará).

source /etc/profile.d/nix.sh

Em seguida, execute o seguinte comando para baixar alguns caminhos do site oficial do projeto, necessários para o funcionamento do Nix. Depois que todos os caminhos forem baixados e copiados para os locais corretos, você verá um resumo do sistema e do tipo de instalação nix, conforme mostrado na captura de tela.

nix-shell -p nix-info --run "nix-info -m"

Como usar o gerenciador de pacotes Nix no Linux

No Nix, o gerenciamento de pacotes é feito pelo utilitário nix-env. Ele é usado para instalar, atualizar e remover/apagar pacotes e para consultar quais pacotes estão instalados ou disponíveis para instalação.

Todos os pacotes estão localizados em um canal Nix, que é uma URL que aponta para um repositório que compreende tanto uma coleção de expressões Nix quanto um ponteiro para um cache binário.

O canal padrão é Nixpkgs e a lista de canais inscritos é armazenada em ~/.nix-channels, você pode listá-los usando o seguinte comando (sem saída significa sem canais) .

nix-channel --list

Para adicionar o canal Nix, use o seguinte comando.

nix-channel --add https://nixos.org/channels/nixpkgs-unstable

Antes de instalar qualquer pacote, comece atualizando o canal Nix; isso é semelhante a executar apt update no gerenciador de pacotes APT.

nix-channel --update

Você pode consultar quais pacotes estão disponíveis para instalação usando o seguinte comando.

nix-env -qa

Neste exemplo, instalaremos o servidor Apache Tomcat usando o comando anterior em conjunto com grep para descobrir se o pacote está disponível para instalação conforme mostrado.

nix-env -qa | grep "apache-tomcat"

Para instalar um pacote, use o seguinte comando especificando a versão do pacote, por exemplo apache-tomcat-9.0.2.

nix-env -i apache-tomcat-9.0.2

No sistema local, o Nix armazena pacotes no Nix store, que é por padrão o diretório /nix/store, onde cada pacote tem seu próprio subdiretório exclusivo. Por exemplo, os pacotes apache-tomcat são armazenados em:

/nix/store/95gmgnxlrcpkhlm00fa5ax8kvd6189py-apache-tomcat-9.0.2

Neste caminho, os caracteres aleatórios 95gmgnxlrcpkhlm00fa5ax8kvd6189py é um identificador único do pacote que leva em consideração todas as suas dependências.

Você pode listar os pacotes instalados com o seguinte comando.

nix-env -q

Para atualizar o pacote apache-tomcat, você pode usar a opção de atualização -u conforme mostrado.

nix-env -u apache-tomcat

Se você deseja remover/apagar apache-tomcat, use o sinalizador -e. Aqui, um pacote não é apagado do sistema imediatamente, ele apenas fica sem uso. Isso é útil porque você deseja fazer uma reversão ou pode estar nos perfis de outros usuários.

nix-env -e apache-tomcat

Depois de remover um pacote, você pode fazer uma coleta de lixo com o utilitário nix-collect-garbage.

nix-collect-garbage

Como remover o gerenciador de pacotes Nix no Linux

Para desinstalar o Nix, remova todos os arquivos relacionados ao nix de uma só vez.

sudo rm -rf /etc/profile/nix.sh /etc/nix /nix ~root/.nix-profile ~root/.nix-defexpr ~root/.nix-channels ~/.nix-profile ~/.nix-defexpr ~/.nix-channels

Em sistemas com systemd, execute os seguintes comandos para interromper todos os serviços relacionados ao nix e desativá-los.

sudo systemctl stop nix-daemon.socket
sudo systemctl stop nix-daemon.service
sudo systemctl disable nix-daemon.socket
sudo systemctl disable nix-daemon.service
sudo systemctl daemon-reload

Além disso, você precisa remover quaisquer referências ao Nix nestes arquivos: /etc/profile, /etc/bashrc e /etc/zshrc >.

Para obter mais informações, consulte as páginas de manual dos utilitários acima que examinamos.

man nix-channel
man nix-env

Você pode encontrar a documentação do Nix Package Manager no site do projeto: https://nixos.org/nix/.

Resumo

Nix é um gerenciador de pacotes puramente funcional projetado para gerenciamento de pacotes confiável e reproduzível. Ele fornece um conceito interessante de gerenciamento de pacotes, muito distinto das ferramentas comumente usadas no Linux, como YUM, APT e muitas outras.

Neste artigo, mostramos como instalar o nix no modo multiusuário e discutimos como fazer o gerenciamento de pacotes com o Nix. Compartilhe sua opinião conosco ou faça qualquer pergunta através do formulário de comentários abaixo. Por último, em um próximo artigo, explicaremos mais comandos de gerenciamento de pacotes Nix. Até então, fique conectado.