NorduGrid | Globus Release

# Specifics of the NorduGrid release of the Globus Toolkit 2™

## Important notes

The NorduGrid middleware builds on top of the Globus Toolkit 2™. Although any reasonably stable release of GT2™ can be used, NorduGrid exploits many features which are often out of scope of the Globus developers. As a result, several patches and bug fixes for GT2™ are recommended and applied by the NorduGrid. Such patched version of Globus is recommended by the NorduGrid developers, since it allows users to avoid several shortcomings. It is packed as a single RPM distribution and is available for download from the NorduGrid downloads area.

While some patches and fixes are reported back to Globus, the propagation time for a patch into an official release takes too long (months at times). Also, some fixes are either of minor importance, or make use of components not supported by Globus any longer, while being still used by the NorduGrid. Hence the NorduGrid definitely has to provide an own Globus distribution, and intend to do so in future.

Other re-packaged Globus distributions, most notably, those from NMI or VDT, typicaly do not contain NorduGrid patches either, and have an unacceptable latency in releasing new versions. Moreover, the RPM packages provided by these projects are not natively built ones, and can not be re-built on different platforms. Thus, although NorduGrid can be built against such distributions, to achieve the best performance it is recommended to install the NorduGrid-patched Globus Toolkit 2™.

## Installation

The NorduGrid's Globus release is available as pre-build binary packages, either in RPM or gzipped tar formats. The packages must be installed in the following order:

1. Grid Packaging Tools (GPT)
2. Globus Toolkit 2

Binaries are available through the NorduGrid Downloads area under "External software": choose "`gpt`" and "`globus`".

To install from RPMs, do:

rpm -Uvh gpt-<version>.rpm
rpm -Uvh globus-<version>.rpm

To install from the binary tarballs, simply unpack the packages.

Make sure that the environment variables `GLOBUS_LOCATION` and `GPT_LOCATION` are set according to your Globus installation: unless you forced installation in a specific location, the default locations should be `/opt/globus` and `/opt/gpt` respectively.

If you installed Globus from the binary tarballs, execute the post-installation script in `$GLOBUS_LOCATION/setup/globus-post-install-script`

## Building

In addition to the pre-built Globus binary RPMs and tarballs, available for a dozen of GNU/Linux distributions, NorduGrid provides a source RPM for the patched Globus as well (`globus-<x.y.z-N>ng`). Re-building a single `globus-<x.y.z-N>ng` RPM requires a functional RPM build environment and prior installation of the following software:

- `gpt` (RPM available from our download area)
- `ncurses-devel` (normally comes with your Linux distribution)
- Development packages of either Berkeley DB (<= 4.0) or GNU `dbm` which should normally come with your Linux distribution. The choice depends on your distribution. Possible package names are:
  - `gdbm2-devel`
  - `gdbm-devel`
  - `db4-devel`
  Corresponding runtime packages also need to be in place, since the above depend on them:
  - `gdm2`
  - `gdbm`
  - `db4`

To re-build an RPM from a source `tar.gz` file, do:

rpmbuild -ta <package>.tar.gz

or, from a `.src.rpm`, do:

rpmbuild --rebuild <package>.src.rpm

Proceed them with installation as written above.

## Patches being applied for the NorduGrid GT2™ release

Check the list of all the bugs ever submitted by the NorduGrid to the Globus Toolkit™ Bugzilla.

Below is the list of patches currently or recently applied by the NorduGrid to the original Globus Toolkit 2™ distribution.

