Nix (package manager)/pt: Difference between revisions

Cybergui (talk | contribs)
Created page with "==Notas== <references />"
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(22 intermediate revisions by one other user not shown)
Line 1: Line 1:
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. <ref>Valores não podem mudar durante a computação. Funções sempre produzem a mesma saída se sua entrada não mudar. </ref>tomando dependências como argumentos e produzindo ''[[Derivations|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|nix store]]) que permite atualizações atômicas, reversões e instalação simultânea de diferentes versões de um pacote, eliminando essencialmente [https://en.wikipedia.org/wiki/Dependency_hell dependency hell].  
<languages/>
<div class="mw-translate-fuzzy">
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. <ref>Valores não podem mudar durante a computação. Funções sempre produzem a mesma saída se sua entrada não mudar. </ref>tomando dependências como argumentos e produzindo ''[[Derivations|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|nix store]]) que permite atualizações atômicas, reversões e instalação simultânea de diferentes versões de um pacote, eliminando essencialmente [https://en.wikipedia.org/wiki/Dependency_hell dependency hell].
</div>


<span id="Usage"></span>
<span id="Usage"></span>
== Uso ==
== Uso ==


<div class="mw-translate-fuzzy">
=== Instalação ===
=== Instalação ===
NixOS: O Nix está sendo instalado enquanto você instala o NixOS.
NixOS: O Nix está sendo instalado enquanto você instala o NixOS.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
If you intend to utilize Nix on a different Linux distribution or a Mac computer, you can perform a standalone installation: The [https://nixos.org/manual/nix/stable/installation/installation installation section of the Nix manual] describes the installation of standalone Nix from binary or source.
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 [https://nixos.org/manual/nix/stable/installation/installation installation section of the Nix manual] descreve a instalação do Nix autônomo a partir do binário ou do código-fonte.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Nix_commands"></span>
=== Nix commands ===
=== Comandos Nix ===
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
The [[Nix command|Nix commands]] are documented in the [https://nixos.org/manual/nix/stable/command-ref/command-ref Nix reference manual]: main commands, utilities and experimental commands. Prior to version 2.0 (released in February 2018) there have been different commands.
O [[Nix command|Nix commands]] esta documentado em [https://nixos.org/manual/nix/stable/command-ref/command-ref 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.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
=== Configuration ===
=== Configuração ===
On NixOS, Nix is configured through the [https://search.nixos.org/options?query=nix. <code>nix</code> option].
No NixOS, o Nix é configurado através do [https://search.nixos.org/options?query=nix. <code>nix</code> option].
</div>  
</div>  


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
Standalone Nix is configured through <code>nix.conf</code> (usually found in <code>/etc/nix/</code>), which defines a number of settings relating to evaluation, builds, garbage collection, sandboxing, and user permissions. Details on the available options are [https://nixos.org/manual/nix/stable/command-ref/conf-file found in the Nix reference manual].
O Nix autônomo é configurado através de <code>nix.conf</code> (geralmente encontrado em <code>/etc/nix/</code>), que define uma série de configurações relacionadas à avaliação, compilações, coleta de lixo, sandbox e permissões de usuário. Detalhes sobre as opções disponíveis estão disponíveis. Detalhes sobre as opções disponíveis são [https://nixos.org/manual/nix/stable/command-ref/conf-file found in the Nix reference manual].
</div>  
</div>  


<div lang="en" dir="ltr" class="mw-content-ltr">
<div class="mw-translate-fuzzy">
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 [https://github.com/numtide/system-manager System Manager]. For system-wide configuration on macOS, [https://github.com/LnL7/nix-darwin nix-darwin] is the preferred solution.
É possível uma configuração ainda mais completa com [[Home Manager]] para gerenciar ambientes declarativos para um único usuário. Para configuração de todo o sistema no Linux, você pode usar System Manager. Para configuração de todo o sistema no macOS, [nix-darwin nix-darwin] é a solução preferida.
</div>
</div>
 
<span id="Internals"></span>
== Internos ==


<div lang="en" dir="ltr" class="mw-content-ltr">
=== Nix store ===
== Internals ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Nix store ===
{{Split|reason=The nix store is conceptually separate enough that it warrants a separate article.}}
</div>
</div>


Line 45: Line 50:


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Profiles ===
==== Cleaning the Nix store ====
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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 <code>/nix/var/nix/profiles</code>, which are in turn symlinked to the user's <code>~/.nix-profile</code>.
For information relating to cleaning the Nix store, refer to {{NixOS Manual|name=NixOS Manual: Chapter - Cleaning the Nix Store|anchor=#sec-nix-gc}}.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
=== Sandboxing ===
==== Nix store corruption ====
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
When sandbox builds are enabled, Nix will setup an isolated environment for each build process. It is used to remove further hidden dependencies set by the build environment to improve reproducibility. This includes access to the network during the build outside of <code>fetch*</code> functions and files outside the Nix store.  Depending on the operating system access to other resources are blocked as well (ex. inter process communication is isolated on Linux); see [https://nixos.org/nix/manual/#sec-conf-file nix.conf section] in the Nix manual for details.
For information relating to fixing a corrupted Nix store, refer to {{NixOS Manual|name=NixOS Manual: Chapter - Nix Store Corruption|anchor=#sec-nix-store-corruption}}.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Sandboxing is enabled by default on Linux, and disabled by default on macOS.
==== Valid Nix store names ====
In pull requests for [https://github.com/NixOS/nixpkgs/ Nixpkgs] people are asked to test builds with sandboxing enabled (see <code>Tested using sandboxing</code> in the pull request template) because in [https://nixos.org/hydra/ official Hydra builds] sandboxing is also used.
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
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.
{{main|Valid Nix store path names}}
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Profiles"></span>
=== Alternative Interpreters ===
=== Perfis ===
</div>
 
Para construir um ambiente de usuário ou sistema coerente, o Nix cria links simbólicos para entradas do repositório Nix em "perfis". Estes são o front-end pelo qual o Nix permite reversões: como o repositório é imutável e as versões anteriores dos perfis são mantidas, reverter para um estado anterior é simplesmente uma questão de alterar o link simbólico para um perfil anterior. Para ser mais preciso, o Nix cria links simbólicos para binários em entradas do repositório Nix que representam os ambientes do usuário. Esses ambientes do usuário são então criados por links simbólicos para perfis rotulados armazenados em <code>/nix/var/nix/profiles</code> que por sua vez são vinculados simbolicamente ao usuário <code>~/.nix-profile</code>.
 
=== 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 <code>fetch*</code> 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 [https://nixos.org/nix/manual/#sec-conf-file 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 <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.
 
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.
 
<span id="Alternative_Interpreters"></span>
=== Intérpretes Alternativos ===


<div lang="en" dir="ltr" class="mw-content-ltr">
Há um esforço contínuo para reimplementar o Nix, do zero, no Rust.
There is an ongoing effort to reimplement Nix, from the ground up, in Rust.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
tvix
* [https://cs.tvl.fyi/depot/-/tree/tvix tvix]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
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.
There is also a community-led fork of Nix 2.18 named Lix, focused on correctness, usability, and growth. While it has also ported some components of Nix to Rust, it is not a ground-up rewrite like Tvix.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Lix
* [https://lix.systems/ lix]
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Tentativas anteriores podem ser encontradas em github
Earlier attempts can be found on [https://riir-nix.github.io/ riir-nix]
</div>


==Notas==
==Notas==
Line 97: Line 104:




<div lang="en" dir="ltr" class="mw-content-ltr">
[[Category:Pedias]]
[[Category:Pedias]]
[[Category:Nix]]
[[Category:Nix]]
[[Category:Incomplete]]
[[Category:Incomplete]]
[[Category:Software]]
[[Category:Software]]
</div>