Jump to content

Nix (package manager)/pt: Difference between revisions

From NixOS Wiki
Cybergui (talk | contribs)
Created page with "O sandboxing é habilitado por padrão no Linux e desabilitado por padrão no macOS. Em pull requests para [NixOS/nixpkgs/ Nixpkgs] as pessoas são solicitadas a testar compilações com sandbox habilitado (consulte <code>Testado usando sandbox</code> no modelo de solicitação de pull) porque em [https://nixos.org/hydra/ official Hydra builds]sandboxing é usado também."
Cybergui (talk | contribs)
Created page with "Para configurar o Nix para sandbox, defina <code>sandbox = true</code> em <code>/etc/nix/nix.conf</code>; para configurar o NixOS para sandbox defina <code>nix.useSandbox = true;</code> em <code>configuration.nix</code>. O <code>nix.useSandbox</code> option is <code>true</code> por padrão desde NixOS 17.09."
Line 52: Line 52:
Em pull requests para [NixOS/nixpkgs/ Nixpkgs] as pessoas são solicitadas a testar compilações com sandbox habilitado (consulte <code>Testado usando sandbox</code> no modelo de solicitação de pull) porque em [https://nixos.org/hydra/ official Hydra builds]sandboxing é usado também.
Em pull requests para [NixOS/nixpkgs/ Nixpkgs] as pessoas são solicitadas a testar compilações com sandbox habilitado (consulte <code>Testado usando sandbox</code> no modelo de solicitação de pull) porque em [https://nixos.org/hydra/ official Hydra builds]sandboxing é usado também.


<div lang="en" dir="ltr" class="mw-content-ltr">
Para configurar o Nix para sandbox, defina <code>sandbox = true</code> em <code>/etc/nix/nix.conf</code>; para configurar o NixOS para sandbox defina <code>nix.useSandbox = true;</code> em <code>configuration.nix</code>. O <code>nix.useSandbox</code> option is <code>true</code> por padrão desde NixOS 17.09.
To configure Nix for sandboxing, set <code>sandbox = true</code> in <code>/etc/nix/nix.conf</code>; to configure NixOS for sandboxing set <code>nix.useSandbox = true;</code> in <code>configuration.nix</code>. The <code>nix.useSandbox</code> option is <code>true</code> by default since NixOS 17.09.
</div>


<span id="Alternative_Interpreters"></span>
<span id="Alternative_Interpreters"></span>

Revision as of 21:55, 30 June 2025

Nix é um gerenciador de pacotes e sistema de construção que analisa instruções de construção reproduzíveis especificadas no Nix Expression Language, Uma linguagem puramente funcional com avaliação preguiçosa. Expressões Nix são funções puras. [1]tomando dependências como argumentos e produzindo derivation especificando um ambiente de construção reproduzível para o pacote. O Nix armazena os resultados da construção em endereços exclusivos especificados por um hash da árvore de dependência completa, criando um armazenamento de pacotes imutável (também conhecido como nix store) que permite atualizações atômicas, reversões e instalação simultânea de diferentes versões de um pacote, eliminando essencialmente dependency hell.

Uso

Instalação

NixOS: O Nix está sendo instalado enquanto você instala o NixOS.

Se você pretende utilizar o Nix em uma distribuição Linux diferente ou em um computador Mac, você pode executar uma instalação autônoma: O installation section of the Nix manual descreve a instalação do Nix autônomo a partir do binário ou do código-fonte.

Comandos Nix

O Nix commands esta documentado em Nix reference manual: Comandos principais, utilitários e comandos experimentais. Antes da versão 2.0 (lançada em fevereiro de 2018), havia comandos diferentes.

Configuração

No NixOS, o Nix é configurado através do nix option.

Standalone Nix is configured through nix.conf (usually found in /etc/nix/), which defines a number of settings relating to evaluation, builds, garbage collection, sandboxing, and user permissions. Details on the available options are found in the Nix reference manual.

Even further configuration is possible with Home Manager to manage declarative environments for a single user. For system-wide configuration on Linux, you can use System Manager. For system-wide configuration on macOS, nix-darwin is the preferred solution.

Internals

Nix store

Packages built by Nix are placed in the read-only Nix store, normally found in /nix/store. Each package is given a unique address specified by a cryptographic hash followed by the package name and version, for example /nix/store/nawl092prjblbhvv16kxxbk6j9gkgcqm-git-2.14.1. These prefixes hash all the inputs to the build process, including the source files, the full dependency tree, compiler flags, etc. This allows Nix to simultaneously install different versions of the same package, and even different builds of the same version, for example variants built with different compilers. When adding, removing or updating a package, nothing is removed from the store; instead, symlinks to these packages are added, removed or changed in profiles.

Profiles

In order to construct a coherent user or system environment, Nix symlinks entries of the Nix store into profiles. These are the front-end by which Nix allows rollbacks: since the store is immutable and previous versions of profiles are kept, reverting to an earlier state is simply a matter of change the symlink to a previous profile. To be more precise, Nix symlinks binaries into entries of the Nix store representing the user environments. These user environments are then symlinked into labeled profiles stored in /nix/var/nix/profiles, which are in turn symlinked to the user's ~/.nix-profile.

Sandboxing

Quando as compilações em sandbox estão habilitadas, o Nix configura um ambiente isolado para cada processo de compilação. Ele é usado para remover outras dependências ocultas definidas pelo ambiente de compilação para melhorar a reprodutibilidade. Isso inclui acesso à rede durante a compilação fora das funções fetch* e arquivos fora do repositório Nix. Dependendo do sistema operacional, o acesso a outros recursos também é bloqueado (por exemplo, a comunicação entre processos é isolada no Linux); veja no manual do Nix para detalhes nix.conf section.

O sandboxing é habilitado por padrão no Linux e desabilitado por padrão no macOS. Em pull requests para [NixOS/nixpkgs/ Nixpkgs] as pessoas são solicitadas a testar compilações com sandbox habilitado (consulte Testado usando sandbox no modelo de solicitação de pull) porque em official Hydra buildssandboxing é usado também.

Para configurar o Nix para sandbox, defina sandbox = true em /etc/nix/nix.conf; para configurar o NixOS para sandbox defina nix.useSandbox = true; em configuration.nix. O nix.useSandbox option is true por padrão desde NixOS 17.09.

Intérpretes Alternativos

Há um esforço contínuo para reimplementar o Nix, do zero, no Rust.

tvix

Há também uma bifurcação do Nix 2.18 liderada pela comunidade, chamada Lix, focada em correção, usabilidade e crescimento. Embora também tenha portado alguns componentes do Nix para Rust, não é uma reescrita completa como o Tvix.

Lix

Tentativas anteriores podem ser encontradas em github

Notas

  1. Valores não podem mudar durante a computação. Funções sempre produzem a mesma saída se sua entrada não mudar.