pkexecを介して.desktopでsudo Execを実行する:Qtエラー

pkexecを介して.desktopでsudo Execを実行する:Qtエラー

sudo権限でアプリケーションを実行する必要がある構成はvirtualboxにあります。私は.desktopsudoで実行するためにファイルを編集しています。 (sudoersファイルを適切に変更しても、単に変数をExec次に変更することはExec=sudo virtualbox機能しません。)

$ cat /usr/share/applications/virtualbox.desktop 
[Desktop Entry]
Name=VirtualBox
GenericName=PC virtualization solution

Type=Application
Exec=virtualbox %U
TryExec=VirtualBox
Keywords=virtualization;
Keywords[de]=Virtualisierung;
Keywords[ru]=виртуализация;
MimeType=application/x-virtualbox-vbox;application/x-virtualbox-vbox-extpack;application/x-virtualbox-ovf;application/x-virtualbox-ova;
Icon=virtualbox
Categories=Emulator;System;Utility;
Actions=RootManager;Manager
Comment=Run several virtual systems on a single host computer
Comment[de]=Mehrere virtuelle Maschinen auf einem einzigen Rechner ausführen
Comment[it]=Esegui più macchine virtuali su un singolo computer
Comment[ko]=가상 머신
Comment[pl]=Uruchamianie wielu systemów wirtualnych na jednym komputerze gospodarza
Comment[ru]=Запуск нескольких виртуальных машин на одном компьютере
Comment[sv]=Kör flera virtuella system på en enda värddator

[Desktop Action Manager]
Exec=virtualbox
Name=Open Oracle VM Manager
Name[de]=Oracle VM Manager öffnen

[Desktop Action RootManager]
Exec=gnome-terminal -e "bash -c 'sudo -i /usr/bin/virtualbox;'"
Name=Open Manager as Admin

上記の方法は現在のところ効果的で良い解決策ですが、認証はgnome端末で発生することに注意してください。この問題を回避するためにpkexec(例:)を使用したいが、Exec=pkexec virtualbox次のエラーが発生します。

 ~$ pkexec virtualbox
Qt WARNING: could not connect to display 
Qt FATAL: This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Aborted (core dumped)

いくつかの考えられる原因/解決策を確認しました。

アプリケーションが使用されていないので、私の問題は最初のリンクとあまり関係がないと思いますpkexec。 2番目のリンクは非常に複雑に見えますが、単にそうすることができるカスタムアクションをfreedesktopポリシーパッケージに追加します。必要。

どんな洞察力がありますか?

答え1

2番目のリンクが機能します。

$ cat /usr/share/polkit-1/actions/org.freedesktop.policykit.virtualbox.policy 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
 "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
    <action id="org.freedesktop.policykit.pkexec.virtualbox">
    <description>Run VirtualBox as Admin</description>
    <message>Authentication is required to run VirtualBox as administrator</message>
    <icon_name>virtualbox</icon_name>
    <defaults>
        <allow_any>auth_admin</allow_any>
        <allow_inactive>auth_admin</allow_inactive>
        <allow_active>auth_admin</allow_active>
    </defaults>
    <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/virtualbox</annotate>
    <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
    </action>
</policyconfig>

そして

$ cat /usr/share/applications/virtualbox.desktop 
[Desktop Entry]
Name=VirtualBox
GenericName=PC virtualization solution

Type=Application
Exec=pkexec virtualbox %U
TryExec=VirtualBox
Keywords=virtualization;
Keywords[de]=Virtualisierung;
Keywords[ru]=виртуализация;
MimeType=application/x-virtualbox-vbox;application/x-virtualbox-vbox-extpack;application/x-virtualbox-ovf;application/x-virtualbox-ova;
Icon=virtualbox
Categories=Emulator;System;Utility;
Actions=RootManager;Manager
Comment=Run several virtual systems on a single host computer
Comment[de]=Mehrere virtuelle Maschinen auf einem einzigen Rechner ausführen
Comment[it]=Esegui più macchine virtuali su un singolo computer
Comment[ko]=가상 머신
Comment[pl]=Uruchamianie wielu systemów wirtualnych na jednym komputerze gospodarza
Comment[ru]=Запуск нескольких виртуальных машин на одном компьютере
Comment[sv]=Kör flera virtuella system på en enda värddator

[Desktop Action Manager]
Exec=virtualbox
Name=Open Oracle VM Manager
Name[de]=Oracle VM Manager öffnen

[Desktop Action RootManager]
Exec=pkexec virtualbox
Name=Open Oracle VM Manager (admin)

関連情報