# 2021-01-12 #「GNOME」- 關閉 PackageKit 服務
問題描述
PackageKit,包管理服務,通過 DBus 介面,執行某些簡單的包管理任務,比如重新整理快取,安裝、更新、移除軟體等等。
但是該服務經常佔用大量 CPU 資源,非常多,而且一直有人反饋這個問題:
https://gitlab.gnome.org/GNOME/gnome-software/issues/512
https://bugs.launchpad.net/appcenter/+bug/1587975
https://www.reddit.com/r/linuxquestions/comments/55q35o/what_is_packagekitd_and_why_does_it_use_so_much/
鑑於在系統管理中,我們經常使用 YUM/APT 等等的包管理器,從未使用該服務,因此我們決定關閉該服務。
該筆記將介紹:如何關閉 PackageKit 服務。
附加說明
作業系統:Kali GNU/Linux Rolling
軟體版本:packagekit 1.0.1-2
關於該筆記分類:在 Debian 10.3 中,桌面環境(graphical.target)會啟動 PackageKit 服務,而多使用者環境(multi-user.target)不會啟動該服務,因此將該筆記分類到桌面環境設定中。
解決辦法
目前(09/02/2019),並沒有人找到 CPU 佔用高的原因。所以,對於這個問題也沒有什麼解決方案。解除安裝的有,禁用的有,這那的都有,都是些 workaround 辦法。
第一步、禁用服務
由於依賴的原因,還不能直接刪除掉。因此只能禁用服務:
systemctl stop packagekit.service systemctl disable packagekit.service systemctl mask packagekit.service # 如果不mask的話,它還會啟動。
第二步、移除配置(可選步驟)
在 Debian 中,當禁用 PackageKit 服務後,執行 apt-get 安裝的最後階段,會產生錯誤提示:
Error: GDBus.Error:org.freedesktop.systemd1.UnitMasked: Unit packagekit.service is masked.
這是由 /etc/apt/apt.conf.d/20packagekit 導致的。因為在 apt-get install 完成之後,會出觸發特定的 PackageKit 鉤子,由於我們禁用 PackageKit 服務而導致鉤子無法訪問該服務,所以禁用該鉤子即可:
mv -v /etc/apt/apt.conf.d/20packagekit{,.disabled}
參考文獻
- WikiNotes/關閉 PackageKit 服務
- CentOS / RHEL 7 : How to enable or disable automatic updates (via packagekit)
- How to disable PackageKit on CentOS, Fedora or RHEL
- All Debian package managers broken due to Python bug