View | Details | Raw Unified | Return to bug 11252
Collapse All | Expand All

(-)a/misc/migration_tools/rebuild_zebra.pl (-384 lines)
Lines 31-37 my $biblios; Link Here
31
my $authorities;
31
my $authorities;
32
my $noxml;
32
my $noxml;
33
my $noshadow;
33
my $noshadow;
34
my $do_munge;
35
my $want_help;
34
my $want_help;
36
my $as_xml;
35
my $as_xml;
37
my $process_zebraqueue;
36
my $process_zebraqueue;
Lines 54-60 my $result = GetOptions( Link Here
54
    'b'             => \$biblios,
53
    'b'             => \$biblios,
55
    'noxml'         => \$noxml,
54
    'noxml'         => \$noxml,
56
    'w'             => \$noshadow,
55
    'w'             => \$noshadow,
57
    'munge-config'  => \$do_munge,
58
    'a'             => \$authorities,
56
    'a'             => \$authorities,
59
    'h|help'        => \$want_help,
57
    'h|help'        => \$want_help,
60
    'x'             => \$as_xml,
58
    'x'             => \$as_xml,
Lines 146-155 if ( $verbose_logging ) { Link Here
146
    print "================================\n";
144
    print "================================\n";
147
}
145
}
148
146
149
if ($do_munge) {
150
    munge_config();
151
}
152
153
my $tester = XML::LibXML->new();
147
my $tester = XML::LibXML->new();
154
148
155
if ($authorities) {
149
if ($authorities) {
Lines 745-1129 Parameters: Link Here
745
    --where                 let you specify a WHERE query, like itemtype='BOOK'
739
    --where                 let you specify a WHERE query, like itemtype='BOOK'
746
                            or something like that
740
                            or something like that
747
741
748
    --munge-config          Deprecated option to try
749
                            to fix Zebra config files.
750
751
    --run-as-root           explicitily allow script to run as 'root' user
742
    --run-as-root           explicitily allow script to run as 'root' user
752
743
753
    --help or -h            show this message.
744
    --help or -h            show this message.
754
_USAGE_
745
_USAGE_
755
}
746
}
756
757
# FIXME: the following routines are deprecated and
758
# will be removed once it is determined whether
759
# a script to fix Zebra configuration files is
760
# actually needed.
761
sub munge_config {
762
#
763
# creating zebra-biblios.cfg depending on system
764
#
765
766
# getting zebraidx directory
767
my $zebraidxdir;
768
foreach (qw(/usr/local/bin/zebraidx
769
        /opt/bin/zebraidx
770
        /usr/bin/zebraidx
771
        )) {
772
    if ( -f $_ ) {
773
        $zebraidxdir=$_;
774
    }
775
}
776
777
unless ($zebraidxdir) {
778
    print qq|
779
    ERROR: could not find zebraidx directory
780
    ERROR: Either zebra is not installed,
781
    ERROR: or it's in a directory I don't checked.
782
    ERROR: do a which zebraidx and edit this file to add the result you get
783
|;
784
    exit;
785
}
786
$zebraidxdir =~ s/\/bin\/.*//;
787
print "Info : zebra is in $zebraidxdir \n";
788
789
# getting modules directory
790
my $modulesdir;
791
foreach (qw(/usr/local/lib/idzebra-2.0/modules/mod-grs-xml.so
792
            /usr/local/lib/idzebra/modules/mod-grs-xml.so
793
            /usr/lib/idzebra/modules/mod-grs-xml.so
794
            /usr/lib/idzebra-2.0/modules/mod-grs-xml.so
795
        )) {
796
    if ( -f $_ ) {
797
        $modulesdir=$_;
798
    }
799
}
800
801
unless ($modulesdir) {
802
    print qq|
803
    ERROR: could not find mod-grs-xml.so directory
804
    ERROR: Either zebra is not properly compiled (libxml2 is not setup and you don t have mod-grs-xml.so,
805
    ERROR: or it's in a directory I don't checked.
806
    ERROR: find where mod-grs-xml.so is and edit this file to add the result you get
807
|;
808
    exit;
809
}
810
$modulesdir =~ s/\/modules\/.*//;
811
print "Info: zebra modules dir : $modulesdir\n";
812
813
# getting tab directory
814
my $tabdir;
815
foreach (qw(/usr/local/share/idzebra/tab/explain.att
816
            /usr/local/share/idzebra-2.0/tab/explain.att
817
            /usr/share/idzebra/tab/explain.att
818
            /usr/share/idzebra-2.0/tab/explain.att
819
        )) {
820
    if ( -f $_ ) {
821
        $tabdir=$_;
822
    }
823
}
824
825
unless ($tabdir) {
826
    print qq|
827
    ERROR: could not find explain.att directory
828
    ERROR: Either zebra is not properly compiled,
829
    ERROR: or it's in a directory I don't checked.
830
    ERROR: find where explain.att is and edit this file to add the result you get
831
|;
832
    exit;
833
}
834
$tabdir =~ s/\/tab\/.*//;
835
print "Info: tab dir : $tabdir\n";
836
837
#
838
# AUTHORITIES creating directory structure
839
#
840
my $created_dir_or_file = 0;
841
if ($authorities) {
842
    if ( $verbose_logging ) {
843
        print "====================\n";
844
        print "checking directories & files for authorities\n";
845
        print "====================\n";
846
    }
847
    unless (-d "$authorityserverdir") {
848
        system("mkdir -p $authorityserverdir");
849
        print "Info: created $authorityserverdir\n";
850
        $created_dir_or_file++;
851
    }
852
    unless (-d "$authorityserverdir/lock") {
853
        mkdir "$authorityserverdir/lock";
854
        print "Info: created $authorityserverdir/lock\n";
855
        $created_dir_or_file++;
856
    }
857
    unless (-d "$authorityserverdir/register") {
858
        mkdir "$authorityserverdir/register";
859
        print "Info: created $authorityserverdir/register\n";
860
        $created_dir_or_file++;
861
    }
862
    unless (-d "$authorityserverdir/shadow") {
863
        mkdir "$authorityserverdir/shadow";
864
        print "Info: created $authorityserverdir/shadow\n";
865
        $created_dir_or_file++;
866
    }
867
    unless (-d "$authorityserverdir/tab") {
868
        mkdir "$authorityserverdir/tab";
869
        print "Info: created $authorityserverdir/tab\n";
870
        $created_dir_or_file++;
871
    }
872
    unless (-d "$authorityserverdir/key") {
873
        mkdir "$authorityserverdir/key";
874
        print "Info: created $authorityserverdir/key\n";
875
        $created_dir_or_file++;
876
    }
877
878
    unless (-d "$authorityserverdir/etc") {
879
        mkdir "$authorityserverdir/etc";
880
        print "Info: created $authorityserverdir/etc\n";
881
        $created_dir_or_file++;
882
    }
883
884
    #
885
    # AUTHORITIES : copying mandatory files
886
    #
887
    # the record model, depending on marc flavour
888
    unless (-f "$authorityserverdir/tab/record.abs") {
889
        if (C4::Context->preference("marcflavour") eq "UNIMARC") {
890
            system("cp -f $kohadir/etc/zebradb/marc_defs/unimarc/authorities/record.abs $authorityserverdir/tab/record.abs");
891
            print "Info: copied record.abs for UNIMARC\n";
892
        } else {
893
            system("cp -f $kohadir/etc/zebradb/marc_defs/marc21/authorities/record.abs $authorityserverdir/tab/record.abs");
894
            print "Info: copied record.abs for USMARC\n";
895
        }
896
        $created_dir_or_file++;
897
    }
898
    unless (-f "$authorityserverdir/tab/sort-string-utf.chr") {
899
        system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $authorityserverdir/tab/sort-string-utf.chr");
900
        print "Info: copied sort-string-utf.chr\n";
901
        $created_dir_or_file++;
902
    }
903
    unless (-f "$authorityserverdir/tab/word-phrase-utf.chr") {
904
        system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $authorityserverdir/tab/word-phrase-utf.chr");
905
        print "Info: copied word-phase-utf.chr\n";
906
        $created_dir_or_file++;
907
    }
908
    unless (-f "$authorityserverdir/tab/auth1.att") {
909
        system("cp -f $kohadir/etc/zebradb/authorities/etc/bib1.att $authorityserverdir/tab/auth1.att");
910
        print "Info: copied auth1.att\n";
911
        $created_dir_or_file++;
912
    }
913
    unless (-f "$authorityserverdir/tab/default.idx") {
914
        system("cp -f $kohadir/etc/zebradb/etc/default.idx $authorityserverdir/tab/default.idx");
915
        print "Info: copied default.idx\n";
916
        $created_dir_or_file++;
917
    }
918
919
    unless (-f "$authorityserverdir/etc/ccl.properties") {
920
#         system("cp -f $kohadir/etc/zebradb/ccl.properties ".C4::Context->zebraconfig('authorityserver')->{ccl2rpn});
921
        system("cp -f $kohadir/etc/zebradb/ccl.properties $authorityserverdir/etc/ccl.properties");
922
        print "Info: copied ccl.properties\n";
923
        $created_dir_or_file++;
924
    }
925
    unless (-f "$authorityserverdir/etc/pqf.properties") {
926
#         system("cp -f $kohadir/etc/zebradb/pqf.properties ".C4::Context->zebraconfig('authorityserver')->{ccl2rpn});
927
        system("cp -f $kohadir/etc/zebradb/pqf.properties $authorityserverdir/etc/pqf.properties");
928
        print "Info: copied pqf.properties\n";
929
        $created_dir_or_file++;
930
    }
931
932
    #
933
    # AUTHORITIES : copying mandatory files
934
    #
935
    unless (-f C4::Context->zebraconfig('authorityserver')->{config}) {
936
    open my $zd, '>:encoding(UTF-8)' ,C4::Context->zebraconfig('authorityserver')->{config};
937
    print {$zd} "
938
# generated by KOHA/misc/migration_tools/rebuild_zebra.pl
939
profilePath:\${srcdir:-.}:$authorityserverdir/tab/:$tabdir/tab/:\${srcdir:-.}/tab/
940
941
encoding: UTF-8
942
# Files that describe the attribute sets supported.
943
attset: auth1.att
944
attset: explain.att
945
attset: gils.att
946
947
modulePath:$modulesdir/modules/
948
# Specify record type
949
iso2709.recordType:grs.marcxml.record
950
recordType:grs.xml
951
recordId: (auth1,Local-Number)
952
storeKeys:1
953
storeData:1
954
955
956
# Lock File Area
957
lockDir: $authorityserverdir/lock
958
perm.anonymous:r
959
perm.kohaadmin:rw
960
register: $authorityserverdir/register:4G
961
shadow: $authorityserverdir/shadow:4G
962
963
# Temp File area for result sets
964
setTmpDir: $authorityserverdir/tmp
965
966
# Temp File area for index program
967
keyTmpDir: $authorityserverdir/key
968
969
# Approx. Memory usage during indexing
970
memMax: 40M
971
rank:rank-1
972
    ";
973
        print "Info: creating zebra-authorities.cfg\n";
974
        $created_dir_or_file++;
975
    }
976
977
    if ($created_dir_or_file) {
978
        print "Info: created : $created_dir_or_file directories & files\n";
979
    } else {
980
        print "Info: file & directories OK\n";
981
    }
982
983
}
984
if ($biblios) {
985
    if ( $verbose_logging ) {
986
        print "====================\n";
987
        print "checking directories & files for biblios\n";
988
        print "====================\n";
989
    }
990
991
    #
992
    # BIBLIOS : creating directory structure
993
    #
994
    unless (-d "$biblioserverdir") {
995
        system("mkdir -p $biblioserverdir");
996
        print "Info: created $biblioserverdir\n";
997
        $created_dir_or_file++;
998
    }
999
    unless (-d "$biblioserverdir/lock") {
1000
        mkdir "$biblioserverdir/lock";
1001
        print "Info: created $biblioserverdir/lock\n";
1002
        $created_dir_or_file++;
1003
    }
1004
    unless (-d "$biblioserverdir/register") {
1005
        mkdir "$biblioserverdir/register";
1006
        print "Info: created $biblioserverdir/register\n";
1007
        $created_dir_or_file++;
1008
    }
1009
    unless (-d "$biblioserverdir/shadow") {
1010
        mkdir "$biblioserverdir/shadow";
1011
        print "Info: created $biblioserverdir/shadow\n";
1012
        $created_dir_or_file++;
1013
    }
1014
    unless (-d "$biblioserverdir/tab") {
1015
        mkdir "$biblioserverdir/tab";
1016
        print "Info: created $biblioserverdir/tab\n";
1017
        $created_dir_or_file++;
1018
    }
1019
    unless (-d "$biblioserverdir/key") {
1020
        mkdir "$biblioserverdir/key";
1021
        print "Info: created $biblioserverdir/key\n";
1022
        $created_dir_or_file++;
1023
    }
1024
    unless (-d "$biblioserverdir/etc") {
1025
        mkdir "$biblioserverdir/etc";
1026
        print "Info: created $biblioserverdir/etc\n";
1027
        $created_dir_or_file++;
1028
    }
1029
1030
    #
1031
    # BIBLIOS : copying mandatory files
1032
    #
1033
    # the record model, depending on marc flavour
1034
    unless (-f "$biblioserverdir/tab/record.abs") {
1035
        if (C4::Context->preference("marcflavour") eq "UNIMARC") {
1036
            system("cp -f $kohadir/etc/zebradb/marc_defs/unimarc/biblios/record.abs $biblioserverdir/tab/record.abs");
1037
            print "Info: copied record.abs for UNIMARC\n";
1038
        } else {
1039
            system("cp -f $kohadir/etc/zebradb/marc_defs/marc21/biblios/record.abs $biblioserverdir/tab/record.abs");
1040
            print "Info: copied record.abs for USMARC\n";
1041
        }
1042
        $created_dir_or_file++;
1043
    }
1044
    unless (-f "$biblioserverdir/tab/sort-string-utf.chr") {
1045
        system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $biblioserverdir/tab/sort-string-utf.chr");
1046
        print "Info: copied sort-string-utf.chr\n";
1047
        $created_dir_or_file++;
1048
    }
1049
    unless (-f "$biblioserverdir/tab/word-phrase-utf.chr") {
1050
        system("cp -f $kohadir/etc/zebradb/lang_defs/fr/sort-string-utf.chr $biblioserverdir/tab/word-phrase-utf.chr");
1051
        print "Info: copied word-phase-utf.chr\n";
1052
        $created_dir_or_file++;
1053
    }
1054
    unless (-f "$biblioserverdir/tab/bib1.att") {
1055
        system("cp -f $kohadir/etc/zebradb/biblios/etc/bib1.att $biblioserverdir/tab/bib1.att");
1056
        print "Info: copied bib1.att\n";
1057
        $created_dir_or_file++;
1058
    }
1059
    unless (-f "$biblioserverdir/tab/default.idx") {
1060
        system("cp -f $kohadir/etc/zebradb/etc/default.idx $biblioserverdir/tab/default.idx");
1061
        print "Info: copied default.idx\n";
1062
        $created_dir_or_file++;
1063
    }
1064
    unless (-f "$biblioserverdir/etc/ccl.properties") {
1065
#         system("cp -f $kohadir/etc/zebradb/ccl.properties ".C4::Context->zebraconfig('biblioserver')->{ccl2rpn});
1066
        system("cp -f $kohadir/etc/zebradb/ccl.properties $biblioserverdir/etc/ccl.properties");
1067
        print "Info: copied ccl.properties\n";
1068
        $created_dir_or_file++;
1069
    }
1070
    unless (-f "$biblioserverdir/etc/pqf.properties") {
1071
#         system("cp -f $kohadir/etc/zebradb/pqf.properties ".C4::Context->zebraconfig('biblioserver')->{ccl2rpn});
1072
        system("cp -f $kohadir/etc/zebradb/pqf.properties $biblioserverdir/etc/pqf.properties");
1073
        print "Info: copied pqf.properties\n";
1074
        $created_dir_or_file++;
1075
    }
1076
1077
    #
1078
    # BIBLIOS : copying mandatory files
1079
    #
1080
    unless (-f C4::Context->zebraconfig('biblioserver')->{config}) {
1081
    open my $zd, '>:encoding(UTF-8)', C4::Context->zebraconfig('biblioserver')->{config};
1082
    print {$zd} "
1083
# generated by KOHA/misc/migrtion_tools/rebuild_zebra.pl
1084
profilePath:\${srcdir:-.}:$biblioserverdir/tab/:$tabdir/tab/:\${srcdir:-.}/tab/
1085
1086
encoding: UTF-8
1087
# Files that describe the attribute sets supported.
1088
attset:bib1.att
1089
attset:explain.att
1090
attset:gils.att
1091
1092
modulePath:$modulesdir/modules/
1093
# Specify record type
1094
iso2709.recordType:grs.marcxml.record
1095
recordType:grs.xml
1096
recordId: (bib1,Local-Number)
1097
storeKeys:1
1098
storeData:1
1099
1100
1101
# Lock File Area
1102
lockDir: $biblioserverdir/lock
1103
perm.anonymous:r
1104
perm.kohaadmin:rw
1105
register: $biblioserverdir/register:4G
1106
shadow: $biblioserverdir/shadow:4G
1107
1108
# Temp File area for result sets
1109
setTmpDir: $biblioserverdir/tmp
1110
1111
# Temp File area for index program
1112
keyTmpDir: $biblioserverdir/key
1113
1114
# Approx. Memory usage during indexing
1115
memMax: 40M
1116
rank:rank-1
1117
    ";
1118
        print "Info: creating zebra-biblios.cfg\n";
1119
        $created_dir_or_file++;
1120
    }
1121
1122
    if ($created_dir_or_file) {
1123
        print "Info: created : $created_dir_or_file directories & files\n";
1124
    } else {
1125
        print "Info: file & directories OK\n";
1126
    }
1127
1128
}
1129
}
1130
- 

Return to bug 11252