Πρόσφατα χρειάστηκε να τρέξω μια γραφική εφαρμογή ως root και βρέθηκα μπροστά σε ένα ερώτημα. Πως;
Αν και δεν συνίσταται να τρέχουμε γραφικές εφαμογές ως root, μερικές φορές
αυτό το απαιτεί η ίδια η εφαρμογή. πχ. gparted.
Ο τρόπος με τον οποίο παλιότερα, αν θυμάμαι καλά μέχρι και τη 16.04 αν και δεν
έχει σημασία, τρέχαμε τέτοιες εφαρμογές ήταν μέσω της εντολής gksu η οποία
διαχειριζόταν τις μεταβλητές περιβάλλοντος με τέτοιο τρόπο ώστε να μη δημιουργηθεί
κάποιο πρόβλημα στην εφαρμογή.
Γενικά αποφεύγουμε να τρέχουμε γραφικές εφαρμογές ως root και αν αυτό πρέπει
να γίνει, ας γίνει με το σωστό τρόπο.
Ο σωστός τρόπος δεν είναι
sudo εφαρμογή
Ακόμη και η
sudo -H εφαρμογή
κάποιες φορές δε λειτουργεί σωστά.
Η gksu έχει αντικατασταθεί πλέον από την pkexec. Ωστόσο τρέχοντας
pkexec εφαρμογή
βρίσκομαι αντιμέτωπος με ένα μήνυμα λάθους. Ανοίγει ναι μεν το παράθυρο για να εισάγω τον κωδικό, αλλά η εφαρμογή δεν τρέχει.
DISPLAY is not set, unable to open the VMware Workstation user interface.
Ναι, στη δική μου περίπτωση ήταν το VMware γιατί ήθελα να αλλάξω κάποιες ρυθμίσεις στη μνήμη και αυτές μπορείς να τις πειράξεις μόνο αν τρέχεις το VMware ως Administrator, όπως χαρακτηριστικά αναφέρει.
Λύση
Ένα alias, έτσι για να θυμηθούμε και τα παλιά, στο ~/.bashrc
έδωσε τη λύση.
alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
Άλλωστε, είναι η συμπεριφορά της pkexec τέτοια. Το γράφουν οι άνθρωποι, αλλά ποιος τα διαβάζει αυτά.
man pkexec
[...] pkexec will not allow you to run X11 applications
as another user since the $DISPLAY and $XAUTHORITY environment
variables are not set.[...]
Until next time ... "Keep Your Mind in a Constant State of Openness"