The Linux experimental version of DayZ Server appears to refuse to load PBO files when their paths/filenames contain uppercase letters. For example, the CF (aka "Community Framework") mod, which is very commonly used, contains PBO directories and files with capital letters in their names. When I try to load this mod on a Linux server:
$ strace -o trace.txt ./DayZServer -config=serverDZ.cfg -profile=/home/steam/dayz/profile -mod=@CF
The resulting trace shows the server trying to read directories but not trying to read PBO files:
$ grep "openat.*@CF" trace.txt openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/dta", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/mpmissions", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 132 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/Addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 133
Just making the directory names lowercase (i.e. renaming "Addons" to "addons") does not appear to be enough because just changing the directory names causes the server to print an error to the console:
$ strace -o trace.txt ./DayZServer -config=serverDZ.cfg -profile=/home/steam/dayz/profile -mod=@CF Cannot open file '/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF\addons\gui'
However, if I make the directory names lowercase and I make the PBO filenames (and their associated *.bisign filenames) lowercase, it appears as though the server is loading the mod successfully:
$ grep "openat.*@CF" trace.txt openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/dta", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 17 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 18 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 19 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 20 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 21 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 22 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/mpmissions", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 138 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/defines.pbo", O_RDONLY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/scripts.pbo", O_RDONLY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/legacy.pbo", O_RDONLY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/xml.pbo", O_RDONLY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons/gui.pbo", O_RDONLY) = 137 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5 openat(AT_FDCWD, "/home/steam/.steam/steamapps/common/DayZ Server Exp/@CF/addons", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 5
Is this expected behavior? It appears to be pretty common for mods to contain mixed case "Addons" directories and mixed case PBO filenames, so it will be pretty disruptive to require mod authors to republish to fix this issue.