我已经卸载了Fedora上的PackageKit,因为我不需要命令行的臃肿和种族条件。
从那时起,命令未找到就会失败,原因如下:
❯ foo
bash: foo: command not found...
Failed to search for file: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer.
# because...
❯ dbus-send --system --print-reply --dest=org.freedesktop.PackageKit \
/org/freedesktop/PackageKit org.freedesktop.DBus.Properties.Get \
string:'org.freedesktop.PackageKit' string:'BackendName'
Error org.freedesktop.DBus.Error.NameHasNoOwner: Could not activate remote peer.如果没有PackageKit,我怎样才能保留命令找不到的功能呢?似乎dnf应该能够自己处理这件事?
版本:
PackageKit-command-not-found-1.1.12-11.fc31.x86_64.rpm发布于 2020-04-17 00:49:26
这个问题困扰了我很多年了。就像很多其他人一样,我讨厌PackageKit,已经想方设法关闭了它。我还发现你不能在没有重大影响的情况下卸载它。你能做的最好的就是禁用和屏蔽它的systemctl服务,这样可以防止它突然将大量的软件包下载到您已经满了的硬盘上。相反,我完全依赖于命令行DNF来处理任何包和系统升级。
因此,我通常只是在每次胖手指命令'mkae‘(对于那些可以正确键入的命令"make“)中使用这个”烦人的特性“。
作为一个通常放弃和生活在这样的烦恼中的人,我终于花了今天的时间去挖掘它。我意识到这必须是bash的一个特性。但是,我不知道Fedora会为PackageKit做那么多的调整。但是,我也没有找到任何关于这个话题的搜索结果(虽然我确实找到了很多似乎对PackageKit很恼火的人,所以我显然不是一个人)。当我发现这篇文章时,我一时兴奋,但很快就对没有任何答案而感到失望!
所以我就挖出来了。我确实很了解bash,并决定从搜索手册页面开始。最终得到了这个简单的答案..。
事实证明,bash (以及其他一些类似zsh的shell)有一个command_not_found_handle函数,在找不到任意命令时可以调用该函数。实际上,PackageKit在/etc/profile.d下安装了一个文件,该文件定义了这个函数。是/etc/profile.d/PackageKit.sh
查看其中函数的版本,会产生几种不同的禁用方法:
/usr/libexec/pk-command-not-found删除可执行权限(同样,可能会在包更新时恢复)。/usr/libexec/packagekitd (再次,可能在包更新上重新安装)。unset -f command_not_found_handle添加到本地.bashrc文件中command_not_found_handle文件中为.bashrc定义自己的超棒的“自定义”函数(如上面的注释中提到的)。我已经沿着这条路走了,但后来我认为好的老“命令找不到”可能是最好的……从那以后,当我试图完全删除PackageKit时,我遇到了很多问题,我只需要将它放在适当的位置,并保持它的禁用和蒙面。因此,我采用了最简单的方法,只是在本地.bashrc中取消函数,现在对不再看到愚蠢和令人讨厌的GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner错误感到非常高兴。
哈哈!
https://unix.stackexchange.com/questions/544330
复制相似问题