Saltar para o conteúdo

GNU Guix: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
USERZZ (discussão | contribs)
{{Sistemas de gestão de pacotes Linux}}
Criada por tradução da página "GNU Guix"
 
(Há 5 revisões intermédias de 4 utilizadores que não estão a ser apresentadas)
Linha 1: Linha 1:
{{Info/Software
{{Info/Software
| nome = GNU Guix
| logotipo = File:Guix logo.svg
| título = GNU Guix
| imagem = <!-- Image name is enough -->
| logotipo = File:Guix logo.svg
| website = {{URL|https://guix.gnu.org/en/}}
| logo caption =
| logo size = 200px
| logo alt =
| screenshot = <!-- Image name is enough -->
| caption =
| screenshot size =
| screenshot alt =
| collapsible =
| autor = Ludovic Courtès
| desenvolvedor = [[Projeto GNU]]
| data_do_lançamento = [[2012]]
| discontinued =
| última_versão = 0.12.0<ref>{{citar web|url=https://www.gnu.org/software/guix/news/gnu-guix-and-guixsd-0120-released.html|título=GNU Guix and GuixSD 0.12.0 released|data=22 de dezembro de 2016|autor =Ricardo Wurmus|língua=en|acessodata=28 de janeiro de 2017}}</ref>
| data_da_última_versão = {{Start date and age|2016|12|22}}
| latest preview version =
| latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} -->
| status =
| linguagem = [[GNU Guile#Guile Scheme|Guile Scheme]], [[C++]] (núcleo do [[Nix (gerenciador de pacotes)|Nix]])
| operating system =
| platform =
| size =
| language =
| language count = <!-- Number only -->
| language footnote =
| gênero = [[Gerenciador de pacotes]], [[Software Livre]]
| licença = [[GNU General Public License|GPLv3+]]
| alexa =
| website = {{URL|https://www.gnu.org/software/guix/}}
| standard =
| AsOf =
}}
}}

'''GNU Guix''' ({{IPA-all|ɡiːks|pron}} <ref>{{citar web|url=https://www.gnu.org/software/guix/manual/guix.html#FOOT1|título=GNU Guix Reference Manual|publicado=[[Projeto GNU]]|língua=en|acessodata=28 de janeiro de 2017}}</ref>) é um [[sistema de gerenciamento de pacotes]] destinado ao [[GNU|sistema GNU]]. O Guix baseia-se no gerenciador de pacotes [[Nix (gerenciador de pacotes)|Nix]], com [[API]]s para a linguagem de programação [[Scheme]] voltada para o [[GNU Guile|Guile]], e é especializado exclusivamente no fornecimento de pacotes contendo [[software livre]].<ref>{{citar web|url=https://en.wikisource.org/wiki/Functional_Package_Management_with_Guix|título=Functional Package Management with Guix|autor =Ludovic Courtès|ano=2013|local=[[Madri]], [[Espanha]]|publicado=European Lisp Symposium |acessodata=28 de janeiro de 2017}}</ref>
'''GNU Guix''' ( {{IPAc-en|ɡ|iː|k|s}} <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/guix.html#FOOT1|titulo=GNU Guix Reference Manual|acessodata=23 April 2018|website=www.gnu.org}}</ref> ) é um [[Sistema gestor de pacotes|gerenciador de pacotes]] multiplataforma [[Programação funcional|funcional]] e uma ferramenta para instanciar e gerenciar sistemas operacionais [[Sistema operacional tipo Unix|do tipo Unix]], baseado no gerenciador de pacotes Nix . As receitas de configuração e pacotes são escritas no [[GNU Guile|Guile Scheme]] . GNU Guix é o gerenciador de pacotes padrão da distribuição [[GNU Guix|do sistema GNU Guix]] . <ref>{{Citar livro|url=https://en.wikisource.org/wiki/Functional_Package_Management_with_Guix|título=Functional Package Management with Guix|ultimo=Ludovic Courtès|data=2013|editora=European Lisp Symposium|localização=[[Madrid]], [[Spain]]}}</ref>

Diferentemente dos [[Sistema gestor de pacotes|gerenciadores de pacotes]] tradicionais, o Guix (como o Nix) utiliza um modelo de implantação puramente [[Programação funcional|funcional]], onde o software é instalado em diretórios exclusivos gerados por meio de [[Função hash criptográfica|hashes criptográficos]] . Todas as dependências de cada software estão incluídas em cada hash. <ref>Dolstra, E. [https://nixos.org/~eelco/pubs/phd-thesis.pdf ''The Purely Functional Software Deployment Model.''] PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. {{ISBN|90-393-4130-3}}.</ref> Isso resolve o problema do [[inferno de dependências]], permitindo que várias versões do mesmo software coexistam, o que torna os pacotes portáteis e reproduzíveis . A realização de cálculos científicos em uma configuração Guix foi proposta como uma resposta promissora à [[crise de replicação]] . <ref name="hinsen-2020">
{{Citar periódico |url=https://hal.archives-ouvertes.fr/hal-02877319/document |título=Staged computation: the technique you did not know you were using |data=July 2020 |acessodata=2022-11-04 |periódico=Computing in Science and Engineering |número=4 |ultimo=Hinsen |primeiro=Konrad |paginas=99–103 |bibcode=2020CSE....22d..99H |doi=10.1109/MCSE.2020.2985508 |issn=1558-366X |volume=22}} {{Acesso aberto}}
</ref> <ref name="vallet-etal-2022">
{{Citar periódico |url=https://www.nature.com/articles/s41597-022-01720-9.pdf |título=Toward practical transparent verifiable and long-term reproducible research using Guix |data=4 October 2022 |acessodata=2022-11-04 |periódico=Scientific Data |número=1 |ultimo=Vallet |primeiro=Nicolas |ultimo2=Michonneau |primeiro2=David |paginas=597 |bibcode=2022NatSD...9..597V |doi=10.1038/s41597-022-01720-9 |issn=2052-4463 |pmc=9532446 |pmid=36195618 |ultimo3=Tournier |primeiro3=Simon |volume=9}} {{Acesso aberto}}
</ref>

O desenvolvimento do GNU Guix está interligado com o [[GNU Guix|Sistema GNU Guix]], <ref name="What to call Guix">{{Citar lista de discussão|url=http://lists.gnu.org/archive/html/gnu-system-discuss/2015-01/threads.html|titulo=What to call Guix?}}</ref> uma distribuição de sistema operacional instalável usando o kernel [[GNU Linux-libre|Linux-libre]] e o sistema init [[GNU Guix|GNU Shepherd]] . <ref>{{Citar web|url=https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/guix-europe|titulo=guix-europe|acessodata=16 May 2019|website=git.savannah.gnu.org|arquivourl=https://web.archive.org/web/20210124140203/https://git.savannah.gnu.org/cgit/guix/maintenance.git/tree/guix-europe|arquivodata=24 January 2021|urlmorta=dead}}</ref>

== Características gerais ==
Os pacotes Guix são definidos por meio de APIs [[Programação funcional|funcionais]] do Guile Scheme, projetadas especificamente para gerenciamento de pacotes. As dependências são rastreadas diretamente nesta linguagem por meio de valores especiais chamados "derivações", que são avaliados pelo daemon Guix [[Avaliação preguiçosa|de forma preguiçosa]] . O Guix rastreia essas referências automaticamente para que os pacotes instalados possam ser [[Coletor de lixo (informática)|coletados como lixo]] quando nenhum outro pacote depender deles. Ao custo de maiores requisitos de armazenamento, todas as atualizações no Guix têm a garantia de serem atômicas e podem ser revertidas.

O recurso de reversão do Guix é herdado do design do Nix e raramente é encontrado em outros [[Sistema operativo|sistemas operacionais]], pois requer uma abordagem pouco ortodoxa sobre como o sistema deve funcionar (veja [[OpenSUSE|MicroOS]] ). O gerenciador de pacotes Guix, como o Nix, pode, no entanto, ser usado em muitas distribuições como [[Debian]] e [[Parabola GNU/Linux-libre|Parabola]] . <ref>{{Citar web|url=https://tracker.debian.org/pkg/guix|titulo=Guix - Debian Package Tracker}}</ref> <ref>{{Citar web|url=https://www.parabola.nu/packages/?q=guix|titulo=Parabola GNU/Linux-libre - Package Search|acessodata=2021-09-14|website=www.parabola.nu}}</ref> Isso também permite que vários usuários instalem software com segurança no mesmo sistema sem privilégios de administrador.

Comparado aos gerenciadores de pacotes tradicionais, os repositórios de pacotes Guix podem crescer consideravelmente e, portanto, exigir mais largura de banda; embora, comparado às soluções de contêiner (como [[Docker (software)|o Docker]] ), que também são comumente empregadas para resolver [[Inferno de dependências|o inferno das dependências]], o Guix seja mais enxuto e esteja em conformidade com práticas como [[Don't repeat yourself|não se repita]] e fonte única da verdade . Se o usuário optar por construir tudo a partir do código-fonte, será necessário ainda mais espaço de armazenamento e largura de banda.

Herdado do design do Nix, a maior parte do conteúdo do gerenciador de pacotes é mantido em um diretório ''/gnu/store'', onde somente o [[Daemon (computação)|daemon]] Guix tem acesso de gravação. Isso é obtido por meio de montagens de vinculação especializadas, onde o Store como um sistema de arquivos é montado [[Permissões de sistema de arquivos|somente para leitura]], proibindo interferência até mesmo do usuário root, enquanto o daemon Guix remonta o Store como leitura/gravação em seu próprio namespace privado. Guix conversa com esse daemon para construir coisas ou buscar substitutos, que são todos mantidos na loja. Os usuários são desencorajados a mexer manualmente na loja remontando-a como gravável, pois isso anula todo o propósito da loja.

Guix - como Nix - construiu instalações de coleta de lixo para ajudar a podar itens ''mortos'' da loja e manter os ''vivos'' . <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-gc.html#Invoking-guix-gc|titulo=Invoking guix gc|acessodata=16 May 2019|website=gnu.org}}</ref>

Este é um exemplo de uma definição de pacote para o hello-package:<syntaxhighlight lang="scheme">
(define-public hello
(package
(name "hello")
(version "2.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/hello/hello-" version
".tar.gz"))
(sha256
(base32
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
(build-system gnu-build-system)
(synopsis "Hello, GNU world: An example GNU package")
(description
"GNU Hello prints the message \"Hello, world!\" and then exits. It
serves as an example of standard GNU coding practices. As such, it supports
command-line arguments, multiple languages, and so on.")
(home-page "https://www.gnu.org/software/hello/")
(license gpl3+)))

</syntaxhighlight>Foi escrito usando Guile. As receitas do pacote podem ser facilmente inspecionadas (executando, por exemplo, ''guix edit hello'' ) e alteradas no Guix, tornando o sistema transparente e muito fácil de modificar.

Herdado do design do Nix, toda manipulação de itens da loja é independente uma da outra, e os diretórios da loja começam com um hash codificado em base32 do código-fonte da derivação junto com suas entradas.

== Perfis ==
O pacote Guix usa gerações de perfis, que são uma coleção de links simbólicos para itens específicos da loja, compreendendo o que o usuário instalou no perfil. Cada vez que um pacote é instalado ou removido, uma nova geração será construída.

Por exemplo, o perfil de um usuário que instalou apenas o GNU Hello contém links para o item da loja que contém a versão do hello instalada com o GUIX usado no momento.

Por exemplo, na versão c087a90e06d7b9451f802323e24deb1862a21e0f do guix, isso corresponde ao seguinte item: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10 (compilado a partir da receita acima).

Além dos links simbólicos, cada perfil criado pelo guix também contém uma união de todos os manuais de informações, páginas de manual, ícones, fontes, etc. para que o usuário possa navegar pela documentação e ter acesso a todos os ícones e fontes instalados.

Os links simbólicos padrão para gerações de perfil são armazenados em ''/var/guix'' no sistema de arquivos.

=== Vários perfis de usuário ===
O usuário pode criar qualquer número de perfis invocando{{Kbd|guix package -p PROFILE-NAME COMMAND}} . Um novo diretório com o nome do perfil e os links simbólicos de geração do perfil será criado no diretório atual.

== Reverter ==
O pacote Guix permite a reversão instantânea para uma geração de perfil anterior, alterando o link simbólico para uma geração de perfil anterior. <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-package.html#Invoking-guix-package|titulo=Invoking guix package|acessodata=16 May 2019|website=gnu.org}}</ref> Os perfis também são armazenados na loja, por exemplo, este item é um perfil que contém hello acima: /gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (criado e ativado ao executar ''guix install hello'' ).

O shell Guix permite que o usuário entre facilmente em um ambiente onde todos os pacotes necessários para o desenvolvimento de software estão presentes, sem obstruir o perfil padrão do usuário com dependências para vários projetos. <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-shell.html|titulo=Invoking guix shell|acessodata=22 Nov 2023|website=gnu.org}}</ref>

Por exemplo, correndo{{Kbd|guix shell --development hello}} entra em um ambiente descartável onde tudo o que é necessário para compilar ''hello'' no guix está presente (gcc, guile, etc.).

Sem o{{Kbd|--development}} sinalizador, apenas o pacote ''hello'' seria instalado e não suas dependências de compilação. Isto substitui o{{Kbd|guix environment}}comando , que instala as dependências de um pacote por padrão, pois foi considerado mais intuitivo para o comando instalar os pacotes especificados por padrão e instalar apenas dependências de desenvolvimento com um sinalizador. <ref>{{Citar web|url=https://guix.gnu.org/blog/2021/from-guix-environment-to-guix-shell/|titulo=From 'guix environment' to 'guix shell'|acessodata=22 Nov 2023|website=gnu.org}}</ref>

=== Ambiente de desenvolvimento persistente ===
Se você quiser um ambiente persistente com root gc que não seja coletado como lixo na próxima execução do guix gc, você pode criar uma raiz:

Por exemplo, correndo{{Kbd|1=guix shell --root=hello-root --development hello}} entra em um ambiente onde tudo o que é necessário para compilar o guix está presente (gcc, guile, etc.) e registrado como root no diretório atual (por meio de links simbólicos para os itens no armazenamento).

== Pacote ==
O pacote Guix permite que o usuário agrupe itens de armazenamento e os envie como uma imagem binária do docker, um [[Tar (computação)|tarball]] relocável, um [[.deb|arquivo de pacote Debian]] ou um binário [[SquashFS|squashfs]] . <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pack.html#Invoking-guix-pack|titulo=Invoking guix pack|acessodata=3 September 2024|website=gnu.org}}</ref>

== Gráfico ==
O gráfico Guix permite ao usuário visualizar diferentes gráficos dos pacotes e suas dependências. <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-graph.html#Invoking-guix-graph|titulo=Invoking guix graph|acessodata=16 May 2019|website=gnu.org}}</ref>

== Sistema Guix (sistema operacional) ==
{{Info/SO
|logotipo = Guix logo.svg
|captura_de_tela = Guixsd-xfce-icecat-emacs.png
|ui =
|website = {{URL|https://guix.gnu.org/}}
}}

=== Suporte de arquitetura ===
As seguintes arquiteturas de CPU são suportadas no momento:

* [[:en:IA-32|IA-32]]
* [[:en:X86-64|x86-64]]
* [[:en:ARMv7|ARMv7]]<ref>{{cite web|url=https://www.gnu.org/software/guix/blog/2017/porting-guixsd-to-armv7/|title=Porting GuixSD to ARMv7|access-date=February 17, 2018|author=Mathieu Othacehe|archive-url=https://web.archive.org/web/20171225124534/https://www.gnu.org/software/guix/blog/2017/porting-guixsd-to-armv7/|archive-date=December 25, 2017|url-status=live}}</ref>
* [[:en:AArch64|AArch64]]
* [[:en:POWER9|POWER9]]<ref>{{cite web|last2=Le Bouter|first2=Léo|url=https://guix.gnu.org/en/blog/2021/new-supported-platform-powerpc64le-linux/|title=New Supported Platform: powerpc64le-linux|date=April 12, 2021|access-date=October 6, 2021|archive-url=https://web.archive.org/web/20210516202248/https://guix.gnu.org/en/blog/2021/new-supported-platform-powerpc64le-linux/|archive-date=May 16, 2021|url-status=live|last1=Marusich|first1=Chris}}</ref>
* [[:en:RISC-V|RISC-V 64]]<ref name="manual3">{{cite web|url=https://guix.gnu.org/manual/en/html_node/Supported-Platforms.html|title=Supported Platforms (GNU Guix Reference Manual)|access-date=2024-10-23|website=GNU Guix}}</ref>
* [[:en:MIPS64|MIPS64]]<ref name="manual3" />

=== Serviços do sistema ===
Os serviços do sistema, que são definidos no Esquema Guile, <ref>{{Citar web|url=http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services|titulo=guix.git|acessodata=11 May 2019|website=git.savannah.gnu.org|arquivourl=https://web.archive.org/web/20190511160745/http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/services|arquivodata=May 11, 2019|urlmorta=live}}</ref> permitem ao usuário compor declarativamente a configuração de [[Daemon (computação)|daemons]] e serviços de segundo plano e especificar configurações. Isso permite que o usuário, dentro de um único arquivo de configuração ou configuração modularizada, configure todo o sistema operacional (por exemplo, ter um proxy [[Tor (rede de anonimato)|Tor]], um servidor [[Secure Shell|ssh]] e um servidor web servindo guix-web via [[nginx]] em uma porta específica na inicialização). Eles podem: <ref name="lists.gnu.org">{{Citar lista de discussão|url=https://lists.gnu.org/archive/html/help-guix/2019-05/msg00262.html|titulo=Re: Help with preparing to move from Arch Linux to Guix}}</ref>

* gerar arquivos no sistema de arquivos (necessário para alguns aplicativos, por exemplo, arquivos em ''/etc'' )
* execute qualquer código para configurar daemons
* crie contas específicas de usuários e grupos (por exemplo, um usuário de banco de dados para [[PostgreSQL]] )

=== Sistema de inicialização GNU Shepherd ===
O sistema Guix usa o GNU Daemon Shepherd, anteriormente conhecido como "dmd" ("Daemon Managing Daemons"), como seu sistema [[init]], que é desenvolvido em conjunto com o Guix e é escrito e configurável em [[GNU Guile|Guile]] . <ref>{{Citar web|url=https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00274.html|titulo=guix-devel mailing lists|acessodata=2016-11-05|arquivourl=https://web.archive.org/web/20190919005906/https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00274.html|arquivodata=September 19, 2019|urlmorta=live}}</ref> Ele fornece funcionalidade de espaço do usuário de forma assíncrona como serviços, que no Shepherd são funções genéricas e [[Tipo de dado|tipos de dados]] [[Objeto (ciência da computação)|de objeto]] que ele usa para estender o sistema operacional base de uma maneira definida. Ao contrário do [[systemd]], um processo de pastoreio do espaço do usuário é executado como o usuário. No centro do modelo Shepherd de inicialização [[Espaço de usuário|do espaço do usuário]] está o conceito de ''extensão'', uma forma de componibilidade pela qual os serviços são projetados para serem sobrepostos a outros serviços, aumentando-os com comportamentos mais elaborados ou especializados, conforme desejado. <ref name="auto">{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition|titulo=GNU Guix Reference Manual: Service Composition|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20190101055440/https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition|arquivodata=January 1, 2019|urlmorta=live}}</ref> Isso expressa os relacionamentos de dependência baseados em instanciação encontrados em muitos sistemas init modernos, <ref>{{Citar web|url=https://fedoramagazine.org/systemd-unit-dependencies-and-order/|titulo=systemd: Unit Dependencies and Order|data=November 25, 2015|acessodata=2016-11-05|publicado=Fedora Magazine|arquivourl=https://web.archive.org/web/20200801020502/https://fedoramagazine.org/systemd-unit-dependencies-and-order/|arquivodata=August 1, 2020|urlmorta=live}}</ref> tornando o sistema modular, mas também permite que os serviços interajam variadicamente com outros serviços de maneiras arbitrárias, por exemplo, um serviço que estende dois outros serviços, ''exigindo'' apenas que um esteja presente, mas estendendo prontamente o segundo se for instanciado posteriormente sem a necessidade de qualquer reconfiguração ou configuração adicional.

Shepherd também fornece ''serviços virtuais'' que permitem [[Ligação dinâmica (programação orientada a objetos)|o despacho dinâmico]] sobre uma classe de objetos de serviço relacionados, como todos aqueles que instanciam um [[Agente de transporte de correio eletrônico|agente de transferência de correio]] (MTA) para o sistema. <ref>{{Citar web|url=https://www.gnu.org/software/shepherd/manual/html_node/Jump-Start.html#Jump-Start|titulo=The GNU Shepherd Manual: Jump Start|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20200801025359/https://www.gnu.org/software/shepherd/manual/html_node/Jump-Start.html#Jump-Start|arquivodata=August 1, 2020|urlmorta=live}}</ref> Um sistema governado pelo daemon Shepherd pode representar seu espaço de usuário como um [[Grafos acíclicos dirigidos|gráfico acíclico direcionado]], com o "serviço de sistema", que é responsável pelas fases iniciais de inicialização e inicialização, como sua raiz, e todos os serviços inicializados posteriormente como extensões da funcionalidade do serviço de sistema, direta ou transitivamente sobre outros serviços. <ref name="auto">{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition|titulo=GNU Guix Reference Manual: Service Composition|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20190101055440/https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition|arquivodata=January 1, 2019|urlmorta=live}}<cite class="citation web cs1" data-ve-ignore="true">[https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition "GNU Guix Reference Manual: Service Composition"]. GNU Project. [https://web.archive.org/web/20190101055440/https://www.gnu.org/software/guix/manual/html_node/Service-Composition.html#Service-Composition Archived] from the original on January 1, 2019<span class="reference-accessdate">. Retrieved <span class="nowrap">2016-11-05</span></span>.</cite></ref> <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Shepherd-Services.html#Shepherd-Services|titulo=GNU Guix Reference Manual: Shepherd Services|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20190101055405/https://www.gnu.org/software/guix/manual/html_node/Shepherd-Services.html#Shepherd-Services|arquivodata=January 1, 2019|urlmorta=live}}</ref>

Ele foi projetado para ser altamente programável pelo administrador do sistema usando Guile, mas também pode ser usado para gerenciar perfis por usuário de daemons e serviços sem privilégios. <ref>{{Citar web|url=https://www.gnu.org/software/shepherd/manual/html_node/Introduction.html#Introduction|titulo=The GNU Shepherd Manual|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20200801034906/https://www.gnu.org/software/shepherd/manual/html_node/Introduction.html#Introduction|arquivodata=August 1, 2020|urlmorta=live}}</ref> Seus serviços e configuração são armazenados uniformemente como código [[Scheme]] orientado a objetos e, embora um conjunto básico de serviços seja fornecido com o Sistema Guix básico, <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Services.html#Services|titulo=GNU Guix Reference Manual: Services|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20181225093221/https://www.gnu.org/software/guix/manual/html_node/Services.html#Services|arquivodata=December 25, 2018|urlmorta=live}}</ref> novos serviços arbitrários podem ser declarados de forma flexível e, por meio do [[Programação orientada a objetos|sistema de objetos]] de Guile, GOOPS, os serviços existentes podem ser redefinidos a critério do usuário, solicitando ao Shepherd que reescreva dinamicamente os serviços de maneiras especificadas na instanciação. <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Service-Types-and-Services.html#Service-Types-and-Services|titulo=GNU Guix Reference Manual: Service Types and Services|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20190105220243/https://www.gnu.org/software/guix/manual/html_node/Service-Types-and-Services.html#Service-Types-and-Services|arquivodata=January 5, 2019|urlmorta=live}}</ref> <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/html_node/Using-the-Configuration-System.html#Using-the-Configuration-System|titulo=GNU Guix Reference Manual: Using the Configuration System|acessodata=2016-11-05|publicado=GNU Project|arquivourl=https://web.archive.org/web/20190429053100/http://www.gnu.org/software/guix/manual/html_node/Using-the-Configuration-System.html#Using-the-Configuration-System|arquivodata=April 29, 2019|urlmorta=live}}</ref>

O GNU Shepherd foi originalmente projetado para funcionar com [[GNU Hurd|o GNU Hurd]] e mais tarde foi adotado pelo Guix System. <ref>{{Citar web|url=https://www.gnu.org/software/shepherd/|titulo=GNU Shepherd|acessodata=2016-02-12|publicado=GNU project|arquivourl=https://web.archive.org/web/20160212224150/https://www.gnu.org/software/shepherd/|arquivodata=February 12, 2016|urlmorta=live}}</ref>

=== Reverter ===
Semelhante ao recurso de reversão do Nix, se uma atualização do sistema deixar os usuários com um sistema quebrado, eles podem facilmente reverter pacotes individuais, bem como todo o estado do sistema, com um comando simples:<nowiki></br></nowiki> <code>guix package --roll-back</code> <ref>{{Citar web|url=https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html|titulo=Invoking guix system|acessodata=27 April 2019|website=www.gnu.org|arquivourl=https://web.archive.org/web/20190526043643/http://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-system.html|arquivodata=May 26, 2019|urlmorta=live}}</ref><nowiki></br></nowiki> Isso significa que o tipo de canal estável que é muito comum em outras distribuições Linux não é mais necessário para usuários que desejam relatar um bug e esperar alguns minutos ao tentar atualizar via ''guix pull'' . Isso é realizado por uma combinação do [[Sistema gestor de pacotes|gerenciador de pacotes]] funcionais do Guix, que trata cada pacote e configuração do sistema como uma entidade imutável e reproduzível, <ref>{{Citar arXiv|arxiv=1305.4584|classe=cs.PL|nome=Ludovic|sobrenome=Courtès|titulo=Functional Package Management with Guix|data=2013}}</ref> e o sistema de geração que mantém um histórico de configurações do sistema como "gerações". Essas gerações são armazenadas como perfis separados, que permitem que você volte para qualquer configuração anterior, <ref>{{Citar web|url=https://guix.gnu.org/en/blog/2018/multi-dimensional-transactions-and-rollbacks-oh-my/|titulo=Multi-dimensional transactions and rollbacks, oh my!|website=guix.gnu.org}}</ref> e você pode ver essas gerações com<nowiki></br></nowiki> <code>guix package --list-generations</code> .

=== Recepção ===
Jesse Smith do DistroWatch Weekly analisou o GNU Guix System 0.15.0 (na época chamado GuixSD) e disse: "O GuixSD tem um gerenciador de pacotes que eu gosto", mas criticou o suporte limitado de hardware e sua documentação limitada. <ref>{{Citar periódico |url=https://distrowatch.com/weekly.php?issue=20180827#guixsd |título=Guix System Distribution 0.15.0 and ReactOS 0.4.9 |acessodata=2018-08-30 |periódico=distrowatch.com |número=778 |ultimo=Smith |primeiro=Jesse |arquivourl=https://web.archive.org/web/20190730123927/https://distrowatch.com/weekly.php?issue=20180827#guixsd |arquivodata=July 30, 2019}}</ref> Desde então, a documentação foi expandida e melhorada com vídeos <ref>{{Citar web|url=http://guix.gnu.org/videos/|titulo=Videos|acessodata=2020-03-03|arquivourl=https://web.archive.org/web/20200801025330/http://guix.gnu.org/videos/|arquivodata=August 1, 2020|urlmorta=live}}</ref> e um livro de receitas <ref>{{Citar web|url=http://guix.gnu.org/cookbook/|titulo=Cookbook|acessodata=2020-03-03|arquivourl=https://web.archive.org/web/20200801021809/http://guix.gnu.org/cookbook/|arquivodata=August 1, 2020|urlmorta=live}}</ref> em seis idiomas com tutoriais, guias de instruções e exemplos.

Uma área específica onde o Guix pode oferecer ao usuário melhorias em relação aos gerenciadores de pacotes tradicionais é no campo de fluxos de trabalho científicos reproduzíveis, principalmente em [[Computação de alto desempenho|Computação de Alto Desempenho]] <ref>{{Citar web|url=https://hpc.guix.info/blog/|titulo=Guix-HPC — Reproducible software deployment for high-performance computing — Blog|acessodata=2024-11-05|website=hpc.guix.info|lingua=en}}</ref> . Dessa forma, o Guix ofereceria uma maneira de compartilhar um ambiente computacional reproduzível, ou seja, o Guix usando uma receita para o software/ambiente científico específico forneceria todas as informações necessárias para descrever exclusivamente a árvore de dependências para construir e executar esse software <ref>{{Citar periódico |url=https://www.nature.com/articles/s41597-022-01720-9 |título=Toward practical transparent verifiable and long-term reproducible research using Guix |data=2022-10-04 |periódico=Scientific Data |número=1 |ultimo=Vallet |primeiro=Nicolas |ultimo2=Michonneau |primeiro2=David |paginas=597 |lingua=en |doi=10.1038/s41597-022-01720-9 |issn=2052-4463 |ultimo3=Tournier |primeiro3=Simon |volume=9}}</ref> . Isso não seria fácil de conseguir, por exemplo, em outros sistemas mistos com vários gerenciadores de pacotes para cada linguagem de programação. No entanto, isso fornece apenas uma condição necessária, mas não suficiente, para que os fluxos de trabalho científicos sejam reproduzíveis, pois é necessário incorporar a coleta e o processamento de dados ao fluxo de trabalho. Se isso for adicionado como parte da receita Guix, poderá satisfazer os rigorosos requisitos de reprodutibilidade.


== História ==
== História ==
O projeto foi iniciado em junho de 2012 por Ludovic Courtès, um dos hackers do GNU Guile. <ref>{{Citar lista de discussão|url=http://lists.gnu.org/archive/html/gnu-system-discuss/2012-06/msg00003.html|titulo=A GNU Distribution|primeiro=Richard}}</ref>
Em novembro de 2012, o [[Projeto GNU]] anunciou o primeiro lançamento do GNU Guix, gerenciador de pacotes funcional baseado no Nix que proporciona, entre outras coisas, APIs na linguagem [[GNU Guile|Guile]] [[Scheme]].<ref>{{citar lista de discussão|último =Courtès|primeiro =Ludovic|título=Introducing GNU Guix|publicado=gnu-system-discuss|data=2012-11-23|url=http://lists.gnu.org/archive/html/gnu-system-discuss/2012-11/msg00000.html}}</ref> O projeto foi iniciado em junho de 2012 por Ludovic Courtès, um dos principais desenvolvedores do GNU Guile.<ref>{{citar lista de discussão|último =Stallman |primeiro =Richard |título=A GNU Distribution |publicado=gnu-system-discuss|data=2012-06-05|url=http://lists.gnu.org/archive/html/gnu-system-discuss/2012-06/msg00003.html}}</ref> Em agosto de 2015, foi anunciado que o Guix havia sido portado para o [[GNU Hurd]],<ref name="gsoc">{{citar lista de discussão|url=https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00379.html|título=[GSoC update] Porting Guix to GNU/Hurd|data=20 de agosto de 2015|primeiro =Manolis|último =Ragkousis|publicado=guix-devel|língua=en|acessodata=20 de agosto de 2015}}</ref> tornando-se o primeiro gerenciador de pacotes nativo para o Hurd.<ref name="phoro">{{citar web|url=https://www.phoronix.com/scan.php?page=news_item&px=GNU-Hurd-Gets-Guix|título=GNU Guix Package Manager Ported To GNU Hurd|data=20 de agosto de 2015|publicado=[[Phoronix]]|acessodata=28 de janeiro de 2017}}</ref>


Em 20 de agosto de 2015, foi anunciado que o Guix havia sido portado para [[GNU Hurd|o GNU Hurd]] . <ref name="gsoc">{{Citar lista de discussão|url=https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00379.html|titulo=[GSoC update] Porting Guix to GNU/Hurd|primeiro=Manolis}}</ref>
== GuixSD ==
{{Artigo principal|Guix System Distribution}}
O projeto Guix também desenvolve o ''Guix System Distribution'' (abreviado GuixSD<ref>{{citar lista de discussão|título=What to call Guix? |publicado=gnu-system-discuss |data=2015-01-15 |url=http://lists.gnu.org/archive/html/gnu-system-discuss/2015-01/threads.html}}</ref>), uma distribuição GNU/Linux instalável e completa que utiliza o núcleo [[GNU Linux-libre|Linux-libre]] e o sistema de inicialização [[GNU Shepherd]].


== Ver também ==
== Releases ==
O projeto não tem um cronograma de lançamento fixo e até agora era lançado aproximadamente a cada 6 meses.
{{Correlatos|collapsible=collapsed|display=GNU Guix|wikt=no|b=no
|commons=Category:GNU Guix|d=Q18968627|m=no|mw=no|n=no|q=no|s=Functional Package Management with Guix|v=no}}
* [[RPM (Linux)]]


Há planos para um próximo lançamento 1.5.0, já que houve um intervalo de 20 meses desde o lançamento 1.4.0.
{{Referências}}


== Ligações externas ==
== Veja também ==
{{Portal|Free and open-source software}}{{Portal|Free and open-source software}}
{{Website oficial|https://www.gnu.org/software/guix/}}


* [[Debian|Debian GNU/Hurd]]
{{GNU}}
* NixOS – Um sistema operacional similar, que inspirou o GNU Guix <ref>{{Citar web|url=https://www.gnu.org/software/guix/about/|titulo=About — GuixSD|acessodata=2018-05-03|website=www.gnu.org|lingua=en}}</ref>
{{Sistemas de gestão de pacotes Linux}}
* [[Comparação entre distribuições Linux|Comparação de distribuições Linux]]
{{Portal3|Software livre|Linux|Tecnologias de informação}}
{{Limpar}}{{Reflist}}
<references responsive="1"></references>


* {{Website oficial}}
[[Categoria:Software de 2013]]
* {{Distrowatch|guixsd}}
* [https://www.gnu.org/software/guix/packages List of Guix packages]
{{GNU}}{{Package management systems}}{{Linux-distro}}
[[Categoria:Software do Projeto GNU]]
[[Categoria:Programação funcional]]
[[Categoria:Programação funcional]]
[[Categoria:Software do Projecto GNU]]
[[Categoria:Software livre]]
[[Categoria:Programas de computador]]
[[Categoria:Gestores de pacotes livres]]
[[Categoria:Software livre programado em Lisp]]
[[Categoria:Software livre programado em Lisp]]
[[Categoria:Gestores de pacotes livres]]
[[Categoria:Software de 2013]]
[[Categoria:!Páginas com traduções não revistas]]

Edição atual tal como às 12h58min de 9 de novembro de 2024

GNU Guix
Logótipo
GNU Guix
Página oficial guix.gnu.org/en/

GNU Guix ( /ɡks/ [1] ) é um gerenciador de pacotes multiplataforma funcional e uma ferramenta para instanciar e gerenciar sistemas operacionais do tipo Unix, baseado no gerenciador de pacotes Nix . As receitas de configuração e pacotes são escritas no Guile Scheme . GNU Guix é o gerenciador de pacotes padrão da distribuição do sistema GNU Guix . [2]

Diferentemente dos gerenciadores de pacotes tradicionais, o Guix (como o Nix) utiliza um modelo de implantação puramente funcional, onde o software é instalado em diretórios exclusivos gerados por meio de hashes criptográficos . Todas as dependências de cada software estão incluídas em cada hash. [3] Isso resolve o problema do inferno de dependências, permitindo que várias versões do mesmo software coexistam, o que torna os pacotes portáteis e reproduzíveis . A realização de cálculos científicos em uma configuração Guix foi proposta como uma resposta promissora à crise de replicação . [4] [5]

O desenvolvimento do GNU Guix está interligado com o Sistema GNU Guix, [6] uma distribuição de sistema operacional instalável usando o kernel Linux-libre e o sistema init GNU Shepherd . [7]

Características gerais

[editar | editar código-fonte]

Os pacotes Guix são definidos por meio de APIs funcionais do Guile Scheme, projetadas especificamente para gerenciamento de pacotes. As dependências são rastreadas diretamente nesta linguagem por meio de valores especiais chamados "derivações", que são avaliados pelo daemon Guix de forma preguiçosa . O Guix rastreia essas referências automaticamente para que os pacotes instalados possam ser coletados como lixo quando nenhum outro pacote depender deles. Ao custo de maiores requisitos de armazenamento, todas as atualizações no Guix têm a garantia de serem atômicas e podem ser revertidas.

O recurso de reversão do Guix é herdado do design do Nix e raramente é encontrado em outros sistemas operacionais, pois requer uma abordagem pouco ortodoxa sobre como o sistema deve funcionar (veja MicroOS ). O gerenciador de pacotes Guix, como o Nix, pode, no entanto, ser usado em muitas distribuições como Debian e Parabola . [8] [9] Isso também permite que vários usuários instalem software com segurança no mesmo sistema sem privilégios de administrador.

Comparado aos gerenciadores de pacotes tradicionais, os repositórios de pacotes Guix podem crescer consideravelmente e, portanto, exigir mais largura de banda; embora, comparado às soluções de contêiner (como o Docker ), que também são comumente empregadas para resolver o inferno das dependências, o Guix seja mais enxuto e esteja em conformidade com práticas como não se repita e fonte única da verdade . Se o usuário optar por construir tudo a partir do código-fonte, será necessário ainda mais espaço de armazenamento e largura de banda.

Herdado do design do Nix, a maior parte do conteúdo do gerenciador de pacotes é mantido em um diretório /gnu/store, onde somente o daemon Guix tem acesso de gravação. Isso é obtido por meio de montagens de vinculação especializadas, onde o Store como um sistema de arquivos é montado somente para leitura, proibindo interferência até mesmo do usuário root, enquanto o daemon Guix remonta o Store como leitura/gravação em seu próprio namespace privado. Guix conversa com esse daemon para construir coisas ou buscar substitutos, que são todos mantidos na loja. Os usuários são desencorajados a mexer manualmente na loja remontando-a como gravável, pois isso anula todo o propósito da loja.

Guix - como Nix - construiu instalações de coleta de lixo para ajudar a podar itens mortos da loja e manter os vivos . [10]

Este é um exemplo de uma definição de pacote para o hello-package:

(define-public hello
  (package
   (name "hello")
   (version "2.10")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/hello/hello-" version
                                ".tar.gz"))
            (sha256
             (base32
              "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
   (build-system gnu-build-system)
   (synopsis "Hello, GNU world: An example GNU package")
   (description
    "GNU Hello prints the message \"Hello, world!\" and then exits.  It
 serves as an example of standard GNU coding practices.  As such, it supports
 command-line arguments, multiple languages, and so on.")
   (home-page "https://www.gnu.org/software/hello/")
   (license gpl3+)))

Foi escrito usando Guile. As receitas do pacote podem ser facilmente inspecionadas (executando, por exemplo, guix edit hello ) e alteradas no Guix, tornando o sistema transparente e muito fácil de modificar.

Herdado do design do Nix, toda manipulação de itens da loja é independente uma da outra, e os diretórios da loja começam com um hash codificado em base32 do código-fonte da derivação junto com suas entradas.

O pacote Guix usa gerações de perfis, que são uma coleção de links simbólicos para itens específicos da loja, compreendendo o que o usuário instalou no perfil. Cada vez que um pacote é instalado ou removido, uma nova geração será construída.

Por exemplo, o perfil de um usuário que instalou apenas o GNU Hello contém links para o item da loja que contém a versão do hello instalada com o GUIX usado no momento.

Por exemplo, na versão c087a90e06d7b9451f802323e24deb1862a21e0f do guix, isso corresponde ao seguinte item: /gnu/store/md2plii4g5sk66wg9cgwc964l3xwhrm9-hello-2.10 (compilado a partir da receita acima).

Além dos links simbólicos, cada perfil criado pelo guix também contém uma união de todos os manuais de informações, páginas de manual, ícones, fontes, etc. para que o usuário possa navegar pela documentação e ter acesso a todos os ícones e fontes instalados.

Os links simbólicos padrão para gerações de perfil são armazenados em /var/guix no sistema de arquivos.

Vários perfis de usuário

[editar | editar código-fonte]

O usuário pode criar qualquer número de perfis invocandoguix package -p PROFILE-NAME COMMAND . Um novo diretório com o nome do perfil e os links simbólicos de geração do perfil será criado no diretório atual.

O pacote Guix permite a reversão instantânea para uma geração de perfil anterior, alterando o link simbólico para uma geração de perfil anterior. [11] Os perfis também são armazenados na loja, por exemplo, este item é um perfil que contém hello acima: /gnu/store/b4wipjlsapvnijmbawl7sh76087vpl4n-profile (criado e ativado ao executar guix install hello ).

O shell Guix permite que o usuário entre facilmente em um ambiente onde todos os pacotes necessários para o desenvolvimento de software estão presentes, sem obstruir o perfil padrão do usuário com dependências para vários projetos. [12]

Por exemplo, correndoguix shell --development hello entra em um ambiente descartável onde tudo o que é necessário para compilar hello no guix está presente (gcc, guile, etc.).

Sem o--development sinalizador, apenas o pacote hello seria instalado e não suas dependências de compilação. Isto substitui oguix environmentcomando , que instala as dependências de um pacote por padrão, pois foi considerado mais intuitivo para o comando instalar os pacotes especificados por padrão e instalar apenas dependências de desenvolvimento com um sinalizador. [13]

Ambiente de desenvolvimento persistente

[editar | editar código-fonte]

Se você quiser um ambiente persistente com root gc que não seja coletado como lixo na próxima execução do guix gc, você pode criar uma raiz:

Por exemplo, correndoguix shell --root=hello-root --development hello entra em um ambiente onde tudo o que é necessário para compilar o guix está presente (gcc, guile, etc.) e registrado como root no diretório atual (por meio de links simbólicos para os itens no armazenamento).

O pacote Guix permite que o usuário agrupe itens de armazenamento e os envie como uma imagem binária do docker, um tarball relocável, um arquivo de pacote Debian ou um binário squashfs . [14]

O gráfico Guix permite ao usuário visualizar diferentes gráficos dos pacotes e suas dependências. [15]

Sistema Guix (sistema operacional)

[editar | editar código-fonte]
GNU Guix
Logótipo
GNU Guix
Captura de tela
GNU Guix
Linguagem Scheme, C
Página oficial guix.gnu.org

Suporte de arquitetura

[editar | editar código-fonte]

As seguintes arquiteturas de CPU são suportadas no momento:

Serviços do sistema

[editar | editar código-fonte]

Os serviços do sistema, que são definidos no Esquema Guile, [19] permitem ao usuário compor declarativamente a configuração de daemons e serviços de segundo plano e especificar configurações. Isso permite que o usuário, dentro de um único arquivo de configuração ou configuração modularizada, configure todo o sistema operacional (por exemplo, ter um proxy Tor, um servidor ssh e um servidor web servindo guix-web via nginx em uma porta específica na inicialização). Eles podem: [20]

  • gerar arquivos no sistema de arquivos (necessário para alguns aplicativos, por exemplo, arquivos em /etc )
  • execute qualquer código para configurar daemons
  • crie contas específicas de usuários e grupos (por exemplo, um usuário de banco de dados para PostgreSQL )

Sistema de inicialização GNU Shepherd

[editar | editar código-fonte]

O sistema Guix usa o GNU Daemon Shepherd, anteriormente conhecido como "dmd" ("Daemon Managing Daemons"), como seu sistema init, que é desenvolvido em conjunto com o Guix e é escrito e configurável em Guile . [21] Ele fornece funcionalidade de espaço do usuário de forma assíncrona como serviços, que no Shepherd são funções genéricas e tipos de dados de objeto que ele usa para estender o sistema operacional base de uma maneira definida. Ao contrário do systemd, um processo de pastoreio do espaço do usuário é executado como o usuário. No centro do modelo Shepherd de inicialização do espaço do usuário está o conceito de extensão, uma forma de componibilidade pela qual os serviços são projetados para serem sobrepostos a outros serviços, aumentando-os com comportamentos mais elaborados ou especializados, conforme desejado. [22] Isso expressa os relacionamentos de dependência baseados em instanciação encontrados em muitos sistemas init modernos, [23] tornando o sistema modular, mas também permite que os serviços interajam variadicamente com outros serviços de maneiras arbitrárias, por exemplo, um serviço que estende dois outros serviços, exigindo apenas que um esteja presente, mas estendendo prontamente o segundo se for instanciado posteriormente sem a necessidade de qualquer reconfiguração ou configuração adicional.

Shepherd também fornece serviços virtuais que permitem o despacho dinâmico sobre uma classe de objetos de serviço relacionados, como todos aqueles que instanciam um agente de transferência de correio (MTA) para o sistema. [24] Um sistema governado pelo daemon Shepherd pode representar seu espaço de usuário como um gráfico acíclico direcionado, com o "serviço de sistema", que é responsável pelas fases iniciais de inicialização e inicialização, como sua raiz, e todos os serviços inicializados posteriormente como extensões da funcionalidade do serviço de sistema, direta ou transitivamente sobre outros serviços. [22] [25]

Ele foi projetado para ser altamente programável pelo administrador do sistema usando Guile, mas também pode ser usado para gerenciar perfis por usuário de daemons e serviços sem privilégios. [26] Seus serviços e configuração são armazenados uniformemente como código Scheme orientado a objetos e, embora um conjunto básico de serviços seja fornecido com o Sistema Guix básico, [27] novos serviços arbitrários podem ser declarados de forma flexível e, por meio do sistema de objetos de Guile, GOOPS, os serviços existentes podem ser redefinidos a critério do usuário, solicitando ao Shepherd que reescreva dinamicamente os serviços de maneiras especificadas na instanciação. [28] [29]

O GNU Shepherd foi originalmente projetado para funcionar com o GNU Hurd e mais tarde foi adotado pelo Guix System. [30]

Semelhante ao recurso de reversão do Nix, se uma atualização do sistema deixar os usuários com um sistema quebrado, eles podem facilmente reverter pacotes individuais, bem como todo o estado do sistema, com um comando simples:</br> guix package --roll-back [31]</br> Isso significa que o tipo de canal estável que é muito comum em outras distribuições Linux não é mais necessário para usuários que desejam relatar um bug e esperar alguns minutos ao tentar atualizar via guix pull . Isso é realizado por uma combinação do gerenciador de pacotes funcionais do Guix, que trata cada pacote e configuração do sistema como uma entidade imutável e reproduzível, [32] e o sistema de geração que mantém um histórico de configurações do sistema como "gerações". Essas gerações são armazenadas como perfis separados, que permitem que você volte para qualquer configuração anterior, [33] e você pode ver essas gerações com</br> guix package --list-generations .

Jesse Smith do DistroWatch Weekly analisou o GNU Guix System 0.15.0 (na época chamado GuixSD) e disse: "O GuixSD tem um gerenciador de pacotes que eu gosto", mas criticou o suporte limitado de hardware e sua documentação limitada. [34] Desde então, a documentação foi expandida e melhorada com vídeos [35] e um livro de receitas [36] em seis idiomas com tutoriais, guias de instruções e exemplos.

Uma área específica onde o Guix pode oferecer ao usuário melhorias em relação aos gerenciadores de pacotes tradicionais é no campo de fluxos de trabalho científicos reproduzíveis, principalmente em Computação de Alto Desempenho [37] . Dessa forma, o Guix ofereceria uma maneira de compartilhar um ambiente computacional reproduzível, ou seja, o Guix usando uma receita para o software/ambiente científico específico forneceria todas as informações necessárias para descrever exclusivamente a árvore de dependências para construir e executar esse software [38] . Isso não seria fácil de conseguir, por exemplo, em outros sistemas mistos com vários gerenciadores de pacotes para cada linguagem de programação. No entanto, isso fornece apenas uma condição necessária, mas não suficiente, para que os fluxos de trabalho científicos sejam reproduzíveis, pois é necessário incorporar a coleta e o processamento de dados ao fluxo de trabalho. Se isso for adicionado como parte da receita Guix, poderá satisfazer os rigorosos requisitos de reprodutibilidade.

O projeto foi iniciado em junho de 2012 por Ludovic Courtès, um dos hackers do GNU Guile. [39]

Em 20 de agosto de 2015, foi anunciado que o Guix havia sido portado para o GNU Hurd . [40]

O projeto não tem um cronograma de lançamento fixo e até agora era lançado aproximadamente a cada 6 meses.

Há planos para um próximo lançamento 1.5.0, já que houve um intervalo de 20 meses desde o lançamento 1.4.0.

  1. «GNU Guix Reference Manual». www.gnu.org. Consultado em 23 April 2018  Verifique data em: |acessodata= (ajuda)
  2. Ludovic Courtès (2013). Functional Package Management with Guix. Madrid, Spain: European Lisp Symposium 
  3. Dolstra, E. The Purely Functional Software Deployment Model. PhD thesis, Faculty of Science, Utrecht, The Netherlands. January 2006. ISBN 90-393-4130-3.
  4. Hinsen, Konrad (July 2020). «Staged computation: the technique you did not know you were using». Computing in Science and Engineering. 22 (4): 99–103. Bibcode:2020CSE....22d..99H. ISSN 1558-366X. doi:10.1109/MCSE.2020.2985508. Consultado em 4 de novembro de 2022  Verifique data em: |data= (ajuda) publicação de acesso livre - leitura gratuita
  5. Vallet, Nicolas; Michonneau, David; Tournier, Simon (4 October 2022). «Toward practical transparent verifiable and long-term reproducible research using Guix» (PDF). Scientific Data. 9 (1). 597 páginas. Bibcode:2022NatSD...9..597V. ISSN 2052-4463. PMC 9532446Acessível livremente. PMID 36195618. doi:10.1038/s41597-022-01720-9. Consultado em 4 de novembro de 2022  Verifique data em: |data= (ajuda) publicação de acesso livre - leitura gratuita
  6. «What to call Guix?» (Lista de grupo de correio) 
  7. «guix-europe». git.savannah.gnu.org. Consultado em 16 May 2019. Arquivado do original em 24 January 2021  Verifique data em: |acessodata=, |arquivodata= (ajuda)
  8. «Guix - Debian Package Tracker» 
  9. «Parabola GNU/Linux-libre - Package Search». www.parabola.nu. Consultado em 14 de setembro de 2021 
  10. «Invoking guix gc». gnu.org. Consultado em 16 May 2019  Verifique data em: |acessodata= (ajuda)
  11. «Invoking guix package». gnu.org. Consultado em 16 May 2019  Verifique data em: |acessodata= (ajuda)
  12. «Invoking guix shell». gnu.org. Consultado em 22 Nov 2023 
  13. «From 'guix environment' to 'guix shell'». gnu.org. Consultado em 22 Nov 2023 
  14. «Invoking guix pack». gnu.org. Consultado em 3 September 2024  Verifique data em: |acessodata= (ajuda)
  15. «Invoking guix graph». gnu.org. Consultado em 16 May 2019  Verifique data em: |acessodata= (ajuda)
  16. Mathieu Othacehe. «Porting GuixSD to ARMv7». Consultado em February 17, 2018. Cópia arquivada em December 25, 2017  Verifique data em: |acessodata=, |arquivodata= (ajuda)
  17. Marusich, Chris; Le Bouter, Léo (April 12, 2021). «New Supported Platform: powerpc64le-linux». Consultado em October 6, 2021. Cópia arquivada em May 16, 2021  Verifique data em: |acessodata=, |arquivodata=, |data= (ajuda)
  18. a b «Supported Platforms (GNU Guix Reference Manual)». GNU Guix. Consultado em 23 de outubro de 2024 
  19. «guix.git». git.savannah.gnu.org. Consultado em 11 May 2019. Arquivado do original em May 11, 2019  Verifique data em: |acessodata=, |arquivodata= (ajuda)
  20. «Re: Help with preparing to move from Arch Linux to Guix» (Lista de grupo de correio) 
  21. «guix-devel mailing lists». Consultado em 5 de novembro de 2016. Arquivado do original em September 19, 2019  Verifique data em: |arquivodata= (ajuda)
  22. a b «GNU Guix Reference Manual: Service Composition». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em January 1, 2019  Verifique data em: |arquivodata= (ajuda) Erro de citação: Código <ref> inválido; o nome "auto" é definido mais de uma vez com conteúdos diferentes
  23. «systemd: Unit Dependencies and Order». Fedora Magazine. November 25, 2015. Consultado em 5 de novembro de 2016. Arquivado do original em August 1, 2020  Verifique data em: |arquivodata=, |data= (ajuda)
  24. «The GNU Shepherd Manual: Jump Start». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em August 1, 2020  Verifique data em: |arquivodata= (ajuda)
  25. «GNU Guix Reference Manual: Shepherd Services». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em January 1, 2019  Verifique data em: |arquivodata= (ajuda)
  26. «The GNU Shepherd Manual». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em August 1, 2020  Verifique data em: |arquivodata= (ajuda)
  27. «GNU Guix Reference Manual: Services». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em December 25, 2018  Verifique data em: |arquivodata= (ajuda)
  28. «GNU Guix Reference Manual: Service Types and Services». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em January 5, 2019  Verifique data em: |arquivodata= (ajuda)
  29. «GNU Guix Reference Manual: Using the Configuration System». GNU Project. Consultado em 5 de novembro de 2016. Arquivado do original em April 29, 2019  Verifique data em: |arquivodata= (ajuda)
  30. «GNU Shepherd». GNU project. Consultado em 12 de fevereiro de 2016. Arquivado do original em February 12, 2016  Verifique data em: |arquivodata= (ajuda)
  31. «Invoking guix system». www.gnu.org. Consultado em 27 April 2019. Arquivado do original em May 26, 2019  Verifique data em: |acessodata=, |arquivodata= (ajuda)
  32. Courtès, Ludovic (2013). «Functional Package Management with Guix». arXiv:1305.4584Acessível livremente [cs.PL] 
  33. «Multi-dimensional transactions and rollbacks, oh my!». guix.gnu.org 
  34. Smith, Jesse. «Guix System Distribution 0.15.0 and ReactOS 0.4.9». distrowatch.com (778). Consultado em 30 de agosto de 2018. Cópia arquivada em July 30, 2019  Verifique data em: |arquivodata= (ajuda)
  35. «Videos». Consultado em 3 de março de 2020. Arquivado do original em August 1, 2020  Verifique data em: |arquivodata= (ajuda)
  36. «Cookbook». Consultado em 3 de março de 2020. Arquivado do original em August 1, 2020  Verifique data em: |arquivodata= (ajuda)
  37. «Guix-HPC — Reproducible software deployment for high-performance computing — Blog». hpc.guix.info (em inglês). Consultado em 5 de novembro de 2024 
  38. Vallet, Nicolas; Michonneau, David; Tournier, Simon (4 de outubro de 2022). «Toward practical transparent verifiable and long-term reproducible research using Guix». Scientific Data (em inglês). 9 (1). 597 páginas. ISSN 2052-4463. doi:10.1038/s41597-022-01720-9 
  39. «A GNU Distribution» (Lista de grupo de correio)  |nome1= sem |sobrenome1= em Authors list (ajuda)
  40. «[GSoC update] Porting Guix to GNU/Hurd» (Lista de grupo de correio)  |nome1= sem |sobrenome1= em Authors list (ajuda)
  41. «About — GuixSD». www.gnu.org (em inglês). Consultado em 3 de maio de 2018 


Predefinição:Package management systems