Install SoftWoRx 7.0.0 on Debian 9
Softworx (stylised SoftWoRx) is the microscope control software for the DeltaVision microscopes. It is also the image analysis software for DeltaVision and OMX, performing image deconvolution and SIM reconstructions. It is based on Priism/IVE which is also proprietary software.
These are instructions to install Softworx 7.0.0 on Debian 9.
Currently, the last version of Softworx is 7.2.2, and the stable version of Debian is 12. These instructions were written back in 2017 when I managed systems with Softworx. These instructions can be used as the basis to install later Softworx versions (versions earlier than 7.0.0 are not fully x86_64 and will require a Debian i386 install or multiarch properly configured), or to install on other Debian version or on Debian-based distributions such as Ubuntu.
Before you start
License file
Softworx requires a license file. Get one before starting the installation. The license file is a text file named license.dat and lists the MAC address of the required ethernet card and the date the license expires.
Nvidia graphics card and drivers
Softworx supposedly requires a Nvidia card and the official Nvidia drivers. Not the new, fancy, and expensive GPUs for AI. Softworx is software from the late 90s and is distributed with workstations with very old Nvidia graphics cards.
My experience, however, is that since Debian 9 the free and open source nouveau drivers work fine. I've also seen it working on machines without a Nvidia graphics card at all.
Download the installer
Softworx has moved around a lot lately. Originally distributed by API (Applied Precision Inc), it moved to GE HealthCare, then to Cytiva, and last to Leica. Currently it is still available to download from the Cytiva website. The directory for version 7.0.0 is at https://download.cytivalifesciences.com/cellanalysis/download_data/softWoRx/7.0.0/SoftWoRx.htm
wget https://download.cytivalifesciences.com/cellanalysis/download_data/softWoRx/7.0.0/dv700_update_RC6.tar tar xf dv700_update_RC6.tar cd dv700_update cd bin md5sum --check md5sums cd ..
There is no directory with an index of all Softworx versions. Previously, I have discovered new versions by experimenting higher version numbers on the directory URL.
Extract the installer and move files in place
Installers are provided as rpm packages. Files on those packages can be extracted with rpm2cpio and then moved to whichever location we want.
cd ../RPMS
sudo apt install rpm2cpio
for RPM_PACKAGE in softWoRx-Base-7.0.0-RC6.x86_64.rpm \
softWoRx-DV-Acquire-7.0.0-RC6.x86_64.rpm \
softWoRx-DV-Analyze-7.0.0-RC6.x86_64.rpm \
softWoRx-OTF-Library-2.0.0-13.x86_64.rpm; do
rpm2cpio $RPM_PACKAGE | cpio -i --make-directories
done
Softworx expects to be placed on /usr/local/softWoRx but that doesn't conform to the Linux Filesystem Hierarchy Standard (FHS). Softworx's directory structure with all files under a single application directory fit better under /opt.
sudo mv usr/local/softWoRx /opt/
sudo mv usr/sbin/dvqd /opt/softWoRx/bin/x86_64/
sudo mv usr/local/otf/ /opt/softWoRx/
sudo mv usr/lib/X11/app-defaults/softWoRx /etc/X11/app-defaults/
sudo mkdir -p /var/opt/softWoRx
sudo chown root:root /etc/X11/app-defaults/softWoRx
sudo chown -R root:root /opt/softWoRx
## /opt/bin and /opt/sbin for things that should be on the PATH
sudo mkdir -p /opt/bin
for PROGRAM in BasicInfo DVExit runDV DVview ; do
sudo ln -s /opt/softWoRx/bin/x86_64/$PROGRAM /opt/bin/$PROGRAM
done
sudo mkdir -p /opt/sbin
sudo ln -s /opt/softWoRx/bin/x86_64/dvqd /opt/sbin/dvqd
So that Softworx can be upgraded without losing the configuration, place it on /etc/opt/ and link to /opt/softWoRx/config.
sudo mv /opt/softWoRx/config /etc/opt/softWoRx sudo ln -s /etc/opt/softWoRx /opt/softWoRx/config
Softworx configuration
Because we have placed Softworx under /opt/softWoRx instead of /usr/local/softWoRx, we need to edit the default configuration:
sudo sed -i 's,^DV_BASE .*,DV_BASE /opt/softWoRx,' \
/etc/opt/softWoRx/system.swrc
sudo sed -i 's,^DV_DATA .*,DV_DATA ./,' \
/etc/opt/softWoRx/system.swrc
sudo sed -i 's,^DV_OTF .*,DV_OTF /opt/softWoRx/otf,' \
/etc/opt/softWoRx/system.swrc
License file
Softworx needs a license file. Place it at /etc/opt/softWoRx/license.dat.
Dependencies
sudo apt install libxm4 csh
building libXp from source
libXp is not packaged on Debian 9 (there are libxp packages for Debian 8 and 10 though) so it needs to be built from source.
sudo apt install xorg-dev make gcc x11proto-print-dev wget https://www.x.org/releases/individual/lib/libXp-1.0.3.tar.gz tar xzf libXp-1.0.3.tar.gz cd libXp-1.0.3/ ./configure make sudo make install sudo ldconfig cd .. rm libXp-1.0.3.tar.gz rm -r libXp-1.0.3/
libtiff.so.3
Softworx links against libtiff.so.3 but Debian 9 only has libtiff.so.5. It is possible to build libtiff from source but creating a symlink named libtiff.so.3 is enough for Softworx to start. There may be issues later but if you're using Softworx you will mainly be using dv files and not tiff.
Fix shell scripts
SHELL_SCRIPTS=$(file /opt/softWoRx/bin/x86_64/* | grep shell |cut -f1 -d ':') ## uname -p is not portable sudo sed -i 's,uname -p,uname -m,g' $SHELL_SCRIPTS ## re-hardcode SW_BASE path sudo sed -i 's,/usr/local/,/opt/,g' $SHELL_SCRIPTS ## This program just does not work echo '#!/bin/bash xdg-open $1 & sleep 1 exit 1' | sudo tee /opt/softWoRx/bin/x86_64/DVShowDir sudo chmod a+x /opt/softWoRx/bin/x86_64/DVShowDir
Force ethernet card to be named eth0
Softworx licensing is tied to the Mac address of the network device named eth0. Debian 9 will, by default, use predictable, stable network interface names which are named like ens32. The old-style, upredictable names, like eth0, can be forced with udev rules.
## Get the MAC address from the license file
HWADDR=$(grep -Po -m 1 '(?<=HOST ")[0-9A-F:]{17}(?=")' \
/etc/opt/softWoRx/license.dat \
| tr '[:upper:]' '[:lower:]')
echo \
'SUBSYSTEM=="net",'\
'ACTION=="add",'\
'DRIVERS=="?*",'\
'ATTR{address}=="'$HWADDR'",'\
'ATTR{type}=="1",'\
'NAME="eth0"' \
| sudo tee /etc/udev/rules.d/70-persistent-net.rules > /dev/null
The new name will only be applied after restarting.
Configure dvqd daemon
The DeltaVision processing queue manager (dvqd) is a system service and starts automatically. A SysV init file is provided but Debian 9 has moved to systemd. We have placed Softworx under /opt so need to update the paths for that.
sudo ln -s /opt/softWoRx/bin/x86_64/dvqd /opt/sbin/dvqd sudo mv /opt/softWoRx/bin/x86_64/dvqd.init_DEBIAN /etc/init.d/dvqd sudo chmod 755 /etc/init.d/dvqd sudo sed -i 's,/usr/sbin/,/opt/sbin/,g' /etc/init.d/dvqd sudo sed -i 's,/var/\(run\|lock\)/,/var/opt/softWoRx/,g' /etc/init.d/dvqd sudo systemctl daemon-reload sudo systemctl enable dvqd.service sudo systemctl start dvqd.service
Desktop shortcuts
sudo mkdir -p /usr/local/share/pixmaps
sudo mkdir -p /usr/local/share/mime
sudo mkdir -p /usr/local/share/mime/packages
sudo mkdir -p /usr/local/share/applications
## Shortcut to start SoftWoRx
echo "\
[Desktop Entry]
Version=1.1
Type=Application
Name=Start softWoRx
Comment=softWoRx
Exec=/opt/softWoRx/bin/x86_64/runDV
Icon=sw_app_icon.xpm
Terminal=false
Categories=Science;ImageProcessing;Motif" \
| sudo tee /usr/local/share/applications/swstart.desktop > /dev/null
## Shortcut to exit SoftWoRx
echo "\
[Desktop Entry]
Version=1.1
Type=Application
Name=Quit softWoRx
Comment=Shut Down and Clean Up softWoRx
Exec=/opt/softWoRx/bin/x86_64/DVExit
Icon=sw_stop_icon.xpm
Terminal=false
Categories=Science;ImageProcessing;Motif;" \
| sudo tee /usr/local/share/applications/swexit.desktop > /dev/null
## Application to view DV files
echo "\
[Desktop Entry]
Version=1.1
Type=Application
Name=DVview
NoDisplay=true
Comment=View dv file in softWoRx
Exec=/opt/softWoRx/bin/x86_64/DVview %f
Icon=sw_app_icon.xpm
Terminal=false
StartupWMClass=softWoRx
MimeType=image/deltavision;" \
| sudo tee /usr/local/share/applications/dvview.desktop > /dev/null
## Register mime type for dv files (so viewer opens when opening them)
echo '<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="image/deltavision">
<icon name="image-deltavision"/>
<comment>Deltavision Image</comment>
<glob pattern="*.dv"/>
<glob pattern="*.mrc"/>
<glob pattern="*.otf"/>
<glob pattern="*.psf"/>
<magic priority="100">
<match value="0xc0a0" type="big16" offset="96"/>
<match value="0xa0c0" type="big16" offset="96"/>
</magic>
</mime-type>
</mime-info>' \
| sudo tee /usr/local/share/mime/packages/softworx.xml > /dev/null
for FNAME in deltavision-image.png sw_app_icon.xpm sw_stop_icon.xpm ; do
sudo ln -s /etc/opt/softWoRx/desktop/$FNAME \
/usr/local/share/pixmaps/$FNAME
done
sudo update-mime-database /usr/local/share/mime
sudo update-desktop-database /usr/local/share/applications