Linux architecture confusion

A common problem clients have is to install the right plugin file on Linux. It seems to confuse some clients which Linux variant they have and then the plug-in won't load.

Plugin location

The MBS Plugin on a server goes into three folders:

FileMaker Server/Database Server/Extensions FileMaker Server/Web Publishing/publishing-engine/cwpc/Plugins/ FileMaker Server/Web Publishing/publishing-engine/wip/Plugins/

First is for server side scripts, second for WebDirect and third for Data API. Once you put the plugin into the folders, check admim-console to activate plugins for all three and for server scripting activate MBS plugin. If the plugin doesn't show there, you may need to restart server.

Once plugin is loaded, you should find new log files in your Logs folder.

Check System

To figure out the linux brand in the Terminal or remote shell, you can run the uname -a command. The uname command displays information about the system. The -a switch prints hardware platform, release level, operating system implementation and the version level of this release:

uname -a

Output may look like this:

Linux ubuntu-linux-22-04-02-desktop 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:46 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux

Yes, this output is from the desktop version of Ubuntu 22. The one you get if you just run Parallels application on macOS and use the wizard to download Ubuntu 22 for you. Very convenient to setup and FileMaker Server runs fine on it.

So on the end in the architecture it should show aarch64 for ARM and x86_64 for Intel.

Check Plugin

You can use the file command to look which plugin you got:

file MBS.fmx

This will print the details about the plugin file. Looks like this for the ARM version on Linux:

MBS.fmx: ELF 64-bit LSB shared object, ARM aarch64, version 1 (GNU/Linux), 
dynamically linked, interpreter /lib64/1d-linux-x86-64.so.2, with debug_info, not stripped

And the Intel version showed:

MBS.fmx: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), 
dynamically linked, interpreter /lib64/ld-linux-x86-64.50.2, 
BuildID[sha1]=1c6eddd9fb23c13d3c5ec8828dcOecde0a17a7e9, with debug_info, not stripped

So it prints that the file is in ELF format, the linux shared library format. Then the architecture is either aarch64 for ARM or x86-64 for Intel.

Please makes sure that you got the file matching the architecture. If you have the wrong one, the plugin will not load.

Check Dependencies

Our plugin has a couple of dependencies. You can run ldd command on the terminal to list them

ldd MBS.fmx

The output on an Intel machine looks like this:

linux-vdso.so.1 (0x00007ffde2fee000)
libgomp.s0.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007feb17ff3000)
libuuid. so.1 => /Lib/x86_64-linux-gnu/Libuuid.so.1 (0x00007feb17dec000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007feb17bd2000)
libdl.so.2 => /lib/x86__64-Linux-gnu/Libdl.so.2 (0x00007feb179ce000)
librt. so.1 => /lib/x86__64- Linux-gnu/Librt.so.1 (0x00007feb17766000)
libpthread. 50.0 => /Lib/x86_64-Linux-gnu/Libpthread.so.0 (0x00007feb175a7000)
libFMWrapper.so => not found
libstdc++.50.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007feb1721e000)
libm. so.6 => /lib/x86_64-linux-gnu/Libm.so. 6 (0x00007feb16e80000)
libgce_5.50.1 => /lib/x86_64- linux-gnu/libgcc_5.50.1 (0x00007feb16c68000)
libc.50.6 = /lib/x86_64-linux-gnu/Libc.so.6 (0x00007feb16877000)
/lib64/ld-linux-x86-64.50.2 (0x00007feb1a3cc000)

As you see the libFMWrapper.so reports as not found. That is not a problem as FileMaker will make sure it can be found on loading. But all other entries need to point to libraries on the system. If some other library reports "not found", that would be a missing package. Please note that the ARM version has more dependencies.

Check file permissions

Another possibility is that the file is uploaded via SFTP with a different user and FileMaker Server can't read it. The plugin file doesn't need to have a particular owner, but the file must be readable. File permissions can be just be read&write for whoever uploaded it and read for everyone else. Execute flag isn't needed.

chmod 644 MBS.fmx

You can check with ls -al and get the permissions, e.g. -rw-r--r-- which is exactly what we asked for with 644. If the owner is my normal user "parallels" and permissions would be 600 to deny permissions to others, FileMaker Server may not be able to read the file.

See also: Why MBS Plugin fails to load?

2 Likes