-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathREADME
216 lines (152 loc) · 8.2 KB
/
README
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
NOID COMMAND SCRIPT INSTALLATION INSTRUCTIONS
NOID OVERVIEW
The noid utility creates minters (identifier generators) and accepts
commands that operate them. Once created, a minter can be used to produce
persistent, globally unique names for documents, databases, images,
vocabulary terms, etc. Properly managed, these identifiers can be used as
long term durable information object references within naming schemes such
as ARK, PURL, URN, DOI, and LSID. At the same time, alternative minters
can be set up to produce short-lived names for transaction identifiers,
compact web server session keys, and other ephemera.
In general, a noid minter efficiently generates, tracks, and binds
unique identifiers, which are produced without replacement in random or
sequential order, and with or without a check character that can be used
for detecting transcription errors. A minter can bind identifiers to
arbitrary element names and element values that are either stored or
produced upon retrieval from rule-based transformations of requested
identifiers; the latter has application in identifier resolution. Noid
minters are very fast, scalable, easy to create and tear down, and have a
relatively small footprint. They use BerkeleyDB as the underlying database.
Identifiers generated by a noid minter are also known as "noids" (nice
opaque identifiers -- rhymes with void). While a minter can record and
bind any identifiers that you bring to its attention, often it is used
to generate, bringing to your attention, identifier strings that carry
no widely recognizable meaning. This semantic opaqueness reduces their
vulnerability to era- and language-specific change, and helps persistence
by making for identifiers that can age and travel well.
INSTALLATION -- SIMPLE
This simple installation section assumes that the noid pre-requisites
are already installed at a default system location. The final step of
the simple installation (make install) usually requires system privleges.
If not already unpacked, unpack the Noid suite with
tar xzf Noid-0.424.tar.gz
after adjusting the version number as needed. Version 0.422 is known to
pass build tests on Linux (SuSE 9.0, RH 9, RH 7), SunOS 5.8, Mac OS X,
and NetBSD 1.6.2.
To install the module and script, type the following:
perl Makefile.PL
make
make test
make install
For the "make install" you may have to become the superuser, as in,
sudo make install
If installing in a non-standard place, such as your home directory,
change the first of the above 4 lines to "perl Makefile.PL PREFIX=~".
INSTALLATION -- ADVANCED (UNIX)
You may need this advanced installation section if the noid pre-requisites
are not already installed, or if you are installing and relying on things
in non-default system locations. The final step for installing the Perl
modules (make install) would require system privleges, as in,
sudo make install
if it meant copying files into areas normally not writable by you.
Noid requires the Perl module, BerkeleyDB.pm, which in turn relies on
the Berkeley DB system library, libdb. For completeness this section
assumes that you are installing everything from the ground up. In this
case you'd install the library first, available from www.sleepycat.com ,
followed by the BerkeleyDB Perl module. If you fetch the latest release
(at least as of April 2006), a Perl module suitable for the next step is
conveniently located in in the "perl/" subdirectory; it is also available
from www.cpan.org (CPAN). To summarize, the prerequisites are
db-N.N.NN.tar.gz from www.sleepycat.com
BerkeleyDB-0.NN.tar.gz from the above tarball or from CPAN
where the N's represent the release numbers that you will be using.
Each of these packages has its own installation instructions, which you
should have handy as you go through this example of installing everything
in one non-standard location, /home/jak/genid . For concreteness, some
particular locations and Perl releases that work under one version of
Linux will be used.
In general, you'll need to change the examples to work in your environment.
To discover how to change the examples you'll likely have to poke around
in the directory trees rooted in your chosen locations to find out exactly
where the things will have been installed.
To install the system library, libdb, first fetch and unpack (tar xzf)
db-N.N.NN.tar.gz from www.sleepycat.com . Then in db-N.N.NN/,
cd build_unix
../dist/configure --prefix=/home/jak/genid/usr/local/BerkeleyDB.4.4
make
make install
which builds using the --prefix configuration parameter so that the
resulting library will be installed in your non-standard location.
Before installing the Perl module, BerkeleyDB.pm, you may first need to
move instances of the library and Perl module out of the way, if any
exist. This may require system privileges, for example, under Mac OS X,
cd /System/Library/Perl/Extras/5.8.6/darwin-thread-multi-2level/
sudo mv BerkeleyDB xBerkeleyDB
sudo mv auto/BerkeleyDB auto/xBerkeleyDB
And don't forget to move an existing "include" file out of the way:
cd /usr/include/
sudo mv db.h xdb.h
After unpacking BerkeleyDB-0.NN.tar.gz, in BerkeleyDB-0.NN/ edit the
configuration file for your library installation; for example,
vi config.in # then change the INCLUDE and LIB settings:
INCLUDE = /home/jak/genid/usr/local/BerkeleyDB.4.4/include
LIB = /home/jak/genid/usr/local/BerkeleyDB.4.4/lib
So that the system library will be found later at run time, do
LD_LIBRARY_PATH=/home/jak/genid/usr/local/BerkeleyDB.4.4/lib
export PERL5LIB
That sets up BerkeleyDB.pm's pre-requisites. Now, to cause the BerkeleyDB
module that you are about to build to end up in your non-standard location,
begin the installation process with the correct PREFIX= argument, as in,
perl Makefile.PL PREFIX=/home/jak/genid
make
make test
make install
That finishes installing noid's pre-requisites.
To install the noid, which mostly means the Perl module, Noid.pm, and the
script, "noid", first set the PERL5LIB environment variable so that the
new Perl modules and system library will be found,
PERL5LIB=/home/jak/genid/lib/perl/5.8.4:/home/jak/genid/share/perl/5.8.4
export PERL5LIB
(Under Mac OS X, the value of PERL5LIB might include something like
/Users/jak/genid/lib/perl5/site_perl/5.8.6/darwin-thread-multi-2level .)
Assuming that you've unpacked Noid-0.NNN.tar.gz, go to the Noid-0.NNN/
directory and build Noid using the correct PREFIX= argument so that it
will be installed in your non-standard location, as in,
perl Makefile.PL PREFIX=/home/jak/genid
make
make test
make install
That should complete your installation.
DEPENDENCIES
This module requires these other modules:
Noid
BerkeleyDB
Fcntl
Config
Getopt::Long
Sys::Hostname
Text::ParseWords
Also required is the C library, libdb (version greater that 2.7.7) for
Berkeley DB from http://www.sleepycat.com/
COPYRIGHT AND LICENCE
Copyright 2002-2006 UC Regents. BSD-type open source license.
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
that (i) the above copyright notices and this permission notice appear in
all copies of the software and related documentation, and (ii) the names
of the UC Regents and the University of California are not used in any
advertising or publicity relating to the software without the specific,
prior written permission of the University of California.
THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE FOR ANY
SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY
THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.
ACKNOWLEDGEMENTS
Thanks to Brian Tingle, Kirk Hastings, Paul Fogel, and Stu Sugarman for
their feedback during development, and to Raymund Ramos, Michael Giarlo,
Charles Blair, and Archie Warnock for their testing help.