From MdsWiki
MDSplus now provides a debian repository for Ubuntu and Debian linux distributions. This will enable you to subscribe to automatic updates as they are released. The MDSplus packaging has also been changed significantly. You can pick and choose which features of MDSplus you want to install on your linux system. Go back to downloads page.
Release Levels
There are currently 2 different release levels of MDSplus:
Release Level | Description |
---|---|
alpha | Updates occur whenever a change to an MDSplus source module. Reflects the HEAD of the Git Repository. |
stable | Updates occur less frequently. New features added only after significant testing by sites using the alpha packages. Bug fixes applied as needed. |
Importing the signing key
Defining a signing key for all repositories is now deprecated, so instead we install the signing key in /usr/share/keyrings/ and then tell apt to use that key when updating from our repository specifically.
curl -fsSL http://www.mdsplus.org/dist/mdsplus.gpg.key | sudo tee /usr/share/keyrings/mdsplus.asc > /dev/null wget -O- http://www.mdsplus.org/dist/mdsplus.gpg.key | sudo tee /usr/share/keyrings/mdsplus.asc > /dev/null
This will require: curl/wget, gnupg, sudo
Alternatively, you can install the key for all repositories, although this is less secure:
curl -fsSL http://www.mdsplus.org/dist/mdsplus.gpg.key | sudo tee /etc/apt/trusted.gpg.d/mdsplus.asc > /dev/null wget -O- http://www.mdsplus.org/dist/mdsplus.gpg.key | sudo tee /etc/apt/trusted.gpg.d/mdsplus.asc > /dev/null
And failing both of those methods, you can add trusted=true to your deb entry in mdsplus.list which will disable key checking.
Enabling MDSplus Debian Repository
To add an MDSplus repository to your systen, simply run the following:
Debian
# Sid, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/sid/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Sid, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/sid/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # Bullseye, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/bullseye/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Bullseye, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/bullseye/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
# Buster, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/buster/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Buster, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/buster/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # Stretch, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/stretch/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Stretch, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/stretch/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
# Jessie, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/jessie/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Jessie, release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/jessie/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # Wheezy, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/wheezy/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # Wheezy, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/debian/wheezy/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
NOTE: Debian Wheezy, and Jessie are officially past end of life and there will be no more MDSplus updates available for them.
Raspberry Pi
# alpha release sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/raspberrypi/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # stable release sudo sh -c "echo 'deb [signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/raspberrypi/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
Ubuntu
# 22, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu22/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 22, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu22/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # 20, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu20/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 20, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu20/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # 18, alpha release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu18/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 18, stable release sudo sh -c "echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/mdsplus.asc] http://www.mdsplus.org/dist/Ubuntu18/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # 16, alpha release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu16/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 16, stable release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu16/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
# 14, alpha release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu14/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 14, stable release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu14/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list" # 12, alpha release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu12/repo MDSplus alpha' > /etc/apt/sources.list.d/mdsplus.list" # 12, stable release sudo sh -c "echo 'deb http://www.mdsplus.org/dist/Ubuntu12/repo MDSplus stable' > /etc/apt/sources.list.d/mdsplus.list"
NOTE: Ubuntu 12, 14, and 16 are officially past end of life and there will be no more MDSplus updates available for them.
Updating local cache
Before you can use the new repository, you need to update the local repository cache:
sudo apt-get update
Downgrading to the previous release
To enable reverting to the previous release in the event that an update broke something you should also add a similar line to your sources list with MDSplus-previous instead of MDSplus:
deb [trusted=yes arch=amd64] http://www.mdsplus.org/dist/os-selection/repo MDSplus-previous flavor
This will enable you to specify the previous release number when using the apt-get install:
apt-get upgrade --only-upgrade 'mdsplus*'=n.n.n
where n.n.n is the version to downgrade to. To determine the version you can revert to use the following commands:
apt-get update apt-cache showpkg 'mdsplus*'
This should show two versions, the most recent and the previous version of MDSplus in the repository.
MDSplus Packaging
MDSplus has been split into several packages so that you can install only the parts which you need. The following is the list of packages available to install. You can alway add or remove packages as needed.
Package | Description |
---|---|
Catch all. If specific package is not specified, a catch all package will be installed which contains dependencies to the core system MDSplus subpackages. | |
camac | scripts and tdi functions for communicating with CAMAC serial highway data acquisition devices. |
camac_bin | Libraries and executables for communicating with CAMAC serial highway data acquisition devices. |
devel | Include files for software development. |
devel_bin | Static libraries for software development. |
epics | Configuration files to provide the interface between EPICS and MDSplus |
d3d | Tdi scripts for accessing data at the D3D experiment operated by GA in California. |
epics | Configuration files used to integrate MDSplus into the EPICS control system software package. |
gsi | Globus security infrastructure configuration files to enable secure mdsip communication using X.509 certificate authentication and authorization. |
gsi_bin | Globus security infrastructure interface libaries to enable secure mdsip communication using X.509 certificate authentication and authorization. |
hdf5 | tdi functions to convert between HDF5 and MDSplus data files. |
hdf5_bin | Libraries and utilities to convert between HDF5 and MDSplus data files. |
idl | Procedures used to access MDSplus from within the IDL (Interactive Data Language) product. |
idl_bin | Libraries needed to access MDSplus from within the IDL (Interactive Data Language) product. |
java | Java classes for accessing MDSplus from within java. Includes utilities such as jScope, jTraverser, and jDispatcher. |
java_bin | Libraries used for accessing MDSplus from within java. Includes utilities such as jScope, jTraverser, and jDispatcher. |
kbsidevices | Device support of devices used by the Korea Basic Science Institute. |
kernel | All the core scripts and configuration files needed for most if not all MDSplus functions. Most other packages will include dependencies on this package. |
kernel_bin | All the core libraries and executables needed for most if not all MDSplus functions. Most other packages will include dependencies on this package. |
labview | Labview VI's for accessing MDSplus. |
labview_bin | Libraries needed by Labview VI's for accessing MDSplus. |
matlab | Matlab interface for MDSplus |
mitdevices | Device support for many types of data acquisition devices developed at MIT Plasma Science and Fusion Laboratory. |
mitdevices_bin | Libraries needed to provide device support for many types of data acquisition devices developed at MIT Plasma Science and Fusion Laboratory. |
motif | Configuration files for Openmotif based utilities including dwscope, traverser, actmon, and actions. |
motif_bin | Libraries and user interface descriptions used by the MDSplus motif applications. |
mssql | Interface to Microsoft SQL relational databases. |
php | PHP interface to MDSplus used for web cgi development. |
python | Python language support for accessing MDSplus from python or python from MDSplus. |
rfxdevices | Device support for many types of data acquisition devices developed for the RFX experiment in Padova. |
Performing the installation
Depending on the MDSplus packages you are installing you may need to install additional packages that MDSplus uses but may not be pulled in by automatically detected packages during the MDSplus package building process. The following table list some of those extra dependencies:
MDSplus package | Dependency | Installation |
---|---|---|
mdsplus-python | python-numpy | apt-get install python-numpy |
mdsplus-java | a java jre | i.e. "apt-get install openjdk-6-jre". 6 or greater should work. |
mdsplus-motif | libmotif4 | On Debian you need to add the "non-free" repo then apt-get install libmotif4 |
mdsplus-mitdevices | PyXML | May need to "easy_install" this python module if not in any apt repository. |
Once the MDSplus repository is added to the /etc/apt/sources.list file. Installing MDSplus packages can be done using the apt-get command as follows:
sudo apt-get install mdsplus[-flavor]-package
If you are using the stable repository the following are some example installation commands:
sudo apt-get install mdsplus-python #### Installs the python module and dependencies sudo apt-get install mdsplus-kernel #### Installs the core part of MDSplus sudo apt-get install mdsplus #### Installs all the core MDSplus packages
If you are using the alpha repository you need to include the flavor in the package name:
sudo apt-get install mdsplus-alpha-camac #### Installs the alpha version of camac package sudo apt-get install mdsplus-alpha #### Installs all the alpha packages
Note you can only install packages from one flavor of repositories since packages from different releases may be incompatible.
After successfully installing MDSplus you will need to log out and back in to pick up environment variables needed to operate MDSplus.
Updating your installation
To perform updates of your MDSplus packages simply do:
sudo apt-get upgrade "mdsplus*"
Manually installing MDSplus packages
It is possible to manually install MDSplus debian packages instead of using a debian repository but you will need to deal with the dependencies your self. It is much easier to use the repository. The following tables are lists of the most recent MDSplus debian packages.
To download packages manually browse to http://www.mdsplus.org/dist/os-type/branch/DEBS and search for the desired debian packages where os-type is one of the debian based supported operating systems and branch is either stable or alpha.
Post Installation Configuration
If you are going to access MDSplus trees using the distributed tree mechanism you will need to define environment variables with the name 'treename'_path which define where the tree files are located. These environment variables can be defined individually by the user but an easier way to define these environment variables is to configure these for all users by creating a /usr/local/mdsplus/local/envsyms file with definitions such as:
mytree_path /mytreedirspec
When users log into the system the script called /etc/profile.d/mdsplus.sh (or .csh) processes the file called /usr/local/mdsplus/etc/envsyms to define environment variables. This envsyms file is part of the MDSplus kernel and should not be modified. Instead this configuration file contains "include" directives to include other configuration files such as /usr/local/mdsplus/local/envsyms which is where site specific modifications to the environment should be made.
You can enable remote data access from this computer by first installing xinetd if it is not already installed. If you want unencrypted mdsip access to your system you will need to modify /etc/xinetd.d/mdsip and change the disabled option to "no" and then reload the xinetd configuration by issuing the command:
/sbin/service xinetd reload
(If the file /etc/xinetd.d/mdsip doesn't exist, it can be copied from /usr/local/mdsplus/rpm/mdsipd.xinetd and renamed to /etc/xinetd.d/mdsip.)
If you have the gsi package installed and want to enable the encrypted gsi service you need to modify /etc/xinetd.d/mdsips and reload xinetd. You will also need to open these ports on the iptables firewall.
The control of who can connect to your computer using these services and which accounts the connections get mapped to is configured in a file called /etc/mdsip.hosts. This file should contain lines of the format:
remote-user-connection-string | local-account
where the remote-user-connection-string for unencrypted mdsip would be something like remote-username@remote-hostname. This connection string can contain wildcards. For example, one could specify *&*.mydomain.org to match any user connecting from a host in the mydomain.org domain. Each asterisk in the connection string will match zero or more arbitrary characters. A percent character will match any single character. You can use either host names or ipv4 addresses. When a connection is first made, the connection string is checked for a match in the mdsip.hosts file starting from the top. Match checking stops when the first match has been found. There is also a special MAP_TO_LOCAL keyword that can be used instead of a specific local-account name. This will attempted to map the incoming connection to the same account name as the remote user account name. If you place an exclamation mark as the first character in a line, a match on the incoming connection string will result in the connection being denied. Lines beginning with # will be treated as comments and will be ignored.
If you are using the gsi enabled service the remote user connection string consists of the distinguished name (DN) or the X.501 certificate used by the client to authenticate with the server followed by the remote hostname or ip address. Your mdsip.hosts account matching lines should then look something like:
/O=Grid/O=National Fusion Collaboratory/OU=MIT/CN=Thomas W. Fredian/* | xyz
Enabling automatic updates
Ubunutu automatic package updates are done by the unattended-upgrades package. Install and configure it as per: https://libre-software.net/ubuntu-automatic-updates/
Then add the following line to: /etc/apt/apt.conf.d/50unattened-upgrades in the 'Unattended-Upgrade::Allowed-Origins' section
"MDSplus Development Team:*"