"Errore: XDG_RUNTIME_DIR non impostato nell'ambiente." Quando si tenta di eseguire nautilus come root


14

Sto tentando di eseguire nautilus come root ma quando eseguo "sudo nautilus" dal terminale, ottengo il seguente errore:

errore: XDG_RUNTIME_DIR non impostato nell'ambiente.

(nautilus: 9341): Gtk-WARNING **: impossibile aprire il display:

Il problema non si verifica quando provo a eseguire nautilus come non root. Sto usando Ubuntu 14.04. Qualcuno sa come posso risolvere questo problema?


Solo per la cronaca, sono finito qui dopo che ho avuto lo stesso errore quando ho provato a fare X11Forwarding via ssh. Soluzione: avevo dimenticato di usare l' -Xopzione quando ho iniziato la mia sessione SSH.
JW.

Risposte:


13

Quando si esegue il software come un altro utente, infatti, si avvia il nuovo ambiente minimo e isolato che non porta su alcune variabili "eccessive" (tra le altre variabili responsabili dell'iniezione di librerie o impostazione di determinati privilegi). Sostituisci la tua sudo nautiluschiamata con la seguente: effettuerà le impostazioni del server x specifiche dell'utente dalla sessione corrente:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

Questa è una soluzione di basso livello una volta, ma funzionerà su una macchina non configurata correttamente. Se si desidera "correggere" in modo permanente, sudoè necessario individuare il problema con la configurazione dell'ambiente e correggerlo come descritto in altre risposte.


1
@Cyprian Guerra - Questo non si adatta all'ambiente, questo ti permette di correre solo una volta. Questo non è di grande aiuto. L'esecuzione sudo nautilusdovrebbe funzionare normalmente dal terminale durante l'esecuzione. Normalmente ogni volta che lo faccio dal terminale su una nuova installazione si apre normalmente con sudo.

@ user94959 Non capisci il principio di base: il nuovo ambiente viene impostato, le variabili vengono trasferite, l'attività viene eseguita quando l'attività esce da questo ambiente separato viene distrutta. Pertanto sì, è necessario impostare le variabili per ogni nuovo ambiente. Se desidera ottenere maggiori leggere prova con il materiale pkexece sudopagine man, così come google per il relativo contenzioso.
cprn,

@CyprianGuerra allora come mai quando provo ad aprire l'applicazione dal menu del desktop che richiede privilegi elevati può essere eseguito dopo l'immissione della password? ovviamente c'è qualcosa che manca nella configurazione se non si avvia correttamente perché non è impostato nell'ambiente XDG come al solito? il problema è quando il suo dire Cannot open displaysignifica che manca qualcosa nel suo file di configurazione perché qualcosa lo ha modificato e rimosso dall'ambiente quando non avrebbe dovuto. Quindi come può essere ripristinato permanentemente nell'ambiente, quindi non devo occuparmene?

1
@sherrellbc Sto dicendo esplicitamente che il kit di criteri deve essere eseguito envprima di essere eseguito nautiluse il primo si occupa di impostare le variabili per me. È possibile controllare man env.
cprn,

1
@cprn D'oh. Avrei dovuto controllare prima la pagina man. env COMMAND ARG ...
Sherrellbc,

1

Ho avuto anche lo stesso problema su Ubuntu 14.04. Aprire il terminale premendo,

Ctrl+ Alt+T

poi sudo visudo

cambia la linea

Valori predefiniti env_keep = "https_proxy"

per

Valori predefiniti env_keep + = "https_proxy"

Funzionava come un fascino.


Funziona ma impostando lo stesso per $XAUTHORITYsfidare lo scopo.
cprn,

1

Per rendere tutto più semplice, spiega di più il nuovo avvio del mio sistema.

Dopo tutte le spiegazioni qui sono arrivato al risultato - e "env" nel terminale ha già detto che è giusto per queste sessioni:

Queste due righe per utilizzare la variabile di ambiente:

per il comportamento tmp che ho scelto:

mkdir -pv ~ / .cache / xdgr

Per impostare la variabile d'ambiente:

export XDG_RUNTIME_DIR = $ PERCORSO: ~ / .cache / xdgr

Dopo aver chiuso il terminale e una nuova apertura per il richiamo di env, dicono:

XDG_RUNTIME_DIR = / run / user / 1001

nota: va bene per l'utente sotto ubuntu, root ha bisogno di più (ultime informazioni per termine - con permessi 0700)


0

Se ricevi questo errore in Docker; questo è ciò che faccio

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.