This site is being deprecated.

Please see the official X‑Plane Support page for help.

0 votes
asked by (15 points)
Downloaded current installer zip for Linux 64bit, extracted, started installer.

After entering product key, immediately jumps to end and states: "There was a problem installing X-Plane. Please try the updater again later or contact Laminar Research support at [email protected] for help. (The technical problem was: Permission Denied. Perhaps you do not have access to a directory or file system.)"

Log file says nothing.

I found the reason for this in my case by running the installer via:

strace -f -ff -o trace.log "./X-Plane 11 Installer Linux"

and searching for EACCES in the generated log files.

Turns out, the installer likes to generate the files "/tmp/directory.txt" and "/tmp/server_list_10.txt". If these files already exist and are owned by a different user, the installation fails with the said error messages.

To the guys at Laminar:

1. PLEASE follow proper naming schemes for temporary files. Naming a file "/tmp/directory.txt" on a multi-user system in the global temporary directory is a strict NO-GO! Please stick to proper ways of naming temporary files -- AT LEAST the file names should contain something like "x-plane" in their name. Better, create /tmp/x-plane.<PID> and put everything in there.

2. What is the purpose of the log file generated by the installer if the log file does not even list where errors occur? I'm really glad that at least "technical error permission denied" was reported which allowed to easily grep through the strace log. But a log file entry ala "failed to open /tmp/directory.txt: permissoin denied" would have been extremely helpful.

1 Answer

+1 vote
answered by (19.3k points)
It looks like you've figured out how to work around this. I've pointed out your suggestions to our developers as well to take into consideration for a possible update.
commented by (15 points)

Although much better than the current way, "/tmp/x-plane.<PID>" isn't the best idea either. There are functions like mkstemp() that are made to handle such things.