User Tools

Site Tools


en:user_advanced:z3950

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revisionBoth sides next revision
en:user_advanced:z3950 [2014/04/13 23:52] – external edit 127.0.0.1en:user_advanced:z3950 [2018/03/26 01:29] – [Known Problems/Issues list] kjdon
Line 144: Line 144:
   * **The Z39.50 client will not work when fast-cgi is used**. Currently, the use of the fast-cgi package (off by default) will disable the use of the Z39.50 client code for Greenstone.   * **The Z39.50 client will not work when fast-cgi is used**. Currently, the use of the fast-cgi package (off by default) will disable the use of the Z39.50 client code for Greenstone.
   * When viewing a Z39.50 "collection" in Greenstone, sometimes the browser may insert a large amount of space between the collection title and the navigation bar. Reload or Shift Reload should fix this problem.   * When viewing a Z39.50 "collection" in Greenstone, sometimes the browser may insert a large amount of space between the collection title and the navigation bar. Reload or Shift Reload should fix this problem.
 +
 +===== About z39.50 =====
 +
 +Sometimes, the best explanation is the simplest one. Z39.50 is a network protocol that provides 
 +access to information systems.
 +
 +Z39.50 was originally developed to meet the needs of libraries to integrate their online catalog 
 +systems. It has since been adopted by various other domains, and it remains arguably the most 
 +flexible, versatile and efficient information retrieval around. It is also open; the specification 
 +can be downloaded freely from the net.
 +
 +It has been considered complex by some, but its flexibility is mostly derived from the fact that it 
 +is a fairly complete model of the task if information retrieval -- and from that follows a certain 
 +measure of complexity.
 +
 +We still consider Z39.50 to be an important building block in the construction of information 
 +architectures, and much of our work in the past has been about maximising the usefulness and 
 +minimising the complexity of Z39.50 by providing well-designed toolkits for programmers wishing to 
 +implement the protocol. You'll find much more information about our tools under the software page.
 +
 +===== About YAZ =====
 +
 +YAZ stands for Yet Another Z39.50 toolkit.
 +
 +YAZ is a compact toolkit that provides access to the Z39.50 and SRW/SRU protocols, as well as a 
 +set of higher-level tools for implementing the server and client roles, respectively. The documentation 
 +can be used on its own, or as a reference when looking at the example applications provided with 
 +the package.
 +
 +=== How to make apps using YAZ on UNIX ===
 +
 +http://www.indexdata.dk/yaz/doc/installation.unix.tkl#id2528482
 +
 +This section describes how to compile - and link your own applications using the YAZ toolkit. 
 +If you're used to Makefiles this shouldn't be hard. As for other libraries you have used before, 
 +you have to set a proper include path for your C/C++ compiler and specify the location of YAZ 
 +libraries. You can do it by hand, but generally we suggest you use the yaz-config that is generated 
 +by configure. This is especially important if you're using the threaded version of YAZ which requires 
 +you to pass more options to your linker/compiler.
 +
 +The yaz-config script accepts command line options that makes the yaz-config script print options that 
 +you should use in your make process. The most important ones are: --cflags, --libs which prints C compiler 
 +flags, and linker flags respectively.
 +
 +A small and complete Makefile for a C application consisting of one source file, myprog.c, may look 
 +like this:
 +
 + YAZCONFIG=/usr/local/bin/yaz-config
 + CFLAGS=`$(YAZCONFIG) --cflags`
 + LIBS=`$(YAZCONFIG) --libs`
 + myprog: myprog.o
 + $ (CC) $(CFLAGS) -o myprog myprog.o $(LIBS)
 +
 +The CFLAGS variable consists of a C compiler directive that will set the include path to the parent 
 +directory of yaz. That is, if YAZ header files were installed in /usr/local/include/yaz, then include 
 +path is set to /usr/local/include. Therefore, in your applications you should use 
 + # include <yaz/proto.h>
 + and not
 + # include <proto.h>
 +
 +For Libtool users, the yaz-config script provides a different variant of option --libs, called 
 +--lalibs that returns the name of the Libtool acrhive(s) for YAZ rather than the ordinary ones.
 +
 +For applications using the threaded version of YAZ, specify threads after the other options. When 
 +threads is given, more flags and linker flags will be printed by yaz-config. If our previous example 
 +was using threads, you'd have to modify the lines that set CFLAGS and LIBS as follows:
 + CFLAGS=`$(YAZCONFIG) --cflags threads`
 + LIBS=`$(YAZCONFIG) --libs threads`
 +
 +There is no need specify POSIX thread libraries in your Makefile. The LIBS variable includes that 
 +as well.
en/user_advanced/z3950.txt · Last modified: 2023/03/13 01:46 by 127.0.0.1