Differences

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

Link to this comparison view

en:user_advanced:z3950 [2014/04/14 11:52]
127.0.0.1 external edit
en:user_advanced:z3950 [2018/03/26 14:29] (current)
kjdon [Known Problems/Issues list]
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.