How to get the version of the Tango Host installation?

Dear Tango Community,

I was wondering how to get the version of the Tango Host installation?
The background is that I use PyTango for my Servers and Clients and the PyTango version can be determined with

print(tango.utils.info())

which returns something like

Populating the interactive namespace from numpy and matplotlib
PyTango 9.3.3 (9, 3, 3)
PyTango compiled with:
Python : 3.8.0
Numpy : 0.0.0
Tango : 9.3.4
Boost : 1.73.0

PyTango runtime is:
Python : 3.8.13
Numpy : 1.21.5
Tango : 9.3.4

PyTango running on:
uname_result(system='Windows', node='DESKTOP-T3656EJ', release='10', version='10.0.19044', machine='AMD64', processor='Intel64 Family 6 Model 79 Stepping 1, GenuineIntel')


however this only shows information about PyTango and not the Tango Host installation. Updating PyTango is very easy but I think the Tango Host installation is not affected by this? To be honest, I dont really know "what" the Tango Host installation is because I only use PyTango and the Java tools. The Java tools can also be updated fairly easy. So maybe I can reframe the question to something like "what in my Tango system remains old if I update PyTango (all DS and client Apps in Python) and the Java tools?"

So in the end I want to know what ist the installed version of https://gitlab.com/tango-controls/cppTango/-/releases on the Tango Host PC.

Thanks,
Dominik
Hi Dominik

When we refer to the "Tango Host", we usually mean the machine that runs the DatabaseDS device server process. This has a Tango device that connects to the database system (MariaDB, MySQL) that stores all the configuration for your Tango system. Device names, properties, etc. See: https://tango-controls.readthedocs.io/en/latest/installation/minimum-deployment.html#tango-host-role

You normally have an environment variable, TANGO_HOST, which gives the host name and port that the DatabaseDS is running on.

You need to access that machine and see what version of cppTango (libtango) it is using, and what version of the Databaseds device server code it has (tango-db/tango-database). The Databaseds is a C++ device server so it won't change if you update PyTango or Java.

If it was installed with your operating system's package manager, it could look like this on Ubuntu or Debian:

root@b8a57b545843:/# dpkg -l | grep tango
ii liblog4tango5v5:amd64 9.2.5a+dfsg1-2ubuntu1 amd64 logging for TANGO - shared library
ii libtango-tools 9.2.5a+dfsg1-2ubuntu1 amd64 TANGO distributed control system - common executable files
ii libtango9:amd64 9.2.5a+dfsg1-2ubuntu1 amd64 TANGO distributed control system - shared library
ii tango-common 9.2.5a+dfsg1-2ubuntu1 all TANGO distributed control system - common files
ii tango-db 9.2.5a+dfsg1-2ubuntu1 amd64 TANGO distributed control system - database server

If if was installed using conda it could look like this:


% conda list
# packages in environment at /opt/conda/envs/tango-db:
cpptango 9.4.1 hae10f42_0 conda-forge
tango-admin 1.17 hffc8910_1 conda-forge
tango-database 5.20 h4f9cb39_1 conda-forge
tango-test 3.6 hffc8910_1 conda-forge
Edited 1 year ago
Hi Anton,

Thank you for your response.

I am working on the "Tango Host PC" with the Tango-DataBaseds and Tango-Starter services running, but I am afraid it is a Windows 10 PC. This is my development PC, everything is on this one machine. I do have several anaconda environments, one of them has cppTango 9.4.1 installed, which is the one I am testing the new versions of PyTango on. This is actually part of my question. If I update cppTango to 9.4.1 with anaconda from conda-forge (along with PyTango 9.4.1), is this all I need to do to "update the Tango System"? Because there is only this one machine in my Tango System.

Cheers,
Dominik
Edited 1 year ago
Yes, if you just have one Conda environment with Tango in it, then that's all you need to update.

Installing cpptango and pytango 9.4.1 will update those packages. So any Tango device servers that depend on them will then be using the new code.

E.g., if your Conda environment is called tango-env, you could get the latest compatible releases with:


% conda update -n tango-env pytango cpptango


You need to update all the packages you care about. E.g., doing the above will update the core Tango libraries, but won't necessarily change the tango-database, which has the DatabasDS Tango device server application.

/Anton
Hi Anton,

so it seems to me that it is possible to run the database-ds and starter device server from python as well? I see database-ds, starter etc on conda-forge. So one could run an entire Tango system from python? This would be very convenient because in this case I understand why one just needs to run conda update to update the whole system. Is there a tutorial about this? I checked tango-controls.readthedocs and pytango.readthedocs so I assumed the database-ds and starter always needed to be launched "normally" (the C++ variant) and all other actuall application device servers and client can run from python.

Cheers,
Dominik
Hi Dominik

Sorry for slow reply on this one.

You are right that database-ds, starter, etc. are on conda-forge. However, that doesn't mean that they are running as Python applications. Conda allows packaging of non-Python libraries and applications as well. When you start with Conda it seems like it is just for Python things, but it is a little broader than that.

What we have on conda-forge is the C++ applications. You can even get Java applications like jive, atk-panel (as "tango-atk-panel") and pogo from conda-forge.

Yes, you can run conda update to update everything in a Conda environment.

/Anton
Hi Dominik,

how exactly did you install the `Tango-DataBaseds` and `Tango-Starter`? If they came from the Tango 9.2.2 windows installer, I believe both EXEs are statically built and have no dependency on any Tango DLLs. So whatever you install or change around that, the database server and starter device run fine and have no "hidden" dependency.

I checked this by renaming the `tango.dll` inside the `%TANGO_ROOT%\bin` folder (both EXEs continued working) and using the tool "dependency walker" aka `depends.exe`. The tool shows only dependencies on Windows DLLs and a MySQL DLL for the Databaseds.

Not sure if this changed for newer releases, for the production system we have the database running on Linux.

Thanks Anton for the hint of finding the Java tools on conda, I never realized.

Best, Lenny
 
Register or login to create to post a reply.