
Estoy intentando instalar el paquete de la comunidad GitLab en un sistema Debian Stretch, pero una de sus dependencias redis-server
no se instala al iniciar el servicio usando 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 redis-server ejecutando el ejecutable manualmente funciona perfectamente:
$ 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
Si hay alguna otra información que quieras que te proporcione, por favor dímelo.
EDITAR:
Intenté configurar NoNewPrivileges
ambos yes
y no
en el redis.service
archivo, recargarlo e iniciarlo nuevamente, pero no tuve suerte, el mismo error. Descubrí que al ejecutar journalctl -xe
se mostraba otro mensaje que podría ser útil:
redis-server.service: Failed at step NO_NEW_PRIVILEGES spawning /usr/bin/redis-server: Invalid argument
Respuesta1
Supongo que te estás topando con este resultado de lasystemd
Sin nuevos privilegios =directiva. Suponiendo que el redis-server
paquete generalmente funciona en sistemas Ubuntu 16.04, esto sugiere que su sistema puede personalizar la configuración global NoNewPrivileges=
o una directiva relacionada que hace que Redis no se inicie.
Lea los documentos vinculados acerca de NoNewPrivileges=
y las directivas relacionadas, luego busque en su /etc/systemd/
directorio para ver si alguno de esos valores se ha personalizado en su sistema. De lo contrario, confirme que el redis
paquete que está instalando sea compatible con la versión del sistema operativo en el que lo está instalando.
Respuesta2
Esto se planteó como un error de Debian en diciembre de 2017, pero el error se solucionó sin una solución del servicio. Si tiene los detalles que Chris Lamb solicitó, proporciónelos.
Se informó un problema similar para el paquete MariaDB 10.1 de Debian en julio de 2017, que se cerró sin solución cuando el paquete se eliminó de Debian.
Aarreglo locales cambiar la configuración del servicio para que sea
Sin nuevos privilegios = no Dispositivos privados=no
No editar /etc/systemd/system/redis.service
ni /usr/lib/systemd/system/redis-server.service
directamente. Se supone que este último no debe ser editado manualmente por administradores locales, y el primero no es el archivo de unidad de servicio real que viene con el paquete Debian.
En su lugar, utilice systemctl edit redis.service
para crear unarchivo desplegable de unidadesy poner la configuración allí. Esto también hace daemon-reload
implícitamente algo que uno tendría que hacer a mano si estuviera modificando archivos unitarios a mano.
Para aquellos que intentan encontrar esto en el paquete fuente: los archivos empaquetados redis.service
y [email protected]
son generados por un programa Debian llamadogenerate-systemd-service-files
.
Este es uno de varios problemas que la gente ha tenido con el uso de los mecanismos de restricción de systemd en las unidades de servicio generadas y empaquetadas por la gente de Debian. Otras son que su ProtectHome=yes
configuración impide que funcione un enlace simbólico /home
, en un error de la plataforma de lanzamiento, y que su ReadOnlyDirectories=/
configuración produce un código de error 226/NAMESPACE, en una sesión de preguntas y respuestas de StackOverflow. Ellocalfix toma la misma forma para todos, un archivo unitario desplegable con una configuración anulada.
Otras lecturas
- Mauro Ziliani (19/12/2017). Salida del servidor redis con el código 227/NO_NEW_PRIVILEGES. Error #884764 de Debian.
- Andrew Francia (1 de noviembre de 2016). El servidor redis no se inicia después de la actualización de 16.04 a 16.10. Error de plataforma de lanzamiento n.º 1638410.
- https://stackoverflow.com/a/48496530/340790
- ozzloy palindromemordnilap (3 de julio de 2017). La instalación de mariadb falla con NO_NEW_PRIVILEGES (systemd). Error #867137 de Debian.
- systemctl - códigos de salida del servicio y explicación de la información de estado
Respuesta3
Puede configurar PrivateDevices=false en el archivo de servicio systemd para que funcione.
Respuesta4
En mi caso, estaba ejecutando un kernel de Linux antiguo de una versión anterior de Debian y un par de servicios no pudieron iniciarse con el error "(código=salido, estado=227/NO_NEW_PRIVILEGES)". Por ejemplo:
ExecStart=/lib/systemd/systemd-logind (code=exited, status=227/NO_NEW_PRIVILEGES)
La instalación del kernel de distribución actual sudo apt-get install linux-image-amd64 && reboot
solucionó mi problema.