J'ai des problèmes avec une application Web que j'écris :l'application Web, qui s'exécute en tant qu'utilisateur nobody
, doit lancer un inkscape
processus pour manipuler certains fichiers SVG. Parce que cela s'exécute en tant qu'utilisateur nobody
, il n'y a pas de répertoire personnel. Ce que je fais est de créer un répertoire temporaire sous /tmp
et en essayant de le définir comme répertoire personnel via export HOME=/tmp/someUniqueId
. J'ai ensuite défini quelques éléments dans ce répertoire personnel "temporaire", comme un lien symbolique .fonts
dans le dossier des fichiers de polices à utiliser.
Je sais que cela fonctionne pour trouver le ~/.fonts
annuaire. Mais quand je lance Inkscape, tout ce que je reçois est un message indiquant qu'Inkscape n'a pas pu créer le .inkscape
répertoire :
$HOME
n'est pas définir l'emplacement de mon répertoire personnel ? Pourquoi Inkscape essaie-t-il toujours d'accéder à /
comme répertoire personnel ?
Réponse acceptée :
Inkscape, étant une application GTK, utilise la fonction GLib g_get_home_dir pour trouver le répertoire personnel de l'utilisateur. Comme documenté dans ce lien, g_get_home_dir
ne consulte pas $HOME
, mais plutôt /etc/passwd
. Vous devrez patcher Inkscape pour vérifier $HOME
d'abord (comme indiqué dans ce lien).