1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
Dynamic External Package Loading
November 2, 2010
Dynamic package loading is a new feature in v2.15 that allows for
package directories created in the iraf$extern directory to be automatically
defined when the CL is started. The means that external package installation
no longer *requires* that the hlib$extern.pkg file be edited to define the
package, although that remains an option for packages which somehow cannot
conform to this new scheme.
Getting Started
---------------
The IRAF v2.15 system is shipped with no defined external packages,
instead we assume packages will be installed using this new feature. To
begin, simply execute the 'configure' script in this directory to create
the files needed. For example,
% ./configure
This will create a local 'manifest' file of packages available form
the IRAF reposistory and iraf.noao.edu and skeleton directories of
available packages will be created automatically along with a Makefile
used to do the actual installation. THIS STEP IS REQUIRED BEFORE PACKAGE
INSTALLATION!
To get a listing of packages that can be installed, or to check
which installed packages might need to be updated or are newly available,
use the command:
% make check
Each listed package may then be installed using a simple 'make' command.
For packages not on the list, a manual install is still required.
The external package tree may be initialize to the distribution state
using the command:
% make init
Updates to the distribution mechanism itself is done using the command:
% make self_update
This last command is used to update the system to new features or bug fixes
that might be available as the mechanism evolves.
Installing and Updating Packages
--------------------------------
External packages may now be installed with a command such as:
% make ctio mscred stsdas
Note that dependency packages for each requested package will
automatically be added to the installation so you do not need to
necessarily list every package (e.g. you'll get FITSUTIL automatically
by installing MSCRED). The next time you login to the CL the requested
package will be defined.
To update packages to the latest version, use the command
% make update
The information about available packages will be updated, then a
comparison of the timestamps of your installed packages with those on
the repository will be made. If newer package versions are available
they will be updated (along with their depencies) automatically.
If a binary repository distribution of a package is not available
at the moment, a 'source only' distribution will be installed and you will
not a "[SOURCE ONLY]' status from the make command. The user is then
responsible for compiling th epackages locally even though the package
will still be defined for use (but unusable). Our goal is to provide a
binary distribution for all available packages we can reasonably support.
How it Works
------------
This scheme relies on IRAF v2.15 changes to the CL login process to
scan this directory for packages, as well as a server-side respository of
distribution files suited for this method (see below). The 'configure'
script customizes the package information for your platform and creates a
'Makefile' based on that information. Subsequent commands update these
files, however we don't yet provide an automated system for multi-platform
support.
The bulk of the work is done using utility scripts found in the
iraf@util directory and called from the makefile. The management of the
repository files is the rsponsibility of the distribution maintainers
(by default this is NOAO). Please contact us if you wish to have your
package added to the system.
Repositories
------------
The default package repository is defined in the $iraf/util/pkgrepo
script and may be changed to point to a local respository (e.g. a mirror
site). It may also be changed by pointing the 'IRAF_REPO' environment
variable to a new URI source, e.g.
setenv IRAF_REPO "ftp://localhost/myrepository"
Of course, a network connection is assumed to exist in most cases. Local
repositories may be preferred for faster local access via mirrors, please
contact us for information on creating one.
==================================
Server-Side Repository Description
==================================
[The following comes from the README file on the repository]
This is the IRAF v2.15 distribution repository directory. Files
here are bundled so as to allow them to operate with the dynamic
package mechanism or IRAF install procedurs for v2.15. Aside from
the repository files themselves, this directory contains
README This file REPO.DESC A description of
each package MK Utility script to update repo
checksum/manifest
CHECKSUM Checksums files on repo tarballs created by MK
REPO.MANIFEST Manifest file
The MK script is used to generate the CHECKSUMS file and REPO.MANIFEST
file automatically, it should be run whenever a package is installed
or updated. The REPO.DESC file is a handcrafted description of the
available package, this is important to describing the dependencies
of each package. The MK script is also capable of determining
which of the available packages may be used on which platform.
For example, a "redhat" package will suffice for both a linux64
and linux IRAF system if there is no specific version available.
The manifest file created will then list the redhat version as the
file to be installed for the linux/linux64 platforms.
If a binary distribution for a particular package is not provided,
the MK script will default to use the source distribution tarball
(if available). On the receiving end the user will then have the
option of compiling the package locally. The reserved <arch> name
"universal" is used for script-only packages, or distributions
containing binaries for all supported platforms.
When packages are installed in the IRAF dynamic package tree,
both the REPO.MANIFEST and REPO.DESC files are downloaded. Scripts
use these files to build up package lists that are available for a
particular platform, as well as which packages are required to be
installed to support the requested package. We assume the REPO.DESC
file lists full dependencies, e.g. if A requires B, and B requires
C the the dependency list for A is both B and C.
The convention for file names is as follows:
<pkg>-<arch>.tar.gz
where <pkg> is the package name and <arch> is the iraf architecture.
For external packages, tarfiles are build at the toplevel, i.e.
when unpacked, a subdirectory of the package is created in th current
directory. For IRAF distributions we violate this rule and assume
the tarball is built from the $iraf root directory.
When installing a new package, the REPO.DESC file should be edited
and the MK script should be run.
When installing an update to an existing repo package, or a new
architecture version of a package, the MK script should be re-run.
|