進一步閱讀

進一步閱讀

我正在嘗試在 Debian Stretch 系統上安裝 GitLab 社群包,但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設定yes和,重新加載並再次啟動它,但沒有運氣,同樣的錯誤。我確實發現運行顯示了另一個可能有用的消息:noredis.servicejournalctl -xe

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

答案1

我猜你正在遇到這個結果systemd 無新權限=指示。假設redis-server軟體包通常適用於 Ubuntu 16.04 系統,這表示您的系統可能會自訂全域設定NoNewPrivileges=或導致 Redis 無法啟動的相關指令。

NoNewPrivileges=閱讀有關 about和相關指令的連結文檔,然後在您的/etc/systemd/目錄中搜尋以查看是否已在您的系統上自訂了這些值。如果沒有,請確認 redis您要安裝的軟體包確實受您安裝的作業系統版本支援。

答案2

早在 2017 年 12 月,這個問題就被作為 Debian bug 提出,但該 bug 在沒有服務修復的情況下就被關閉了。如果您有 Chris Lamb 要求的詳細信息,請提供。

早在 2017 年 7 月,Debian 的 MariaDB 10.1 軟體包就報告了類似的問題,當該軟體包從 Debian 中刪除時,該軟體包已關閉且未修復。

A本地修復是將服務的設定改為

沒有新權限=否
私人設備=否

不要編輯/etc/systemd/system/redis.service/usr/lib/systemd/system/redis-server.service直接。後者根本不應該由本地管理員手動編輯,而前者也不是 Debian 軟體包附帶的實際服務單元檔案。

相反,使用systemctl edit redis.service創建一個單位插入文件並將設定放在那裡。這也daemon-reload隱式地執行了一項操作,如果要手動修改單元文件,則必須手動執行此操作。

對於那些試圖在原始碼包中找到它的人:打包的檔案redis.service[email protected]檔案是由名為的 Debian 程式產生的generate-systemd-service-files

這是人們在 Debian 人員產生和打包的服務單元中使用 systemd 限制機制時遇到的幾個問題之一。其他問題是,它的ProtectHome=yes設定在啟動板錯誤中阻止了符號連結/home的工作,並且ReadOnlyDirectories=/在 StackOverflow 問答中,它的設定產生了 226/NAMESPACE 錯誤代碼。這當地的修復對所有內容都採用相同的形式,即具有設定覆蓋的嵌入式單元檔案。

進一步閱讀

答案3

您可以在 systemd 服務文件中設定 PrivateDevices=false 以使其正常運作。

答案4

就我而言,我運行的是以前 Debian 版本的舊 Linux 內核,並且有幾個服務無法啟動,並出現“(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解決了我的問題。

相關內容