O que o Nixos Package Manager faz?
A maioria dos gerentes de pacotes usa um arquivo que contém o código executável ou fonte. Eles então calculam o que ele precisa no sistema e depois se certificam de que ele existe. Em nix, as coisas funcionam de maneira muito semelhante. A grande diferença é que o NIX cria todos os arquivos e os compila, se necessário, coloque -os em um só lugar; a loja nix. A primeira pergunta que você tem pode ser: “Os arquivos não terão o mesmo nome?”O sistema evita isso tendo um diretório para cada versão e nomeando todos os arquivos com um hash. Para fazer o aplicativo "sentir em casa", todas as dependências são então vinculadas aos seus diretórios corretos usando symblinks comuns. Um perfil mantém o controle de qual versão cada usuário é executado.
Instalações de usuário do nixos
Com este sistema, você pode ter versões diferentes instaladas no diretório de cada usuário. Se eles são iguais em vários usuários, o administrador pode deixar os binários de re-link nix, então apenas um existe de cada vez. Isso é útil para salvar o espaço do disco. Você também pode criar ambientes específicos para cada versão do pacote. Isso é especialmente útil quando você deseja testar uma nova versão ou desenvolver software.
Instalando para distribuição comum
Para plataformas mais comuns, você pode instalar o Nix, o gerenciador de pacotes com um script simples. Este script está disponível no site do nix. O script precisará de acesso ao usuário root, mas se você estiver muito consciente da segurança, deve ler o script antes de usá -lo. Se você deseja evitar o uso de raiz no script, basta criar o diretório /nix no seu sistema.
$ sh <(curl -L https://nixos.org/nix/install)
Se você não tem acesso root ou apenas super cauteloso, pode ter nix como um gerenciador de pacotes somente de usuário.
$ sh <(curl -L https://nixos.org/nix/install) -no-daemon
Este binário funciona bem para a maioria, se não todas, distribuições. As plataformas são x8664, eu?86, AARCH64 e X8664-Darwin, que cobrem quase todas as plataformas disponíveis. Se você usar outras plataformas, provavelmente poderá usar o código -fonte e construir o seu próprio. Quando a instalação for concluída, você terá um monte de novos comandos.
Adicionando seu primeiro programa a Nixos
Para instalar o software e definir quando pode ser usado, você tem nix-env. A opção de instalação (-i) é a mais comum, pois você a usa sempre e coloca um pacote como um argumento.
$ nix -env -i Firefox
Parece o mesmo que em outras distribuições, o mesmo acontece com o argumento da consulta. A instalação levará algum tempo, embora. O motivo é que ele deve compilar o software, a menos que haja uma versão pré-compilada no cache do nix. Atingir o cache nem sempre é muito rápido. Há uma diferença que você deve tomar nota; você pode escolher uma versão! Se você deseja uma versão especial, você deve encontrar que estejam disponíveis usando expressões regulares.
$ nix -env -qa 'Firefox.*'
Você receberá uma lista de todos os pacotes disponíveis. Você pode instalá -lo da mesma maneira, mas usando o valor na lista.
$ nix-env -install 'Firefox-78.4.0Ser '-Preserve -Installed
Isso pode falhar se você já tiver uma versão instalada. Opção '-Preserve-Installed' não apagará a versão instalada. Você pode acabar com duas versões da mesma prioridade, que você pode corrigir definindo a prioridade.
$ nix-env -set-flag prioridade 2 'Firefox-82.0.2 '
Agora, você executará a versão antiga na próxima vez que começar o Firefox. Para alternar qual você executa, você pode definir a prioridade de acordo. Você também pode iniciar uma concha para escolher um binário. Esta é a opção de um desenvolvedor, e o comando é nix-shell.
Atualizando nixos
Depois de ter uma coleção de software, você deseja manter -se atualizado. O mesmo que sempre, você usa o mesmo comando com um argumento. Mas você também deve manter o canal atualizado. O comando é nix-canal.
$ nix -channel -Update
Isso lê as versões atuais de todos os pacotes disponíveis. Depois disso, você pode começar a atualizar seu software com Nix-env.
$ nix -env -upgrade
Uma atualização como essa atualizará sua versão antiga do software. Nesse caso, o antigo Firefox será substituído pela versão mais recente. Você pode não querer isso por qualquer motivo, geralmente desenvolvimento.
Remoção de aplicações de Nixos
A remoção de aplicações é igualmente simples, com uma pequena ressalva. Nenhum aplicativo é removido por um comando de remoção.
$ nix-env -uninstall 'Firefox-78.4.0Ser '
Este comando removerá os links para a construção atual desta versão do Firefox. Todos os arquivos sempre permanecerão no disco. Você tem essas versões disponíveis para fazer uma reversão. Uma reversão significa que você volta a usar a versão antiga. Isso pode ser útil se você já tentou o mais novo e tem problemas imprevistos.
$ nix -env -rollback
Você reverte uma geração inteira, o que significa todos os programas que foram atualizados desde a última geração. A opção executa dois comandos; Essa lista e depois muda para as gerações antigas. Todos os pacotes instalados existem em uma geração no disco.
Nixos roll-back e limpeza
A função de reversão levará a muito espaço em disco que está sendo usado por versões antigas. Você pode limpar isso (você precisa limpar isso!). Quando você tiver um período longo o suficiente, por sua própria escolha, você também pode limpar essas gerações antigas para salvar o espaço do disco.
$ nix-env -delete-gerações antigas
Com este comando, você exclui todas as gerações, exceto as duas últimas. Você pode ir e voltar na lista com parâmetros mais complexos para deixar a geração específica que funcionou melhor para você. A menos que você tenha muitos projetos de teste ou desenvolvimento que precisam de muitas versões para testes, você deve usar uma remoção programada de todas as gerações antigas.
Um script simples para manter suas gerações limpas vem com uma instalação do Nix Package Manager.
$ nix-collect-Garbage
Você também deve configurar o coletor para executar automaticamente usando o Systemd ou outros sistemas.
Conclusão
O Nix Package Manager é um sistema poderoso que pode fazer com que você execute ambientes de desenvolvimento complexos em sua máquina. Você também pode usá -lo para manter seu software arrumado e ter uma maneira simples de se recuperar em uma nova máquina, caso ocorra a catástrofe de uma falha de disco.