J'ai besoin d'automatiser la configuration du bureau via Puppet, terminal virtuel ou ssh.
Malheureusement, l'invocation de gsettings
via ssh ou d'un terminal virtuel donne:
gsettings set org.compiz.core:/org/compiz/profiles/unity/plugins/core/ hsize "4"
(process:29520): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
Lorsque je mets le $DISPLAY
avec export DISPLAY=:0.0
il donne une autre erreur:
(process:29862): dconf-WARNING **: failed to commit changes to dconf: Could not connect: Connection refused
Que puis-je faire?
remote-access
dconf
gsettings
puppet
remote-login
Adam Ryczkowski
la source
la source
DBUS_SESSION_BUS_ADDRESS
, mais aussiXDG_RUNTIME_DIR
.Réponses:
La clé est de définir la
DBUS_SESSION_BUS_ADDRESS
variable d'environnement.Sur ce fil, j'ai trouvé le script suivant, qui aide à obtenir la valeur correcte de cette variable. Il nécessite le nom du processus, qui s'exécute sur le bureau, sur lequel nous voulons modifier les paramètres dbus. (Il peut y avoir plus d'une session graphique en cours en parallèle). Permet de l'appeler
discover_session_bus_address.sh
Avec ce script, nous pouvons effectuer les opérations suivantes, en supposant que le
unity
processus s'exécute sur le bureau, sur lequel nous voulons appliquer nos paramètres:Et les choses devraient bien fonctionner.
la source
J'avais ce même problème lors de la tentative de modification des paramètres d'une image vagabonde via SSH lors de l'approvisionnement.
Cette solution /ubuntu//a/326773 a fait l'affaire pour moi sans toute la pêche de la connexion active et en essayant d'usurper l'environnement. YMMV ...
la source
J'ai un script POST-Install qui définit mon gsetting. Étant donné que j'exécute le script en tant que sudo, l'EUID est 0, je dois donc trouver le $ RUID (Real User ID).
voici mon approche:
la source
$USER
variable d'environnement et votre UID dans la$UID
variable. Lors de l'exécutionsudo
, ils se trouvent dans les variables$SUDO_USER
et$SUDO_UID
. Cela dit, pourquoi voudriez-vous même exécuter cela avecsudo
en premier lieu? Utiliser,sudo -u $YOUR_USER
c'est comme ne pas utilisersudo
du tout. Enfin, votrewho | awk . . .
commande n'obtient pas votre ID, elle imprime tous les ID de tous les utilisateurs actuellement connectés au système.