wiki:IDL

Version 23 (modified by cdelacruz@…, 19 years ago) ( diff )

--

IDL

IDL is available from rsinc, for a licensing fee (apparently $480 for a "floating node license fee" for educational institutions). The current version appears to be 6.2.

They do support linux, and are moving to a kernel/glibc support indicator strategy (see here). This strategy apparently won't be ready until 6.3. However, that doesn't mean that the earlier systems won't have comparable support.

They also have a linux FAQ which seems somewhat out of date.

licensing

CAL has a "floating" 50 user license (meaning that a properly configured IDL installation requests a license while running and then returns the license when finished). The current license server runs on njord.phys.columbia.edu (a sun) and will serve licenses to any version of IDL running on any operating system. Installation of IDL on a client machine means both installing the software and a "license.dat" file that contains the information required by the license server.

license server

The license server used by IDL is FLEXlm. Instructions for installing this are available here.

Linux Installation

Create a directory (opt/rsi) and extract the contents of flexlm_linux.x86.tar.gz:

Create a non-privileged system user:
{{{
[1 root@neptune bin]# adduser --system --uid 100
Enter a username to add: flexlm
Adding system user `flexlm'...
Adding new user `flexlm' (100) with group `nogroup'.
Creating home directory `/home/flexlm'.
[0 root@neptune bin]#


[0 root@neptune bin]# getent passwd | grep flexlm
flexlm:x:100:65534::/home/flexlm:/bin/false
[0 root@neptune bin]#
}}}

mkdir /opt/rsi
tar xzvf flexlm_linux.x86.tar.gz

[0 root@mercury rsi]# ls -l
total 2
drwxr-xr-x  3 flexlm users 1024 2006-04-26 17:37 idl_6.3
drwxr-xr-x  2 flexlm users 1024 2006-04-26 17:37 license

Edit and copy the generated license file (license.dat) to the 'license' folder:

DAEMON idl_lmgrd /opt/rsi/idl_6.3/bin #modified for our installation path

Modify the environment variables/paths in the setup script; chang the default installation path from /usr/local/rsi to /opt/rsi for the following files: license_setup.bash, idl_lmgrd, sys5_idl_lmgrd.

Added the following to the .bashrc file to initialize the rsi paths:

. /opt/rsi/idl_6.3/bin/license_setup.bash

Modify the /opt/rsi/idl_6.3/bin/sys5_idl_lmgrd file:

#LOG_FILE_NAME="/dev/console"
LOG_FILE_NAME="/var/log/flexlm.log" 

create a flexlm.log file under /var/log and modify permissions/ownership
to flexlm:adm. 

#  "start") $IDL_DIR/bin/lmgrd > $LOG_FILE_NAME &
"start") su flexlm -pmc "$IDL_DIR/bin/lmgrd > $LOG_FILE_NAME &"




# The licence management software does not require root privileges
# to operate.  The license management daemons should be started
# by a non-privileged user with a restrictive umask setting, preventing
# the unneccessary use of the root account.  The license manager
# can be started by a non-privileged user by modifying the start
# command from below as follows:
#    "start") su username -c "umask 022;$IDL_DIR/bin/lmgrd > $LOG_FILE_NAME &"
# where "username" is the account name of an unprivileged user that has
# execute permission for the license management utilities, write
# permission to create the log file, and read permission for the license file.

Edit the lmgrd_install installation file:

#!/bin/sh
# This script is intended to be run by the administrator of a UNIX system
# who desires to start the FlexLM license server at system boot time.
# A detailed description of the actions performed by this script are
# contained in the sys5_idl_lmgrd script.
#
# Usage: This script must be run in the directory that contains
# the 'sys5_idl_lmgrd' script (<IDL_DIR>/bin/).
#
.
.
.
    "Linux")
        cp sys5_idl_lmgrd /etc/init.d
        if [ -f /etc/rc2.d/S99sys5_idl_lmgrd ]; then
                rm -f /etc/rc2.d/S99sys5_idl_lmgrd
        fi
        if [ -f /etc/rc3.d/S99sys5_idl_lmgrd ]; then
                rm -f /etc/rc3.d/S99sys5_idl_lmgrd
        fi
        if [ -f /etc/rc4.d/S99sys5_idl_lmgrd ]; then
                rm -f /etc/rc4.d/S99sys5_idl_lmgrd
        fi
        if [ -f /etc/rc5.d/S99sys5_idl_lmgrd ]; then
                rm -f /etc/rc5.d/S99sys5_idl_lmgrd
        fi
        if [ -f /etc/rc0.d/K01sys5_idl_lmgrd ]; then
                rm -f /etc/rc0.d/K01sys5_idl_lmgrd
        fi
        ln -s /etc/init.d/sys5_idl_lmgrd /etc/rc2.d/S99sys5_idl_lmgrd
        ln -s /etc/init.d/sys5_idl_lmgrd /etc/rc3.d/S99sys5_idl_lmgrd
        ln -s /etc/init.d/sys5_idl_lmgrd /etc/rc4.d/S99sys5_idl_lmgrd
        ln -s /etc/init.d/sys5_idl_lmgrd /etc/rc5.d/S99sys5_idl_lmgrd
        ln -s /etc/init.d/sys5_idl_lmgrd /etc/rc0.d/K01sys5_idl_lmgrd
        ;;

By default, the flexlm files attempt to write to /usr/tmp. Create a symbolic link from the root /tmp to /usr/local/tmp.

The flexlm server can now be started:

[0 root@mercury root]# /etc/init.d/sys5_idl_lmgrd start

Check the status of the license server under /opt/rsi/idl_6.3/bin:

[1 root@mercury bin]# ./lmstat
lmstat - Copyright (c) 1989-2005 Macrovision Europe Ltd. and/or Macrovision Corporation. All Rights Reserved.
Flexible License Manager status on Fri 9/22/2006 13:56

License server status: 1700@mercury
    License file(s) on mercury: /opt/rsi/license/license.dat:

   mercury: license server UP (MASTER) v10.8

Vendor daemon status (on mercury):

 idl_lmgrd: UP v10.8

The service appears to be running but the firewall setting may be denying access to the following ports:

lsof -i:

lmgrd     13168        root    0u  IPv4  20431       TCP *:1700 (LISTEN)
lmgrd     13168        root    3u  IPv4  20450       TCP localhost.localdomain:1 700->localhost.localdomain:40969 (ESTABLISHED)
idl_lmgrd 13169        root    0u  IPv4  20431       TCP *:1700 (LISTEN)
idl_lmgrd 13169        root    3u  IPv4  20434       TCP *:54694 (LISTEN)
idl_lmgrd 13169        root    5u  IPv4  20449       TCP localhost.localdomain:4 


Testing from a CW:

cdelacruz@io:/opt/rsi/license$ idl
IDL Version 6.2 (linux x86 m32). (c) 2005, Research Systems, Inc.
% LICENSE MANAGER: Cannot connect to license server system.
   The license server manager (lmgrd) has not been started yet,
   the wrong port@host or license file is being used, or the
   port or hostname in the license file has been changed.
  Feature:       idl
  Server name:   mercury
  License path:  /opt/rsi/idl_6.2/../license/license.dat:/opt/rsi/license -
     /*.lic
  FLEXnet Licensing error:-15,570.  System Error: 115 "Operation now in
  progress"
  For further information, refer to the FLEXnet Licensing End User Guide,
  available at "www.macrovision.com"..
  License file: /opt/rsi/idl_6.2/../license/license.dat:/opt/rsi/license/*.li
  c
% Entering timed demo mode. Each session is limited to 7 minutes
  of operation. Printing and file saving are disabled.

  To obtain a temporary license allowing evaluation of the full
  functionality of this product contact your sales representative or
  RSI (303-786-9900, info@RSInc.com).

IDL>

 
Verifying connection to server (via port 1700):

cdelacruz@phobos:~$ socat STDIO TCP4:mercury.astro.columbia.edu:1700
2006/09/22 14:01:12 socat[17827] E connect(3, AF=2 128.59.168.51:1700, 16): Connection refused
cdelacruz@phobos:~$

Assign static ports to the flexlm services in the license.dat file and open the ports in the shorewall configuration /etc/shorewall/rules:

license.dat:

SERVER mercury 00304853deae 1700
DAEMON idl_lmgrd /opt/rsi/idl_6.3/bin PORT=1705 #assigned port for idl daemon.

rules:

### allow acces to flexlm license server within CAL:
ACCEPT   cal            fw              tcp     1700
ACCEPT   cal            fw              tcp     1705

Automatic startup of the idl daemon has not been tested, to manuallu start the license server:

/etc/init.d/sys5_idl_lmgrd start

Solaris Installation

From: Claire Russell <claire@astro.columbia.edu>
Date: February 3, 2006 12:21:12 PM EST
To: Greg Bryan <gbryan@astro.columbia.edu>
Cc: Carlos De La Cruz <cdelacruz@astro.columbia.edu>
Subject: Re: IDL

Greg,

Hi, looks like IDL 5.3 was disabled a wile back but IDL 5.6 works as does 6.0 
on the other Suns.  I see the new license file in two places:
        /softW_4/license/license.dat
        /softW_4/idl_6.0/license/license.dat     (same as /nfs/idl_6.0/license/license.dat on all Suns)

An oddity with license.dat is that '/usr/local/rsi/idl_6.2/bin/' doesn't exist 
but the license is running okay, see this  line in license.da\t:
DAEMON idl_lmgrd /usr/local/rsi/idl_6.2/bin/

If njord is rebooted, then the local system startup file: /etc/init.d/rc.local 
gets run and that will run the old license manager program(lm\grd).  But maybe that won't matter. 
Lines from rc.local:

# Start license managers
        RSI_DIR=/nfs/idl_6.0
        export RSI_DIR
        IDL_DIR=/nfs/idl_6.0/idl
        export IDL_DIR
        umask 022;su flexlm -c "/nfs/idl_6.0/idl/bin/lmgrd -c /nfs/idl_6.0/license/license.dat > /var/adm/idl.log "

So looks like the new 6.2 license is installed but might have to be restarted by hand after a reboot.
........................................................................
To install IDL 6.2:
Some licensed packages supply the license manager software separately ( for instance Mathematica).  
IDL however, has license manager and app\lication software in the same place.
You have the 'license.dat' file already, so that no worry about getting that.

1.  In any case, to add the new version (6.2), first set the INSTALLATION PATH 
so you can supply that when the RSI installation procedure as\ks you where to put the 
new version.   To do this:
        a) decide where there is room for the package and make the directory. 
           Seems /w1 has a lot of space, so put it there:
                >  mkdir  /w1/idl_6.2
        b) BUT that can't be the INSTALLATION PATH as it won't show up on 
           the other Sun hosts, so make a link:
                > ln -s   /w1/idl_6.2   /nfs/idl_6.2
                (LATER we can change this link to point to the automount point of the new version)

So now the INSTALLATION PATH you will give to RSI installation procedure is:
            /nfs/idl_6.2
and the RSI installation procedure will put the entire software 
package (including the license manager programs(lmgrd, lmdown,etc.) there as\ well.  
It SHOULD use that path to tailor any startup scripts&license 
files (but seems it doesn't, it expands it to the physical one!) so on\e 
has to edit one or two files later.

2. So now after using the RSI installation procedure, and 
supplying it with:/nfs/idl_6.2 , the package should be installed.  
If any odd ques\tions in the RSI procedure, let me know.

3. Then edit file:
        > cp /nfs/idl_6.2/idl_6.2/bin/idl_setup  /tmp
        > emacs /tmp/idl_setup     (replace /w1/idl_6.2 with /nfs/idl_6.2)

        and add a new last line to start up IDL:
                $IDL_DIR/bin/idl

         > cp /tmp/idl_setup /nfs/bins/idl_6.2
         > chmod +x /nfs/bins/idl_6.2      (be sure it's executable)

 4. copy over the new license file:
         cp  /softW_4/idl_6.0/license/license.dat  /nfs/idl_6.2/license/license.dat

 5. I have already added an entry to /etc/auto.indirect_pkg for /nfs/idl_6.2 
assuming that it is at:
         njord:/w1/idl_6.2
     so now:
         > rm /nfs/idl_6.2
         > all_some8 ln -s /nfs/pkg/idl_6.2 /nfs/idl_6.2
         > ls /nfs/idl_6.2              (will show the new installation via the automounter)

 6. then on all Suns:
                 idl_6.2         (search path will find: /nfs/bins/idl_6.2)
     will start up IDL 6.2

 7.  May be an astro library that need to copy from IDL 6.0?  Otherwise, done.


         Claire

Installation

Carlos added this package to metis by Downloading the IDL 6.2 (RHE3.x_FC3_Intelx86) Demo archive and running the ./install script.

root@metis:~# mkdir /usr/local/rsi
root@metis:~# chmod a+rx /usr/local/rsi

root@metis:/usr/local/rsi# gzip -d idl_linux.x86.tar.gz
root@metis:/usr/local/rsi# tar xf idl_linux.x86.tar
root@metis:/usr/local/rsi# ./install


Do you accept all of the terms of the preceding license agreement? (y/n): y

    This script installs Unix IDL version 6.2. The current
    directory is assumed to be the RSI directory under
    which IDL is to be installed.

    Current directory:  /usr/local/rsi
    Current login: root

Do you wish to continue? (y/n): y

    There are 3 ways to create the symbolic links or define
    the environment variables necessary to run IDL:

    1) Allow this script to install IDL in the RSI recommended
       manner:

           - If the rsi directory tree (of which IDL is a
             subdirectory) is not located in /usr/local/rsi,
             create a symbolic link called /usr/local/rsi that points
             at it.

           - Create symbolic links in /usr/local/bin for IDL and
             related commands. To run IDL, users must put
             /usr/local/bin in their execution paths. At most sites,
             this is already the case.

    2) Manually create the symbolic links using the commands:

           setenv  RSI  /usr/local/rsi

           ln -s $RSI    /usr/local/rsi
           ln -s $RSI/ion_6.2/bin/iond    LOCAL_DIR/iond_6.2
 	   ln -s $RSI/ion/bin/iond    LOCAL_DIR/iond

           ln -s $RSI/ion_6.2/bin/ionstat    LOCAL_DIR/ionstat_6.2
           ln -s $RSI/ion/bin/ionstat    LOCAL_DIR/ionstat

           ln -s $RSI/ion_6.2/bin/iondown    LOCAL_DIR/iondown_6.2
           ln -s $RSI/ion/bin/iondown    LOCAL_DIR/iondown

           ln -s $RSI/idl_6.2/bin/idl    LOCAL_DIR/idl_6.2
           ln -s $RSI/idl/bin/idl  LOCAL_DIR/idl

           ln -s $RSI/idl_6.2/bin/idlde    LOCAL_DIR/idlde_6.2
           ln -s $RSI/idl/bin/idlde  LOCAL_DIR/idlde

           ln -s $RSI/idl_6.2/bin/idlrpc    LOCAL_DIR/idlrpc_6.2
           ln -s $RSI/idl/bin/idlrpc  LOCAL_DIR/idlrpc

           ln -s $RSI/idl_6.2/bin/idlhelp    LOCAL_DIR/idlhelp_6.2
           ln -s $RSI/idl/bin/idlhelp  LOCAL_DIR/idlhelp

           ln -s $RSI/idl_6.2/bin/idlman    LOCAL_DIR/idlman_6.2
           ln -s $RSI/idl/bin/idlman  LOCAL_DIR/idlman

           ln -s $RSI/idl_6.2/bin/idldemo    LOCAL_DIR/idldemo_6.2
           ln -s $RSI/idl/bin/idldemo    LOCAL_DIR/idldemo

           ln -s $RSI/idl_6.2/bin/rsilicense    LOCAL_DIR/rsilicense_6.2
           ln -s $RSI/idl/bin/rsilicense    LOCAL_DIR/rsilicense

           ln -s $RSI/idl_6.2/bin/idlman    LOCAL_DIR/ionman_6.2
           ln -s $RSI/idl/bin/idlman  LOCAL_DIR/ionman

           ln -s $RSI/idl_6.2/bin/idlhelp    LOCAL_DIR/ionhelp_6.2
           ln -s $RSI/idl/bin/ionhelp  LOCAL_DIR/ionhelp



      where LOCAL_DIR is the path of a directory on your system
      that commonly appears in users' paths.

    3) Files named idl_setup and idl_setup.ksh are
       automatically created by the installation script.  These
       files contain appropriate definitions for IDL-related
       environment variables and aliases.  If you choose this
       option, you must have your users set up their accounts
       as shown below:

           Have your C-shell users add the line:

               source /usr/local/rsi/idl/bin/idl_setup

           to their .cshrc files.

           Have your Korn shell users add the line:

               . /usr/local/rsi/idl/bin/idl_setup.ksh

           to their .profile files.

           Have your Bash shell users add the line:

               . /usr/local/rsi/idl/bin/idl_setup.bash

           to their .bashrc files.


Create the symbolic links described in option 1 above? (y/n): y



    Link Name: /usr/local/bin/idl_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idl

    Link Name: /usr/local/bin/iond_6.2
    Points at: /usr/local/rsi/idl_6.2/products/ion_6.2/ion_java/bin/iond

    Link Name: /usr/local/bin/iond
    Points at: /usr/local/rsi/idl/products/ion/ion_java/bin/iond

    Link Name: /usr/local/bin/ionstat_6.2
    Points at: /usr/local/rsi/idl_6.2/products/ion_6.2/ion_java/bin/ionstat

    Link Name: /usr/local/bin/ionstat
    Points at: /usr/local/rsi/idl/products/ion/ion_java/bin/ionstat

    Link Name: /usr/local/bin/iondown_6.2
    Points at: /usr/local/rsi/idl_6.2/products/ion_6.2/ion_java/bin/iondown

    Link Name: /usr/local/bin/iondown
    Points at: /usr/local/rsi/idl/products/ion/ion_java/bin/iondown

    Link Name: /usr/local/bin/idl_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idl

    Link Name: /usr/local/bin/idl
    Points at: /usr/local/rsi/idl/bin/idl

    Link Name: /usr/local/bin/idlde_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlde

    Link Name: /usr/local/bin/idlde
    Points at: /usr/local/rsi/idl/bin/idlde

    Link Name: /usr/local/bin/idldemo_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idldemo

    Link Name: /usr/local/bin/idldemo
    Points at: /usr/local/rsi/idl/bin/idldemo

    Link Name: /usr/local/bin/idlhelp_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlhelp

    Link Name: /usr/local/bin/idlhelp
    Points at: /usr/local/rsi/idl/bin/idlhelp

    Link Name: /usr/local/bin/ionhelp_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlhelp

    Link Name: /usr/local/bin/ionhelp
    Points at: /usr/local/rsi/idl/bin/idlhelp

    Link Name: /usr/local/bin/idlman_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlman

    Link Name: /usr/local/bin/idlman
    Points at: /usr/local/rsi/idl/bin/idlman

    Link Name: /usr/local/bin/ionman_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlman

    Link Name: /usr/local/bin/ionman
    Points at: /usr/local/rsi/idl/bin/idlman

    Link Name: /usr/local/bin/idlrpc_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/idlrpc

    Link Name: /usr/local/bin/idlrpc
    Points at: /usr/local/rsi/idl/bin/idlrpc

    Link Name: /usr/local/bin/rsilicense_6.2
    Points at: /usr/local/rsi/idl_6.2/bin/rsilicense

    Link Name: /usr/local/bin/rsilicense
    Points at: /usr/local/rsi/idl/bin/rsilicense


IDL Installation Complete.

Web Servers have a default directory in which Java files
are located.  Please enter the directory where the Java
files are located.
(e.g. /usr/local/apache2/htdocs) (webserver install????)

Web Servers have a default directory in which CGI executables
are located.  Please enter the directory where the server
executables are located.
(e.g. /usr/local/apache2/cgi-bin)

Please enter the fully qualified domain name and the path to
the CGI executables directory for your Web server.
(e.g. myhost.mydomain.com/cgi-bin)


root@metis:/usr/local/rsi# idldemo

IDL Version 6.2 (linux x86 m32). (c) 2005, Research Systems, Inc.

% Embedded IDL: Research Systems, Inc., IDL Demo System.
% Restored file: IDLRTMAIN.
% Embedded IDL: Research Systems, Inc., IDL Demo System.
% IDLRTMAIN: The following error was encountered:  Error loading sharable executable.
               Symbol: IDL_Load, File = /usr/local/rsi/idl_6.2/bin/bin.linux.x86/idl_xml.so ibstdc++.so.5: 
cannot open shared object file: No such file or directory  Please consult the supplier of the application.

Required Packages/Dependancies

Application required the installation of libstdc++5:


root@metis:/etc/apt/apt.conf.d# apt-get install libstdc++5

root@metis:/usr/local/rsi/idl/bin# idldemo
IDL Version 6.2 (linux x86 m32). (c) 2005, Research Systems, Inc.

% Embedded IDL: Research Systems, Inc., IDL Demo System.
% Restored file: IDLRTMAIN.
% Embedded IDL: Research Systems, Inc., IDL Demo System.
% Loaded DLM: XML.
% Restored file: D_ICONTOUR.
% Loaded DLM: JPEG.
% Loaded DLM: PNG.
root@metis:/usr/local/rsi/idl/bin#



Added the following definition to .bashrc:

. /usr/local/rsi/idl/bin/idl_setup.bash


Application launches, as well as the demo modules. 

Astro Modules

Need to find suitable installation packages.

TeXtoIDL:

The purpose of the TeXtoIDL routines is to make it simple to use Greek letters, 
subscripts and superscripts in making labels for plots in IDL. This is accomplished by 
allowing the user to use TeX control sequences for Greek letters and special 
symbols and for sub/superscripts. The TeX control sequences are simple and easy 
to remember, especially if you already use TeX for writing papers (for those 
unfamiliar with TeX, an explanation of that notation is below). The translation 
is done for either vector or PostScript fonts. 

IDLWAVE:
This package has been installed as part of Emacs to enable it to understand 
IDL syntax, which is very useful when writing IDL scripts. A number of lines 
should be added to your ~/.emacs file, and IDLWAVE online information which can 
be viewed with `M-x idlwave-info', or follow the Menu entry in the IDLWAVE menu. 
IDLWAVE also enables running an IDL shell within emacs - type:

	M-X idlwave-shell

which runs your settup defined by the environment variable IDL_STARTUP. 
Note: See TracWiki for help on using the wiki.