以 root 身份从命令行运行软件中心

Ies*_*Mwg 5 software-center

我没有使用 Unity,所以我没有一个方便的按钮可以点击开始software-center。不过,搜索软件有时很有用,所以我从命令行运行它。但是,我实际上无法通过该界面安装软件(无权限)。所以我尝试了sudo software-center,希望能解决这个问题。在命令行上输入我的密码后,我会看到一个对话框,要求:

输入密钥环“默认”的密码以解锁

我应该在这里输入什么software-center才能真正以 root 身份启动?

这里有更多信息。我正在运行 Enlightenment (E17) 作为我的桌面环境。统一出现在侧栏上的按钮在 E17 中似乎没有等效按钮,这就是我从命令行运行软件中心的原因。当我这样做时,作为我而不是 root,在我尝试安装某些东西时,会弹出一条错误消息,上面写着:

Authentication Error. Software can't be installed or removed because the authentication service is not available. (org.freedesktop.PolicyKit.Error.Failed: ('system-bus-name', {'name': ':1.96'}): org.debian.apt.install-or-remove-packages
Run Code Online (Sandbox Code Playgroud)

Policykit 似乎没有运行,或者至少没有与该名称类似的名称显示为“ps wux”。所以我想这提出了一个问题,有人知道如何在我登录时自动启动吗?

谢谢!

小智 6

您不应该以 root 身份运行 software-center。您应该简单地以您自己的用户身份启动它。安装包应该会提示您使用 policykit 对话框询问您的密码。那不会发生吗?

  • Marc 是完全正确的,无论您使用什么桌面环境,都不应以 root 身份启动软件中心。软件中心应始终以用户身份启动,aptdaemon 后端附带的 policykit 策略将负责在安装软件包时对用户进行身份验证。以 root 身份启动它只会更容易弄乱用户拥有的文件中的某些权限,根据我的经验,不会让 policykit 更快乐(通常恰恰相反)。 (2认同)

Bra*_*iam 0

你需要 pkexec 来代替:

pkexec software-center
Run Code Online (Sandbox Code Playgroud)

这样就像您从 GUI 启动它一样。


Rad*_*anu 0

一个好的选择是使用以下两个命令:

sudo -i           #login as root
software-center   #run software-center as root
Run Code Online (Sandbox Code Playgroud)

pkexec software-center如果您想按照 @Braiam 在他的回答中建议的方式使用,您很可能会遇到一些错误,并且该命令会导致核心转储(如 @gunbert 在本评论中所说)。software-center以 root 身份运行的正确方法pkexec是:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY software-center
Run Code Online (Sandbox Code Playgroud)

这是正常的,因为man pkexec从这个意义上来说非常清楚:

       [...] pkexec will not allow you to run X11 applications
       as another user since the $DISPLAY and $XAUTHORITY environment
       variables are not set.[...]
Run Code Online (Sandbox Code Playgroud)

另请参阅为什么用户永远不应该使用普通 sudo 来启动图形应用程序?