1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 <2018> 2019 2020 2021 2022 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: EPICS Application Package |
From: | "Engbretson, Mark S." <[email protected]> |
To: | 'EPICS Tech Talk' <[email protected]> |
Date: | Fri, 12 Oct 2018 13:42:12 +0000 |
Aldditional - If you look in Area Detector, There is a script that Mark Rivers wrote (makeADPrebuilt) which zips up all the important directories (opi,db,bin,lib,dbd,etc)
so that you get a rather small repository which you can deploy on similar hardware, and all you have to do is resolve the scripts or support files (in iocBoot) that may have hard encoded references. So if you have a single development location which builds
for many platforms, a script such as this can make your deployment packages. From: [email protected] <[email protected]>
On Behalf Of Ralph Lange Hi Vikram, As so often, there are many solutions for packaging EPICS IOC applications. Some institutes are building system packages (RPM or DEB depending on the distribution) of all EPICS and Driver modules (Asyn, Stream etc.). In such a context, an IOC application can also be packaged into an RPM/DEB that contains dependencies
on the packages it needs to function. Installing the IOC application package on the production host will exactly pull all packages that it needs. This approach needs a serious building and repository infrastructure, and package building has a steep learning curve. Only efficient for large installations. Other institutes are using an NFS mounted repository of all applications and shared libraries and a database of versions of tested combinations of these, and load device support and EPICS modules dynamically from the startup script of the
IOC. This also needs a careful design and serious building infrastructure in the background, but maybe requires less upfront work and learning compared to the first option. Some installations have started experimenting with creating IOC applications as containers, e.g. using Docker. This increases robustness and portability, as all needed files and libraries are inside the container which can be run on any
Docker server, with little further requirements on operating system and version of the host. Note that access to specific hardware is limited from inside a container, but applications that only need network access should work fine. If your requirement really is "no EPICS installation necessary on target", the best simple and pretty robust option might be building your IOC application statically (and expanding all substitutions into db files on the host), then creating
a tar of the (bin, dbd, db, iocBoot) directories. You should be able to unpack such a tar and run the IOC on any host that has the same operation system. Change management (versioning and safe roll-back of your IOC applications) is a whole separate story. Hope this helps, ~Ralph |