Next: Configuração de aplicativo, Previous: Configurando o daemon, Up: Instalação [Contents][Index]
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
This daemon can also be started following the systemd “socket activation”
protocol (see make-systemd-constructor
in The GNU Shepherd Manual).
Para detalhes sobre como configurá-lo, see Configurando o daemon.
By default, guix-daemon
launches build processes under different
UIDs, taken from the build group specified with
--build-users-group. In addition, each build process is run in a
chroot environment that only contains the subset of the store that the build
process depends on, as specified by its derivation (see derivation), plus a set of specific system directories. By
default, the latter contains /dev and /dev/pts. Furthermore,
on GNU/Linux, the build environment is a container: in addition to
having its own file system tree, it has a separate mount name space, its own
PID name space, network name space, etc. This helps achieve reproducible
builds (see Recursos).
When the daemon performs a build on behalf of the user, it creates a build
directory under /tmp or under the directory specified by its
TMPDIR
environment variable. This directory is shared with the
container for the duration of the build, though within the container, the
build tree is always called /tmp/guix-build-name.drv-0.
The build directory is automatically deleted upon completion, unless the build failed and the client specified --keep-failed (see --keep-failed).
The daemon listens for connections and spawns one sub-process for each
session started by a client (one of the guix
sub-commands). The
guix processes
command allows you to get an overview of the
activity on your system by viewing each of the active sessions and clients.
See Invocando guix processes
, for more information.
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 (see 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 (see Substitutos).
When the daemon runs with --no-substitutes, clients can still
explicitly enable substitution via the set-build-options
remote
procedure call (see O armazém).
--substitute-urls=urls
Consider urls the default whitespace-separated list of substitute
source URLs. When this option is omitted,
‘https://ci.guix.gnu.org https://bordeaux.guix.gnu.org
’ is used.
Isso significa que os substitutos podem ser baixados de urls, desde que assinados por uma assinatura confiável (see Substitutos).
See Getting Substitutes from Other Servers, for more information on how to configure the daemon to get substitutes from other servers.
--no-offload
Do not use offload builds to other machines (see Usando o recurso de descarregamento). That is, always build things locally instead of offloading builds to remote machines.
--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. See Invocando guix gc
.
--cores=n
-c n
Usa n núcleos de CPU para compilar cada derivação; 0
significa
todos disponíveis.
The default value is 0
, but it may be overridden by clients, such as
the --cores option of guix build
(see Invocando guix build
).
The effect is to define the NIX_BUILD_CORES
environment variable in
the build process, which can then use it to exploit internal
parallelism—for instance, by running 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
(see 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.
O valor padrão é 0
, que desativa o tempo limite.
The value specified here can be overridden by clients (see --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 é 0
, que desativa o tempo limite.
The value specified here can be overridden by clients (see --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
(see 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.
This is useful to debug daemon start-up issues, but then it may be
overridden by clients, for example the --verbosity option of
guix build
(see 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
.
Unless --lose-logs is used, all the build logs are kept in the localstatedir. To save space, the daemon automatically compresses them with gzip by default.
--discover[=yes|no]
Whether to discover substitute servers on the local network using mDNS and DNS-SD.
This feature is still experimental. However, here are a few considerations.
guix publish
on your LAN cannot serve you
malicious binaries, but they can learn what software you’re installing;
It is also possible to enable or disable substitute server discovery at run-time by running:
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.
When set to yes
, the GC will keep the outputs of any live derivation
available in the store—the .drv files. The default is no
,
meaning that derivation outputs are kept only if they are reachable from a
GC root. See Invocando guix gc
, for more on GC roots.
--gc-keep-derivations[=yes|no]
Diz se o coletor de lixo (GC) deve manter as derivações correspondentes às saídas vivas.
When set to yes
, as is the case by default, the GC keeps
derivations—i.e., .drv files—as long as at least one of their
outputs is live. This allows users to keep track of the origins of items in
their store. Setting it to no
saves a bit of disk space.
In this way, setting --gc-keep-derivations to yes
causes
liveness to flow from outputs to derivations, and setting
--gc-keep-outputs to yes
causes liveness to flow from
derivations to outputs. When both are set to yes
, the effect is to
keep all the build prerequisites (the sources, compiler, libraries, and
other build-time tools) of live objects in the store, regardless of whether
these prerequisites are reachable from a GC root. This is convenient for
developers since it saves rebuilds or downloads.
--impersonate-linux-2.6
On Linux-based systems, impersonate Linux 2.6. This means that the kernel’s
uname
system call will report 2.6 as the release number.
This might be helpful to build programs that (usually wrongfully) depend on the kernel version number.
--lose-logs
Do not keep build logs. By default they are kept under localstatedir/guix/log.
--system=system
Assume system as the current system type. By default it is the
architecture/kernel pair found at configure time, such as
x86_64-linux
.
--listen=endpoint
Listen for connections on endpoint. endpoint is interpreted as
the file name of a Unix-domain socket if it starts with /
(slash
sign). Otherwise, endpoint is interpreted as a host name or host name
and port to listen to. Here are a few examples:
--listen=/gnu/var/daemon
Listen for connections on the /gnu/var/daemon Unix-domain socket, creating it if needed.
--listen=localhost
¶Listen for TCP connections on the network interface corresponding to
localhost
, on port 44146.
--listen=128.0.0.42:1234
Listen for TCP connections on the network interface corresponding to
128.0.0.42
, on port 1234.
This option can be repeated multiple times, in which case
guix-daemon
accepts connections on all the specified endpoints.
Users can tell client commands what endpoint to connect to by setting the
GUIX_DAEMON_SOCKET
environment variable (see GUIX_DAEMON_SOCKET
).
Nota: The daemon protocol is unauthenticated and unencrypted. Using --listen=host is suitable on local networks, such as clusters, where only trusted nodes may connect to the build daemon. In other cases where remote access to the daemon is needed, we recommend using Unix-domain sockets along with SSH.
When --listen is omitted, guix-daemon
listens for
connections on the Unix-domain socket located at
localstatedir/guix/daemon-socket/socket.
Next: Configuração de aplicativo, Previous: Configurando o daemon, Up: Instalação [Contents][Index]