Próximo: Configuração de aplicativo, Anterior: Configurando o daemon, Acima: Instalação [Conteúdo][Índice]
guix-daemon
O programa guix-daemon
implementa todas as funcionalidades para
acessar o armazém. Isso inclui iniciar processos de compilação, executar o
coletor de lixo, consultar a disponibilidade de um resultado da compilação
etc. É normalmente executado como root
, assim:
# guix-daemon --build-users-group=guixbuild
Este daemon também pode ser iniciado seguindo o protocolo de “ativação de
soquete” do systemd (veja make-systemd-constructor
em The GNU Shepherd Manual).
Para detalhes sobre como configurá-lo, veja Configurando o daemon.
Por padrão, guix-daemon
inicia processos de compilação sob
diferentes UIDs, obtidos do grupo de compilação especificado com
--build-users-group. Além disso, cada processo de compilação é
executado em um ambiente chroot que contém apenas o subconjunto do armazém
do qual o processo de compilação depende, conforme especificado por sua
derivação (veja derivação), mais um conjunto de
diretórios de sistema específicos. Por padrão, o último contém /dev e
/dev/pts. Além disso, no GNU/Linux, o ambiente de compilação é um
container: além de ter sua própria árvore de sistema de arquivos, ele
tem um espaço de nome de montagem separado, seu próprio espaço de nome PID,
espaço de nome de rede, etc. Isso ajuda a obter compilações reproduzíveis
(veja Recursos).
Quando o daemon executa uma compilação em nome do usuário, ele cria um
diretório de compilação em /tmp ou no diretório especificado por sua
variável de ambiente TMPDIR
. Esse diretório é compartilhado com o
contêiner durante a compilação, embora dentro do contêiner, a árvore de
compilação seja sempre chamada de /tmp/guix-build-name.drv-0.
O diretório de compilação é excluído automaticamente após a conclusão, a menos que a compilação falhe e o cliente tenha especificado --keep-failed (veja --keep-failed).
O daemon escuta conexões e gera um subprocesso para cada sessão iniciada por
um cliente (um dos subcomandos guix
). O comando guix
processes
permite que você tenha uma visão geral da atividade no seu
sistema visualizando cada uma das sessões e clientes ativos. Veja Invocando guix processes
, para mais informações.
As seguintes opções de linha de comando são suportadas:
--build-users-group=grupo
Obtém os usuários do grupo para executar os processos de compilação (veja usuários de compilação).
--no-substitutes
¶Não use substitutos para compilar produtos. Ou seja, sempre crie coisas localmente, em vez de permitir downloads de binários pré-compilados (veja Substitutos).
Quando o daemon é executado com --no-substitutes, os clientes ainda
podem habilitar explicitamente a substituição por meio da chamada de
procedimento remoto set-build-options
(veja O armazém).
--substitute-urls=urls
Consider urls the default whitespace-separated list of substitute
source URLs. When this option is omitted,
‘https://bordeaux.guix.gnu.org https://ci.guix.gnu.org
’ is used.
Isso significa que os substitutos podem ser baixados de urls, desde que assinados por uma assinatura confiável (veja Substitutos).
Veja Obtendo substitutos de outros servidores, para mais informações sobre como configurar o daemon para obter substitutos de outros servidores.
--no-offload
Não use compilações de offload para outras máquinas (veja Usando o recurso de descarregamento). Ou seja, sempre compile as coisas localmente em vez de descarregar compilações para máquinas remotas.
--cache-failures
Armazena em cache as compilações que falharam. Por padrão, apenas compilações bem-sucedidas são armazenadas em cache.
Quando essa opção é usada, o guix gc --list-failures
pode ser
usado para consultar o conjunto de itens do armazém marcados como com falha;
O guix gc --clear-failures
remove os itens do armazém do conjunto
de falhas em cache. Veja Invocando guix gc
.
--cores=n
-c n
Usa n núcleos de CPU para compilar cada derivação; 0
significa
todos disponíveis.
O valor padrão é 0
, mas pode ser substituído pelos clientes, como a
opção --cores de guix build
(veja Invocando guix build
).
O efeito é definir a variável de ambiente NIX_BUILD_CORES
no processo
de compilação, que pode então usá-la para explorar o paralelismo interno —
por exemplo, executando make -j$NIX_BUILD_CORES
.
--max-jobs=n
-M n
Permite no máximo n tarefas de compilação em paralelo. O valor padrão
é 1
. Definir como 0
significa que nenhuma compilação será
executada localmente; em vez disso, o daemon descarregará as compilações
(veja Usando o recurso de descarregamento) ou simplesmente falhará.
--max-silent-time=segundos
Quando o processo de compilação ou substituição permanecer em silêncio por mais de segundos, encerra-o e relata uma falha de compilação.
The default value is 3600
(one hour).
O valor especificado aqui pode ser substituído pelos clientes (veja --max-silent-time).
--timeout=segundos
Da mesma forma, quando o processo de compilação ou substituição durar mais que segundos, encerra-o e relata uma falha de compilação.
O valor padrão é 24 horas.
O valor especificado aqui pode ser substituído pelos clientes (veja --timeout).
--rounds=N
Compila cada derivação n vezes seguidas e gera um erro se os
resultados consecutivos da compilação não forem idênticos bit a bit. Observe
que essa configuração pode ser substituída por clientes como guix
build
(veja Invocando guix build
).
Quando usado em conjunto com --keep-failed, uma saída de comparação é mantida no armazém, sob /gnu/store/…-check. Isso facilita procurar por diferenças entre os dois resultados.
--debug
Produz uma saída de depuração.
Isso é útil para depurar problemas de inicialização do daemon, mas pode ser
substituído pelos clientes, por exemplo, a opção --verbosity de
guix build
(veja Invocando guix build
).
--chroot-directory=dir
adiciona dir ao chroot de compilação.
Isso pode alterar o resultado dos processos de compilação – por exemplo, se eles usam dependências opcionais encontradas em dir quando estão disponíveis, e não o contrário. Por esse motivo, não é recomendável fazê-lo. Em vez disso, verifique se cada derivação declara todas as entradas necessárias.
--disable-chroot
Desabilita compilações em chroot.
O uso dessa opção não é recomendado, pois, novamente, isso permitiria que os
processos de compilação obtivessem acesso a dependências não
declaradas. Porém, é necessário quando o guix-daemon
está sendo
executado em uma conta de usuário sem privilégios.
--log-compression=tipo
Compacta logs de compilação de aconrdo com tipo, que pode ser um entre
gzip
, bzip2
e none
.
A menos que --lose-logs seja usado, todos os logs de build são mantidos em localstatedir. Para economizar espaço, o daemon os compacta automaticamente com gzip por padrão.
--discover[=yes|no]
Se deve descobrir servidores substitutos na rede local usando mDNS e DNS-SD.
Este recurso ainda é experimental. No entanto, aqui estão algumas considerações.
guix publish
na sua LAN não pode fornecer
binários maliciosos, mas pode descobrir qual software você está instalando;
Também é possível habilitar ou desabilitar a descoberta de servidor substituto em tempo de execução executando:
herd discover guix-daemon on herd discover guix-daemon off
--disable-deduplication
¶Desabilita “deduplicação” automática de arquivos no armazém.
Por padrão, os arquivos adicionados ao armazém são automaticamente “deduplicados”: se um arquivo recém-adicionado for idêntico a outro encontrado no armazém, o daemon tornará o novo arquivo um link físico para o outro arquivo. Isso pode reduzir notavelmente o uso do disco, às custas de um leve aumento na carga de entrada/saída no final de um processo de criação. Esta opção desativa essa otimização.
--gc-keep-outputs[=yes|no]
Diz se o coletor de lixo (GC) deve manter as saídas de derivações vivas.
Quando definido como yes
, o GC manterá as saídas de qualquer
derivação ativa disponível no armazém—os arquivos .drv. O padrão é
no
, o que significa que as saídas de derivação são mantidas somente
se forem acessíveis a partir de uma raiz do GC. Veja Invocando guix gc
,
para mais informações sobre raízes do GC.
--gc-keep-derivations[=yes|no]
Diz se o coletor de lixo (GC) deve manter as derivações correspondentes às saídas vivas.
Quando definido como yes
, como é o caso por padrão, o GC mantém
derivações—ou seja, arquivos .drv—desde que pelo menos uma de
suas saídas esteja ativa. Isso permite que os usuários acompanhem as origens
dos itens em seu armazém. Defini-lo como no
economiza um pouco de
espaço em disco.
Dessa forma, definir --gc-keep-derivations como yes
faz com
que a vivacidade flua das saídas para as derivações, e definir
--gc-keep-outputs como yes
faz com que a vivacidade flua das
derivações para as saídas. Quando ambos são definidos como yes
, o
efeito é manter todos os pré-requisitos de compilação (as fontes, o
compilador, as bibliotecas e outras ferramentas de tempo de compilação) de
objetos ativos no armazém, independentemente de esses pré-requisitos serem
acessíveis a partir de uma raiz GC. Isso é conveniente para desenvolvedores,
pois economiza reconstruções ou downloads.
--impersonate-linux-2.6
Em sistemas baseados em Linux, personifique o Linux 2.6. Isso significa que
a chamada de sistema uname
do kernel relatará 2.6 como o número da
versão.
Isso pode ser útil para criar programas que (geralmente de forma errada) dependem do número da versão do kernel.
--lose-logs
Não mantenha logs de build. Por padrão, eles são mantidos em localstatedir/guix/log.
--system=system
Assuma system como o tipo de sistema atual. Por padrão, é o par
arquitetura/kernel encontrado no momento da configuração, como
x86_64-linux
.
--listen=endpoint
Ouça conexões em endpoint. endpoint é interpretado como o nome
do arquivo de um soquete de domínio Unix se ele começar com /
(sinal
de barra). Caso contrário, endpoint é interpretado como um nome de
host ou nome de host e porta para ouvir. Aqui estão alguns exemplos:
--listen=/gnu/var/daemon
Ouça conexões no soquete de domínio Unix /gnu/var/daemon, criando-o se necessário.
--listen=localhost
¶Ouça as conexões TCP na interface de rede correspondente a localhost
,
na porta 44146.
--listen=128.0.0.42:1234
Ouça as conexões TCP na interface de rede correspondente ao
128.0.0.42
, na porta 1234.
Esta opção pode ser repetida várias vezes, nesse caso guix-daemon
aceita conexões em todos os endpoints especificados. Os usuários podem
informar aos comandos do cliente a qual endpoint se conectar definindo a
variável de ambiente GUIX_DAEMON_SOCKET
(veja GUIX_DAEMON_SOCKET
).
Nota: O protocolo daemon é unauthenticated and unencrypted. Usar --listen=host é adequado em redes locais, como clusters, onde apenas nós confiáveis podem se conectar ao daemon de compilação. Em outros casos em que o acesso remoto ao daemon é necessário, recomendamos usar soquetes de domínio Unix junto com SSH.
Quando --listen é omitido, guix-daemon
escuta conexões no
soquete de domínio Unix localizado em
localstatedir/guix/daemon-socket/socket.
Próximo: Configuração de aplicativo, Anterior: Configurando o daemon, Acima: Instalação [Conteúdo][Índice]