дальнейшее чтение

дальнейшее чтение

Я пытаюсь установить пакет сообщества GitLab в системе Debian Stretch, но одна из его зависимостей, redis-server, не устанавливается при запуске службы с помощью systemd.

Полный журнал:

$ 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

Запуск redis-server путем ручного запуска исполняемого файла работает отлично:

$ 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

Если вам нужна какая-либо дополнительная информация, пожалуйста, сообщите мне.

РЕДАКТИРОВАТЬ:

Я пробовал установить и то , и NoNewPrivilegesдругое в файле, перезагрузить и запустить его снова, но безуспешно, та же ошибка. Я обнаружил, что запуск показал другое сообщение, которое может быть полезным:yesnoredis.servicejournalctl -xe

redis-server.service: Failed at step NO_NEW_PRIVILEGES spawning /usr/bin/redis-server: Invalid argument

решение1

Я предполагаю, что вы сталкиваетесь с этим результатомsystemd NoNewPrivileges=директива. Если предположить, что redis-serverпакет в целом работает в системах Ubuntu 16.04, это говорит о том, что ваша система может иметь пользовательские глобальные настройки NoNewPrivileges=или связанную с ними директиву, из-за которой Redis не запускается.

Прочитайте документы по ссылкам about NoNewPrivileges=и связанные директивы, затем найдите в своем /etc/systemd/каталоге, чтобы узнать, были ли какие-либо из этих значений настроены в вашей системе. Если нет, убедитесь, что redisустанавливаемый вами пакет действительно поддерживается в версии операционной системы, в которую вы его устанавливаете.

решение2

Это было поднято как ошибка Debian еще в декабре 2017 года, но ошибка была закрыта без исправления сервиса. Если у вас есть детали, которые запросил Крис Лэмб, пожалуйста, предоставьте их.

Похожая проблема была обнаружена в пакете Debian MariaDB 10.1 еще в июле 2017 года и была закрыта без исправления, когда пакет был удален из Debian.

Алокальное исправлениеизменить настройки сервиса, чтобы быть

NoNewPrivileges=нет
PrivateDevices=нет

Не редактируйте напрямую /etc/systemd/system/redis.serviceor /usr/lib/systemd/system/redis-server.service. Последний вообще не должен редактироваться вручную локальными администраторами, а первый не является фактическим файлом сервисного модуля, который поставляется с пакетом Debian.

Вместо этого используйте systemctl edit redis.serviceдля созданияфайл вставки блокаи поместить туда настройки. Это также делает daemon-reloadнеявно, что пришлось бы делать вручную, если бы кто-то вручную модифицировал файлы юнитов.

Для тех, кто пытается найти это в исходном пакете: пакеты redis.serviceи [email protected]файлы генерируются программой Debian под названиемgenerate-systemd-service-files.

Это одна из нескольких проблем, с которыми люди сталкивались при использовании механизмов ограничения systemd в служебных модулях, которые генерируются и упаковываются людьми из Debian. Другие проблемы заключаются в том, что его ProtectHome=yesнастройка останавливает /homeработу символически связанного, в ошибке launchpad, и что его ReadOnlyDirectories=/настройка выдает код ошибки 226/NAMESPACE, в StackOverflow Q&A.местныйисправление имеет одинаковую форму для всех: вставной файл модуля с переопределением настроек.

дальнейшее чтение

решение3

Чтобы все заработало, можно установить PrivateDevices=false в файле службы systemd.

решение4

В моем случае я использовал старое ядро ​​Linux из предыдущей версии Debian, и несколько служб не смогли запуститься с ошибкой "(code=exited, status=227/NO_NEW_PRIVILEGES)". Например:

ExecStart=/lib/systemd/systemd-logind (code=exited, status=227/NO_NEW_PRIVILEGES)

Установка текущего дистрибутива ядра sudo apt-get install linux-image-amd64 && rebootрешила мою проблему.

Связанный контент