ZM OpenSuse 13.1 /tmp directory

Forum for questions and support relating to the 1.26.x releases only.
Locked
px03afk
Posts: 77
Joined: Wed Nov 30, 2011 4:53 pm

ZM OpenSuse 13.1 /tmp directory

Post by px03afk »

I have been running ZM for a couple of years on OpenSuse without any problems. This last weekend I upgraded my system to OpenSuse 13.1 and have run into a slightly strange problem which I can't seem to fix.

The problem manifests itself because I use a background script to check whether ZM is running and this script uses a zmpkg.pl status request, which in turn calls zmdc.pl check. I ran zmdc.pl under perl diagnostics and checked where it was looking for the socket and as expected it said /tmp/zm - I didn't change the default when I compiled ZM. However, even with the console saying ZM is running zmdc.pl check says stopped and there is no zmdc.pl file in /tmp/zm.

When I did a find for zmdc.sock I found another copy in /tmp/systemd-private-v1Apw1/tmp/zm when the console says running and again the file disappears when I ask the console to stop.

I cannot work out why the console and command line are using two different tmp directories.

Has anyone else seen this and any idea how to sure it?
px03afk
Posts: 77
Joined: Wed Nov 30, 2011 4:53 pm

Re: ZM OpenSuse 13.1 /tmp directory

Post by px03afk »

Sorry, spotted a typo - the file in /tmp/zm would be zmdc.sock
px03afk
Posts: 77
Joined: Wed Nov 30, 2011 4:53 pm

Re: ZM OpenSuse 13.1 /tmp directory

Post by px03afk »

I eventually worked out where the problem is. OpenSuse (and other distros) have moved to systemd and the service file for apache2 has the option PrivateTmp set true. That means that any application using apache and asking for a /tmp directory will get it in the private space and not the real /tmp. The command line for zm will of course use the real /tmp and therefore the two will not see each other.

Originally I decided to change the zm configuration to use a different ZM_TMPDIR directory so that I didn't have to mess with the apache service file but that didn't work, even with the configuration option of -D ZM_TMPDIR=/var/run/zmtmp when zm starts from a command line call it it still using /tmp. Interestingly I left out the first / after = and then starting complained that it couldn't create the directory and I now notice that my directory is being created but zmdc.sock is still going in to /tmp/zm and without changing the apache service the console still says that zm is stopped.

I didn't really want to change the apache service because there is always the risk that an update will revert the setting to the original but because zm insists on using /tmp I didn't have any choice and indeed, by setting PrivateTmp to false the console now finds zm is running.

So it looks as though there is a bug somewhere which means that ZM_TMPDIR is not being used correctly. Also, as this problem will now always occur when apache is using private tmp directory should the default be changed as well.

Can anyone advise how I can get this information to the developers.
px03afk
Posts: 77
Joined: Wed Nov 30, 2011 4:53 pm

Re: ZM OpenSuse 13.1 /tmp directory

Post by px03afk »

After more digging around on this and contact with the developers (thanks) I have discovered that there are entries in the database which point to /tmp and don't appear to be changed as a direct result of modifying the ZM_TMPDIR comiple directive when you have an existing system. On a new database, if you compile with this directive then the database will be created with the value you specify.

There are 4 records which contain the value from ZM_TMPDIR so if you want to change the directory after creating the database you may need to amend these rows:

ZM_PATH_SOCKS
ZM_PATH_SWAP
ZM_UPLOAD_FTP_LOC_DIR
ZM_UPLOAD_LOC_DIR

You will find both Value and DefaultValue columns contain the value.
Locked