Patch | Description | Globus bug #
globus_gatekeeper.0.patch | Adds an extra logging line with everything on one line | Submitted by EDG
globus_gss_assist.0.patch | Allows for dynamic accounts | Submitted by EDG
globus_openldap-2.0.22-4.patch | Patch to make openldap handle long packets and timeouts properly. | #1201, #1483 (re-submitted by VDT) – fixed
globus_mds_timeout.patch | Patch to make MDS handle timeouts properly. | #1201, #1483 (re-submitted by VDT) – fixed
globus_replica_catalog-2.1.patch | Use secure authentication while contacting globus replica server. | Not reported because Globus does not support Replica Catalog anymore
globus_merge_openldap-3.patch | Merge the 2 versions of OpenLDAP that Globus distributes (one for MDS and another for Replica Catalog). | Not reported because Globus does not support Replica Catalog anymore
globus_gsincftp-mandir.patch | Fix the problem with gsincftp manpage locations | Not reported, non-critical
globus_cyrus-sasl_nousrlocal.patch | Get around a bug in gcc-3.2 (applied only for gcc-3.2) | Reported by others, Globus does not consider it a bug (see e.g. bug report #488)
globus_gsincftp_noextradirs.patch | Get around a bug in gcc-3.2 (applied only for gcc-3.2) | Reported by others, Globus does not consider it a bug (see e.g. bug report #488)
globus_openldap_perms.patch | Correct permissions for openldap libraries. | #858 – fixed - but still applied (?)
globus_ftp_client_transfer.patch | Handle timeout when asking for size of files on gsiftpserver. | #1084 – assigned
globus_iov_max.patch | Fixes something | Reported by others: #992 – fixed (?)
globus_makefile-header.patch | This patch fixes globus-makefile-header to work with gpt-3.0.1 | Reported by others: #1141 – new (?)
globus_normalization.patch | This patch makes globus_i_gss_assist_gridmap_parse_globusid use the same normalization as X509_NAME_oneline. | #1417 &ndash assigned
globus_slapd_backslash.patch | Removes the backslash from the list of characters that cause unconditional rejection | #1496 – new
globus_debug.h.patch | Fix for using header in C++ | #929 – fixed in globus_common 3.16 (update for 2.4.3); not applied
globus_common_gpt1.patch | Fix GPT dependencies for GPT version 1 | Not reported as Globus does not support GPT v.1 anymore; not applied

## Packaged components

Listed in build order

Title | Description (if any)
globus_core |
globus_common |
globus_common_setup |
globus_data_conversion |
globus_hostname2contacts |
globus_gatekeeper_setup |
globus_libtool |
globus_mds_common |
globus_mds_common_setup |
globus_mds_gris |
globus_mds_gris_setup |
globus_openssl |
globus_proxy_wrapper |
globus_trusted_ca_42864e48_setup |
globus_user_env |
globus_cyrus-sasl |
globus_gass_cache | manages the local GASS cache on a client system
globus_gsi_openssl_error |
globus_gsi_proxy_ssl |
globus_mp |
globus_rsl |
globus_gram_reporter |
globus_openldap | an API for the LDAP protocol used by MDS
globus_openssl_module |
globus_rsl_assist |
globus_gsi_cert_utils |
globus_gsi_sysconfig |
globus_gsi_callback |
globus_gsi_credential |
globus_gsi_proxy_core |
globus_gssapi_gsi |
globus_proxy_utils |
globus_gss_assist | simplifies the use of the GSSAPI in the Globus environment
globus_sasl_gssapi_gsi |
globus_gatekeeper |
globus_io | provides high-performance I/O with integrated security and a socket-like interface
globus_ldapmodules |
globus_mds_back_giis |
gssapi_error |
globus_ftp_control | provides low-level services for implementing FTP client and servers
globus_gass_transfer | provides an API for clients and servers involved in GASS data transfer
globus_gram_protocol |
globus_nexus | provides multithreaded, asynchronous, thread-safe multiprotocol communication facilities
globus_duct_common |
globus_ftp_client | provides a convenient way of accessing files on remote FTP servers
globus_gass_server_ez | provides a simple set of GASS server capabilities
globus_gram_client | provides remote job submission and management capabilities
globus_gridftp_server |
globus_duct_control |
globus_duct_runtime |
globus_duroc_common | provides resource coallocation services for starting distributed jobs
globus_gass_copy | provides a uniform interface for accessing files using a variety of protocols
globus_gass_cache_program |
globus_gram_job_manager | provides a simple, consistent way to interact locally with a variety of schedulers such as LSF, LoadLeveler, PBS, Condor, etc.
globus_duroc_control |
globus_gram_client_tools |
globus_gram_myjob | provides a basic communication mechanism for processes within a GRAM job
globus_duroc_runtime |
globus_duroc_bootstrap |
globus_gram_job_manager_setup |
globus_gram_job_manager_setup_fork |
globus_gram_job_manager_setup_condor |
globus_gram_job_manager_setup_lsf |
globus_gram_job_manager_setup_pbs |
globus_gram_job_manager_setup_remote |
globus_gram_reporter_setup_fork |
globus_gram_reporter_setup_condor |
globus_gram_reporter_setup_lsf |
globus_gram_reporter_setup_pbs |
globus_gsincftp |
globus_replica_catalog | provides an interface to a catalog of data collections, logical files, and physical locations
globus_replica_management | allows clients to manage files within a file replication system
globus_rls_client |