Dois anos após o lançamento da última versão principal, foi anunciado o lançamento da nova versão do gerenciador de serviços GNU Shepherd 0.9 (anteriormente conhecido como dmd) . Ele está sendo desenvolvido pelos desenvolvedores da distribuição GNU Guix como uma alternativa à inicialização SysV-init, que leva em consideração as dependências do sistema.
Shepherd fornece funcionalidades 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 objetos exportados para que o Shepherd os utilize na extensão do sistema operacional base de uma maneira definida. Diferentemente do systemd, um processo de monitoramento em espaço do usuário é executado como esse usuário.
Sobre o Pastor
O núcleo do modelo de inicialização em espaço de usuário do Shepherd é o conceito de extensão, uma forma de composibilidade na qual os serviços são projetados para se sobreporem a outros serviços, aumentando-os com comportamentos mais elaborados ou especializados, conforme desejado. Isso expressa as relações de dependência baseadas em instanciação encontradas em muitos sistemas de inicialização modernos, tornando o sistema modular, mas também permitindo que os serviços interajam de forma variável com outros serviços de maneiras arbitrárias.
Shepherd também fornece os chamados serviços virtuais que permitem a entrega dinâmica por meio de uma classe de objetos de serviço relacionados, como todos aqueles que criam instâncias de um agente de transferência de correio (MTA) para o sistema.
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 do sistema" (responsável pelas fases iniciais de inicialização e inicialização) como root e todos os serviços inicializados subsequentes como extensões da funcionalidade do serviço do sistema , direta ou transitivamente sobre outros serviços.
Por ser escrito e configurado em Guile Scheme, o GNU Shepherd foi projetado para ser altamente programável pelo administrador do sistema, mas também pode ser usado para gerenciar perfis de usuário de daemons e serviços sem privilégios.
Seus serviços e configurações são armazenados uniformemente como código Scheme orientado a objetos e, embora um conjunto central de serviços seja fornecido com o sistema básico do Guix, novos serviços arbitrários podem ser declarados de forma flexível e, por meio do sistema de objetos do Guile, o 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 específicas na instanciação.
O GNU Shepherd foi originalmente projetado para funcionar com o GNU Hurd e mais tarde foi adotado pelo Sistema Guix.
Principais novos recursos do GNU Shepherd 0.9
Esta nova versão destaca a implementação do conceito de serviços temporários (transitórios), que são desconectados automaticamente após o término devido ao encerramento do processo ou a uma chamada ao método "stop", o que pode ser necessário para serviços sintetizados que não podem ser reiniciados após o término.
Outra mudança notável é que, para serviços sem o parâmetro "#:log-file" , a saída é fornecida ao syslog e, para serviços com o parâmetro "#:log-file", o log é gravado em um arquivo separado indicando a hora dos logs no processo Shepherd sem privilégios, que é armazenado no diretório $XDG_DATA_DIR.
Além disso, vale ressaltar que o procedimento "make-inetd-constructor" foi adicionado para criar serviços semelhantes ao inetd e que o procedimento "make-systemd-constructor" foi adicionado para criar serviços que são ativados na atividade da rede (estilo systemd socket ativação).
Outras mudanças notáveis nesta nova versão incluem:
- Adicionado um procedimento para iniciar o serviço em segundo plano:
- Adicionados os parâmetros “:supplementary-groups”, “#:create-session” e “#:resource-limits” ao procedimento “make-forkexec-constructor”.
- Operação sem bloqueio garantida enquanto espera por arquivos PID.
- Removido suporte para compilar com Guile 2.0. Corrigidos problemas ao usar as versões 3.0.5-3.0.7 do Guile.
- A biblioteca Fibers 1.1.0 ou posterior agora é necessária para funcionar.
- Documentação e exemplos aprimorados
- Shepherd não pode mais ser construído com Guile 2.0
- Correção no bug do compilador Guile 3.0.[5-7]
- Traduções atualizadas
Por fim, se você estiver interessado em saber mais ou quiser obter esta nova versão, pode consultar os detalhes, a documentação e fazer o download no seguinte link.