
Estou tentando instalar o pacote da comunidade GitLab em um sistema Debian Stretch, mas uma de suas dependências, redis-server
, falha na instalação ao iniciar o serviço usando o systemd.
Registro completo:
$ sudo dpkg --configure redis-server
Setting up redis-server (3:3.2.5-4) ...
Job for redis-server.service failed because the control process exited with error code.
See "systemctl status redis-server.service" and "journalctl -xe" for details.
invoke-rc.d: initscript redis-server, action "start" failed.
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2016-12-15 15:00:17 UTC; 31ms ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 8764 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=227/NO_NEW_PRIVILEGES)
Process: 8761 ExecStartPre=/bin/run-parts --verbose /etc/redis/redis-server.pre-up.d (code=exited, status=227/NO_NEW_PRIVILEGES)
Main PID: 24283 (code=exited, status=227/NO_NEW_PRIVILEGES)
Dec 15 15:00:17 Serverdatorn-Debian systemd[1]: redis-server.service: Unit entered failed state.
Dec 15 15:00:17 Serverdatorn-Debian systemd[1]: redis-server.service: Failed with result 'exit-code'.
dpkg: error processing package redis-server (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
redis-server
Iniciar o redis-server executando o executável manualmente funciona perfeitamente:
$ sudo /usr/bin/redis-server /etc/redis/redis.conf
$ sudo tail /var/log/redis/redis-server.log
...
* The server is now ready to accept connections on port 6379
Se houver alguma outra informação que você queira que eu forneça, por favor me diga.
EDITAR:
Tentei configurar NoNewPrivileges
ambos yes
e no
no redis.service
arquivo, recarregar e iniciá-lo novamente, mas sem sorte, mesmo erro. Descobri que a execução journalctl -xe
mostrava outra mensagem que pode ser útil:
redis-server.service: Failed at step NO_NEW_PRIVILEGES spawning /usr/bin/redis-server: Invalid argument
Responder1
Eu acho que você está se deparando com esse resultado dosystemd
NoNewPrivileges=directiva. Supondo que o redis-server
pacote geralmente funcione em sistemas Ubuntu 16.04, isso sugere que seu sistema pode personalizar configurações globais NoNewPrivileges=
ou uma diretiva relacionada que está causando falha na inicialização do Redis.
Leia os documentos vinculados sobre NoNewPrivileges=
e as diretivas relacionadas e, em seguida, pesquise em seu /etc/systemd/
diretório para ver se algum desses valores foi personalizado em seu sistema. Caso contrário, confirme se o redis
pacote que você está instalando é realmente compatível com a versão do sistema operacional em que você está instalando.
Responder2
Isso foi levantado como um bug do Debian, em dezembro de 2017, mas o bug foi resolvido sem uma correção de serviço. Se você tiver os detalhes solicitados por Chris Lamb, forneça-os.
Um problema semelhante foi relatado para o pacote MariaDB 10.1 do Debian em julho de 2017, que foi fechado sem correção quando o pacote foi removido do Debian.
Acorreção localé alterar as configurações do serviço para ser
NoNewPrivileges=não Dispositivos privados = não
Não edite /etc/systemd/system/redis.service
ou /usr/lib/systemd/system/redis-server.service
diretamente. Este último não deve ser editado manualmente pelos administradores locais, e o primeiro não é o arquivo da unidade de serviço real que vem com o pacote Debian.
Em vez disso, use systemctl edit redis.service
para criar umarquivo drop-in da unidadee coloque as configurações lá. Isso também faz uma daemon-reload
operação implícita, o que seria necessário fazer manualmente se estivéssemos modificando arquivos de unidade manualmente.
Para aqueles que estão tentando encontrar isso no pacote fonte: O pacote redis.service
e [email protected]
os arquivos são gerados por um programa Debian chamadogenerate-systemd-service-files
.
Este é um dos vários problemas que as pessoas tiveram com o uso dos mecanismos de restrição do systemd nas unidades de serviço que são geradas e empacotadas pelo pessoal do Debian. Outras são que sua ProtectHome=yes
configuração impede o funcionamento de um link simbolicamente /home
, em um bug da barra de lançamento, e que sua ReadOnlyDirectories=/
configuração produz um código de erro 226/NAMESPACE, em perguntas e respostas do StackOverflow. Olocalfix assume a mesma forma para todos, um arquivo de unidade drop-in com uma substituição de configuração.
Leitura adicional
- Mauro Ziliani (19/12/2017). saída do servidor redis com código 227/NO_NEW_PRIVILEGES. Bug do Debian #884764.
- André França (01/11/2016). redis-server falha ao iniciar após atualização de 16.04 para 16.10. Bug da barra de lançamento nº 1638410.
- https://stackoverflow.com/a/48496530/340790
- ozzloy palindromemordnilap (03/07/2017). A instalação do mariadb falha com NO_NEW_PRIVILEGES (systemd). Bug do Debian #867137.
- systemctl - códigos de saída de serviço e explicação de informações de status
Responder3
Você pode definir PrivateDevices=false no arquivo de serviço systemd para fazê-lo funcionar.
Responder4
No meu caso, eu estava executando o kernel Linux antigo da versão anterior do Debian e alguns serviços falharam ao iniciar com o erro "(code=exited, status=227/NO_NEW_PRIVILEGES)". Por exemplo:
ExecStart=/lib/systemd/systemd-logind (code=exited, status=227/NO_NEW_PRIVILEGES)
Instalar o kernel da distribuição atual sudo apt-get install linux-image-amd64 && reboot
resolveu meu problema.