7 use File::Temp qw/ tempdir /;
10 use C4::AuthoritiesMarc;
13 # script that checks zebradir structure & create directories & mandatory files if needed
17 $|=1; # flushes output
19 # limit for database dumping
31 my $result = GetOptions(
39 'munge-config' => \$do_munge,
41 'h|help' => \$want_help,
46 if (not $result or $want_help) {
51 if (not $biblios and not $authorities) {
52 my $msg = "Must specify -b or -a to reindex bibs or authorites\n";
53 $msg .= "Please do '$0 --help' to see usage.\n";
63 $directory = tempdir(CLEANUP => ($keep_export ? 0 : 1));
67 my $biblioserverdir = C4::Context->zebraconfig('biblioserver')->{directory};
68 my $authorityserverdir = C4::Context->zebraconfig('authorityserver')->{directory};
70 my $kohadir = C4::Context->config('intranetdir');
71 my $dbh = C4::Context->dbh;
72 my ($biblionumbertagfield,$biblionumbertagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
73 my ($biblioitemnumbertagfield,$biblioitemnumbertagsubfield) = &GetMarcFromKohaField("biblioitems.biblioitemnumber","");
75 print "Zebra configuration information\n";
76 print "================================\n";
77 print "Zebra biblio directory = $biblioserverdir\n";
78 print "Zebra authorities directory = $authorityserverdir\n";
79 print "Koha directory = $kohadir\n";
80 print "BIBLIONUMBER in : $biblionumbertagfield\$$biblionumbertagsubfield\n";
81 print "BIBLIOITEMNUMBER in : $biblioitemnumbertagfield\$$biblioitemnumbertagsubfield\n";
82 print "================================\n";
90 # exporting authorities
93 print "====================\n";
94 print "SKIPPING authorities export\n";
95 print "====================\n";
97 print "====================\n";
98 print "exporting authorities\n";
99 print "====================\n";
100 mkdir "$directory" unless (-d $directory);
101 mkdir "$directory/authorities" unless (-d "$directory/authorities");
102 open(OUT,">:utf8","$directory/authorities/authorities.iso2709") or die $!;
103 my $dbh=C4::Context->dbh;
105 $sth=$dbh->prepare("select authid,marc from auth_header");
108 while (my ($authid,$record) = $sth->fetchrow) {
109 # FIXME : we retrieve the iso2709 record. if the GetAuthority (that uses the XML) fails
110 # due to some MARC::File::XML failure, then try the iso2709,
111 # (add authid & authtype if needed)
114 $record = GetAuthority($authid);
117 # force authid in case it's not here, otherwise, zebra will die on this authority
118 unless ($record->field('001')->data() eq $authid){
119 print "$authid don't exist for this authority :".$record->as_formatted;
120 $record->delete_field($record->field('001'));
121 $record->insert_fields_ordered(MARC::Field->new('001',$authid));
124 print " There was some pb getting authority : ".$authid."\n";
129 print "\r$i" unless ($i++ %100);
130 # # remove leader length, that could be wrong, it will be calculated automatically by as_usmarc
131 # # otherwise, if it's wron, zebra will fail miserabily (and never index what is after the failing record)
132 my $leader=$record->leader;
133 substr($leader,0,5)=' ';
134 substr($leader,10,7)='22 ';
135 $record->leader(substr($leader,0,24));
136 print OUT $record->as_usmarc;
142 # and reindexing everything
144 print "====================\n";
145 print "REINDEXING zebra\n";
146 print "====================\n";
147 system("zebraidx -c ".C4::Context->zebraconfig('authorityserver')->{config}." -g iso2709 -d authorities init") if ($reset);
148 system("zebraidx -c ".C4::Context->zebraconfig('authorityserver')->{config}." $noshadow -g iso2709 -d authorities update $directory/authorities");
149 system("zebraidx -c ".C4::Context->zebraconfig('authorityserver')->{config}." -g iso2709 -d authorities commit") unless $noshadow;
151 print "skipping authorities\n";
153 #################################################################################################################
155 #################################################################################################################
163 print "====================\n";
164 print "SKIPPING biblio export\n";
165 print "====================\n";
167 print "====================\n";
168 print "exporting biblios\n";
169 print "====================\n";
170 mkdir "$directory" unless (-d $directory);
171 mkdir "$directory/biblios" unless (-d "$directory/biblios");
172 open(OUT,">:utf8 ","$directory/biblios/export") or die $!;
173 my $dbh=C4::Context->dbh;
176 $sth=$dbh->prepare("select biblionumber,marc from biblioitems order by biblionumber");
179 while (my ($biblionumber,$marc) = $sth->fetchrow) {
181 $record=MARC::Record->new_from_usmarc($marc);
182 my $record_correct=1;
183 # skip uncorrect records : isn't this bogus, as just after we reintroduce biblionumber if it's missing ?
184 # FIXME next unless $record->field($biblionumbertagfield);
185 # check if biblionumber is present, otherwise, add it on the fly
186 if ($biblionumbertagfield eq '001') {
187 unless ($record->field($biblionumbertagfield)->data()) {
190 # if the field where biblionumber is already exist, just update it, otherwise create it
191 if ($record->field($biblionumbertagfield)) {
192 $field = $record->field($biblionumbertagfield);
193 $field->update($biblionumber);
196 $newfield = MARC::Field->new( $biblionumbertagfield, $biblionumber);
197 $record->append_fields($newfield);
201 unless ($record->subfield($biblionumbertagfield,$biblionumbertagsubfield)) {
204 # if the field where biblionumber is already exist, just update it, otherwise create it
205 if ($record->field($biblionumbertagfield)) {
206 $field = $record->field($biblionumbertagfield);
207 $field->add_subfields($biblionumbertagsubfield => $biblionumber);
210 $newfield = MARC::Field->new( $biblionumbertagfield,'','', $biblionumbertagsubfield => $biblionumber);
211 $record->append_fields($newfield);
214 # warn "FIXED BIBLIONUMBER".$record->as_formatted;
216 unless ($record->subfield($biblioitemnumbertagfield,$biblioitemnumbertagsubfield)) {
218 # warn "INCORRECT BIBLIOITEMNUMBER :".$record->as_formatted;
220 # if the field where biblionumber is already exist, just update it, otherwise create it
221 if ($record->field($biblioitemnumbertagfield)) {
222 $field = $record->field($biblioitemnumbertagfield);
223 if ($biblioitemnumbertagfield <10) {
224 $field->update($biblionumber);
226 $field->add_subfields($biblioitemnumbertagsubfield => $biblionumber);
230 if ($biblioitemnumbertagfield <10) {
231 $newfield = MARC::Field->new( $biblioitemnumbertagfield, $biblionumber);
233 $newfield = MARC::Field->new( $biblioitemnumbertagfield,'','', $biblioitemnumbertagsubfield => $biblionumber);
235 $record->insert_grouped_field($newfield);
237 # warn "FIXED BIBLIOITEMNUMBER".$record->as_formatted;
239 my $leader=$record->leader;
240 substr($leader,0,5)=' ';
241 substr($leader,10,7)='22 ';
242 $record->leader(substr($leader,0,24));
243 print OUT $record->as_usmarc();
247 $sth=$dbh->prepare("SELECT biblionumber FROM biblioitems ORDER BY biblionumber");
250 while (my ($biblionumber) = $sth->fetchrow) {
252 print "\r$i" unless ($i++ %100);
255 $record = GetMarcBiblio($biblionumber);
258 print " There was some pb getting biblio : #".$biblionumber."\n";
262 # die if $record->subfield('090','9') eq 11;
264 # check that biblionumber & biblioitemnumber are stored in the MARC record, otherwise, add them & update the biblioitems.marcxml data.
265 my $record_correct=1;
266 # skip uncorrect records : isn't this bogus, as just after we reintroduce biblionumber if it's missing ?
267 # FIXME next unless $record->field($biblionumbertagfield);
273 if ($biblionumbertagfield eq '001') {
274 unless ($record->field($biblionumbertagfield) && $record->field($biblionumbertagfield)->data()) {
277 # if the field where biblionumber is already exist, just update it, otherwise create it
278 if ($record->field($biblionumbertagfield)) {
279 $field = $record->field($biblionumbertagfield);
280 $field->update($biblionumber);
283 $newfield = MARC::Field->new( $biblionumbertagfield, $biblionumber);
284 $record->append_fields($newfield);
288 unless ($record->subfield($biblionumbertagfield,$biblionumbertagsubfield)) {
289 # warn "fixing biblionumber for $biblionumbertagfield,$biblionumbertagsubfield = $biblionumber";
292 # if the field where biblionumber is already exist, just update it, otherwise create it
293 if ($record->field($biblionumbertagfield)) {
294 $field = $record->field($biblionumbertagfield);
295 $field->add_subfields($biblionumbertagsubfield => $biblionumber);
298 $newfield = MARC::Field->new( $biblionumbertagfield,'','', $biblionumbertagsubfield => $biblionumber);
299 $record->append_fields($newfield);
302 # warn "FIXED BIBLIONUMBER".$record->as_formatted;
306 # CHECK BIBLIOITEMNUMBER
309 unless ($record->subfield($biblioitemnumbertagfield,$biblioitemnumbertagsubfield)) {
310 # warn "fixing biblioitemnumber for $biblioitemnumbertagfield,$biblioitemnumbertagsubfield = $biblionumber";
313 # if the field where biblionumber is already exist, just update it, otherwise create it
314 if ($record->field($biblioitemnumbertagfield)) {
315 $field = $record->field($biblioitemnumbertagfield);
316 if ($biblioitemnumbertagfield <10) {
317 $field->update($biblionumber);
319 $field->add_subfields($biblioitemnumbertagsubfield => $biblionumber);
323 if ($biblioitemnumbertagfield <10) {
324 $newfield = MARC::Field->new( $biblioitemnumbertagfield, $biblionumber);
326 $newfield = MARC::Field->new( $biblioitemnumbertagfield,'','', $biblioitemnumbertagsubfield => $biblionumber);
328 $record->insert_grouped_field($newfield);
330 # warn "FIXED BIBLIOITEMNUMBER".$record->as_formatted;
337 my $encoding = C4::Context->preference("marcflavour");
338 # deal with UNIMARC field 100 (encoding) : create it if needed & set encoding to unicode
339 if ( $encoding eq "UNIMARC" ) {
341 if ( length($record->subfield( 100, "a" )) == 35 ) {
342 $string = $record->subfield( 100, "a" );
343 my $f100 = $record->field(100);
344 $record->delete_field($f100);
347 $string = POSIX::strftime( "%Y%m%d", localtime );
349 $string = sprintf( "%-*s", 35, $string );
351 substr( $string, 22, 6, "frey50" );
352 unless ( length($record->subfield( 100, "a" )) == 35 ) {
353 $record->delete_field($record->field(100));
354 $record->insert_grouped_field(
355 MARC::Field->new( 100, "", "", "a" => $string ) );
358 unless ($record_correct) {
359 my $update_xml = $dbh->prepare("update biblioitems set marcxml=? where biblionumber=?");
360 warn "UPDATING $biblionumber (missing biblionumber or biblioitemnumber in MARC record : ".$record->as_xml;
361 $update_xml->execute($record->as_xml,$biblionumber);
363 # remove leader length, that could be wrong, it will be calculated automatically by as_usmarc
364 # otherwise, if it's wron, zebra will fail miserabily (and never index what is after the failing record)
365 my $leader=$record->leader;
366 substr($leader,0,5)=' ';
367 substr($leader,10,7)='22 ';
368 $record->leader(substr($leader,0,24));
370 print OUT $record->as_xml_record();
372 print OUT $record->as_usmarc();
380 # and reindexing everything
382 print "====================\n";
383 print "REINDEXING zebra\n";
384 print "====================\n";
385 my $record_fmt = ($as_xml) ? 'marcxml' : 'iso2709' ;
386 system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios init") if ($reset);
387 system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." $noshadow -d biblios update $directory/biblios");
388 system("zebraidx -g $record_fmt -c ".C4::Context->zebraconfig('biblioserver')->{config}." -d biblios commit") unless $noshadow;
390 print "skipping biblios\n";
393 print "====================\n";
395 print "====================\n";
397 print "NOTHING cleaned : the export $directory has been kept.\n";
398 print "You can re-run this script with the -s ";
400 print " and -d $directory parameters";
405 print "if you just want to rebuild zebra after changing the record.abs\n";
406 print "or another zebra config file\n";
408 unless ($use_tempdir) {
409 # if we're using a temporary directory
410 # created by File::Temp, it will be removed
412 rmtree($directory, 0, 1);
413 print "directory $directory deleted\n";
419 $0: reindex MARC bibs and/or authorities in Zebra.
421 Use this batch job to reindex all biblio or authority
422 records in your Koha database. This job is useful
423 only if you are using Zebra; if you are using the 'NoZebra'
424 mode, this job should not be used.
427 -b index bibliographic records
429 -a index authority records
431 -r clear Zebra index before
432 adding records to index
434 -d Temporary directory for indexing.
435 If not specified, one is automatically
436 created. The export directory
437 is automatically deleted unless
438 you supply the -k switch.
440 -k Do not delete export directory.
442 -s Skip export. Used if you have
443 already exported the records
446 -noxml index from ISO MARC blob
447 instead of MARC XML. This
448 option is recommended only
451 -x export and index as xml instead of is02709 (biblios only).
452 use this if you might have records > 99,999 chars,
454 -w skip shadow indexing for this batch
456 -munge-config Deprecated option to try
457 to fix Zebra config files.
458 --help or -h show this message.
462 # FIXME: the following routines are deprecated and
463 # will be removed once it is determined whether
464 # a script to fix Zebra configuration files is
468 # creating zebra-biblios.cfg depending on system
471 # getting zebraidx directory
473 foreach (qw(/usr/local/bin/zebraidx
482 unless ($zebraidxdir) {
484 ERROR: could not find zebraidx directory
485 ERROR: Either zebra is not installed,
486 ERROR: or it's in a directory I don't checked.
487 ERROR: do a which zebraidx and edit this file to add the result you get
491 $zebraidxdir =~ s/\/bin\/.*//;
492 print "Info : zebra is in $zebraidxdir \n";
494 # getting modules directory
496 foreach (qw(/usr/local/lib/idzebra-2.0/modules/mod-grs-xml.so
497 /usr/local/lib/idzebra/modules/mod-grs-xml.so
498 /usr/lib/idzebra/modules/mod-grs-xml.so
499 /usr/lib/idzebra-2.0/modules/mod-grs-xml.so
506 unless ($modulesdir) {
508 ERROR: could not find mod-grs-xml.so directory
509 ERROR: Either zebra is not properly compiled (libxml2 is not setup and you don t have mod-grs-xml.so,
510 ERROR: or it's in a directory I don't checked.
511 ERROR: find where mod-grs-xml.so is and edit this file to add the result you get
515 $modulesdir =~ s/\/modules\/.*//;
516 print "Info: zebra modules dir : $modulesdir\n";
518 # getting tab directory
520 foreach (qw(/usr/local/share/idzebra/tab/explain.att
521 /usr/local/share/idzebra-2.0/tab/explain.att
522 /usr/share/idzebra/tab/explain.att
523 /usr/share/idzebra-2.0/tab/explain.att
532 ERROR: could not find explain.att directory
533 ERROR: Either zebra is not properly compiled,
534 ERROR: or it's in a directory I don't checked.
535 ERROR: find where explain.att is and edit this file to add the result you get
539 $tabdir =~ s/\/tab\/.*//;
540 print "Info: tab dir : $tabdir\n";
543 # AUTHORITIES creating directory structure
545 my $created_dir_or_file = 0;
547 print "====================\n";
548 print "checking directories & files for authorities\n";
549 print "====================\n";
550 unless (-d "$authorityserverdir") {
551 system("mkdir -p $authorityserverdir");
552 print "Info: created $authorityserverdir\n";
553 $created_dir_or_file++;
555 unless (-d "$authorityserverdir/lock") {
556 mkdir "$authorityserverdir/lock";
557 print "Info: created $authorityserverdir/lock\n";
558 $created_dir_or_file++;
560 unless (-d "$authorityserverdir/register") {
561 mkdir "$authorityserverdir/register";
562 print "Info: created $authorityserverdir/register\n";
563 $created_dir_or_file++;
565 unless (-d "$authorityserverdir/shadow") {
566 mkdir "$authorityserverdir/shadow";
567 print "Info: created $authorityserverdir/shadow\n";
568 $created_dir_or_file++;
570 unless (-d "$authorityserverdir/tab") {
571 mkdir "$authorityserverdir/tab";
572 print "Info: created $authorityserverdir/tab\n";
573 $created_dir_or_file++;
575 unless (-d "$authorityserverdir/key") {
576 mkdir "$authorityserverdir/key";
577 print "Info: created $authorityserverdir/key\n";
578 $created_dir_or_file++;
581 unless (-d "$authorityserverdir/etc") {
582 mkdir "$authorityserverdir/etc";
583 print "Info: created $authorityserverdir/etc\n";
584 $created_dir_or_file++;
588 # AUTHORITIES : copying mandatory files
590 # the record model, depending on marc flavour
591 unless (-f "$authorityserverdir/tab/record.abs") {
592 if (C4::Context->preference("marcflavour") eq "UNIMARC") {
593 system("cp -f $kohadir/etc/zebradb/marc_defs/unimarc/authorities/record.abs $authorityserverdir/tab/record.abs");
594 print "Info: copied record.abs for UNIMARC\n";
596 system("cp -f $kohadir/etc/zebradb/marc_defs/marc21/authorities/record.abs $authorityserverdir/tab/record.abs");
597 print "Info: copied record.abs for USMARC\n";
599 $created_dir_or_file++;
601 unless (-f "$authorityserverdir/tab/sort-string-utf.chr") {
602 system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $authorityserverdir/tab/sort-string-utf.chr");
603 print "Info: copied sort-string-utf.chr\n";
604 $created_dir_or_file++;
606 unless (-f "$authorityserverdir/tab/word-phrase-utf.chr") {
607 system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $authorityserverdir/tab/word-phrase-utf.chr");
608 print "Info: copied word-phase-utf.chr\n";
609 $created_dir_or_file++;
611 unless (-f "$authorityserverdir/tab/auth1.att") {
612 system("cp -f $kohadir/etc/zebradb/authorities/etc/bib1.att $authorityserverdir/tab/auth1.att");
613 print "Info: copied auth1.att\n";
614 $created_dir_or_file++;
616 unless (-f "$authorityserverdir/tab/default.idx") {
617 system("cp -f $kohadir/etc/zebradb/etc/default.idx $authorityserverdir/tab/default.idx");
618 print "Info: copied default.idx\n";
619 $created_dir_or_file++;
622 unless (-f "$authorityserverdir/etc/ccl.properties") {
623 # system("cp -f $kohadir/etc/zebradb/ccl.properties ".C4::Context->zebraconfig('authorityserver')->{ccl2rpn});
624 system("cp -f $kohadir/etc/zebradb/ccl.properties $authorityserverdir/etc/ccl.properties");
625 print "Info: copied ccl.properties\n";
626 $created_dir_or_file++;
628 unless (-f "$authorityserverdir/etc/pqf.properties") {
629 # system("cp -f $kohadir/etc/zebradb/pqf.properties ".C4::Context->zebraconfig('authorityserver')->{ccl2rpn});
630 system("cp -f $kohadir/etc/zebradb/pqf.properties $authorityserverdir/etc/pqf.properties");
631 print "Info: copied pqf.properties\n";
632 $created_dir_or_file++;
636 # AUTHORITIES : copying mandatory files
638 unless (-f C4::Context->zebraconfig('authorityserver')->{config}) {
639 open ZD,">:utf8 ",C4::Context->zebraconfig('authorityserver')->{config};
641 # generated by KOHA/misc/migration_tools/rebuild_zebra.pl
642 profilePath:\${srcdir:-.}:$authorityserverdir/tab/:$tabdir/tab/:\${srcdir:-.}/tab/
645 # Files that describe the attribute sets supported.
650 modulePath:$modulesdir/modules/
651 # Specify record type
652 iso2709.recordType:grs.marcxml.record
654 recordId: (auth1,Local-Number)
660 lockDir: $authorityserverdir/lock
663 register: $authorityserverdir/register:4G
664 shadow: $authorityserverdir/shadow:4G
666 # Temp File area for result sets
667 setTmpDir: $authorityserverdir/tmp
669 # Temp File area for index program
670 keyTmpDir: $authorityserverdir/key
672 # Approx. Memory usage during indexing
676 print "Info: creating zebra-authorities.cfg\n";
677 $created_dir_or_file++;
680 if ($created_dir_or_file) {
681 print "Info: created : $created_dir_or_file directories & files\n";
683 print "Info: file & directories OK\n";
688 print "====================\n";
689 print "checking directories & files for biblios\n";
690 print "====================\n";
693 # BIBLIOS : creating directory structure
695 unless (-d "$biblioserverdir") {
696 system("mkdir -p $biblioserverdir");
697 print "Info: created $biblioserverdir\n";
698 $created_dir_or_file++;
700 unless (-d "$biblioserverdir/lock") {
701 mkdir "$biblioserverdir/lock";
702 print "Info: created $biblioserverdir/lock\n";
703 $created_dir_or_file++;
705 unless (-d "$biblioserverdir/register") {
706 mkdir "$biblioserverdir/register";
707 print "Info: created $biblioserverdir/register\n";
708 $created_dir_or_file++;
710 unless (-d "$biblioserverdir/shadow") {
711 mkdir "$biblioserverdir/shadow";
712 print "Info: created $biblioserverdir/shadow\n";
713 $created_dir_or_file++;
715 unless (-d "$biblioserverdir/tab") {
716 mkdir "$biblioserverdir/tab";
717 print "Info: created $biblioserverdir/tab\n";
718 $created_dir_or_file++;
720 unless (-d "$biblioserverdir/key") {
721 mkdir "$biblioserverdir/key";
722 print "Info: created $biblioserverdir/key\n";
723 $created_dir_or_file++;
725 unless (-d "$biblioserverdir/etc") {
726 mkdir "$biblioserverdir/etc";
727 print "Info: created $biblioserverdir/etc\n";
728 $created_dir_or_file++;
732 # BIBLIOS : copying mandatory files
734 # the record model, depending on marc flavour
735 unless (-f "$biblioserverdir/tab/record.abs") {
736 if (C4::Context->preference("marcflavour") eq "UNIMARC") {
737 system("cp -f $kohadir/etc/zebradb/marc_defs/unimarc/biblios/record.abs $biblioserverdir/tab/record.abs");
738 print "Info: copied record.abs for UNIMARC\n";
740 system("cp -f $kohadir/etc/zebradb/marc_defs/marc21/biblios/record.abs $biblioserverdir/tab/record.abs");
741 print "Info: copied record.abs for USMARC\n";
743 $created_dir_or_file++;
745 unless (-f "$biblioserverdir/tab/sort-string-utf.chr") {
746 system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $biblioserverdir/tab/sort-string-utf.chr");
747 print "Info: copied sort-string-utf.chr\n";
748 $created_dir_or_file++;
750 unless (-f "$biblioserverdir/tab/word-phrase-utf.chr") {
751 system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $biblioserverdir/tab/word-phrase-utf.chr");
752 print "Info: copied word-phase-utf.chr\n";
753 $created_dir_or_file++;
755 unless (-f "$biblioserverdir/tab/bib1.att") {
756 system("cp -f $kohadir/etc/zebradb/biblios/etc/bib1.att $biblioserverdir/tab/bib1.att");
757 print "Info: copied bib1.att\n";
758 $created_dir_or_file++;
760 unless (-f "$biblioserverdir/tab/default.idx") {
761 system("cp -f $kohadir/etc/zebradb/etc/default.idx $biblioserverdir/tab/default.idx");
762 print "Info: copied default.idx\n";
763 $created_dir_or_file++;
765 unless (-f "$biblioserverdir/etc/ccl.properties") {
766 # system("cp -f $kohadir/etc/zebradb/ccl.properties ".C4::Context->zebraconfig('biblioserver')->{ccl2rpn});
767 system("cp -f $kohadir/etc/zebradb/ccl.properties $biblioserverdir/etc/ccl.properties");
768 print "Info: copied ccl.properties\n";
769 $created_dir_or_file++;
771 unless (-f "$biblioserverdir/etc/pqf.properties") {
772 # system("cp -f $kohadir/etc/zebradb/pqf.properties ".C4::Context->zebraconfig('biblioserver')->{ccl2rpn});
773 system("cp -f $kohadir/etc/zebradb/pqf.properties $biblioserverdir/etc/pqf.properties");
774 print "Info: copied pqf.properties\n";
775 $created_dir_or_file++;
779 # BIBLIOS : copying mandatory files
781 unless (-f C4::Context->zebraconfig('biblioserver')->{config}) {
782 open ZD,">:utf8 ",C4::Context->zebraconfig('biblioserver')->{config};
784 # generated by KOHA/misc/migrtion_tools/rebuild_zebra.pl
785 profilePath:\${srcdir:-.}:$biblioserverdir/tab/:$tabdir/tab/:\${srcdir:-.}/tab/
788 # Files that describe the attribute sets supported.
793 modulePath:$modulesdir/modules/
794 # Specify record type
795 iso2709.recordType:grs.marcxml.record
797 recordId: (bib1,Local-Number)
803 lockDir: $biblioserverdir/lock
806 register: $biblioserverdir/register:4G
807 shadow: $biblioserverdir/shadow:4G
809 # Temp File area for result sets
810 setTmpDir: $biblioserverdir/tmp
812 # Temp File area for index program
813 keyTmpDir: $biblioserverdir/key
815 # Approx. Memory usage during indexing
819 print "Info: creating zebra-biblios.cfg\n";
820 $created_dir_or_file++;
823 if ($created_dir_or_file) {
824 print "Info: created : $created_dir_or_file directories & files\n";
826 print "Info: file & directories OK\n";