Anpassungen am Installationsscript
authorHolger Lindemann <hli@lenny.hoch.ul>
Tue, 25 Jan 2011 16:55:33 +0000 (17:55 +0100)
committerHolger Lindemann <hli@lenny.hoch.ul>
Tue, 25 Jan 2011 16:55:33 +0000 (17:55 +0100)
DEBIAN/DEBIAN/control
DEBIAN/DEBIAN/preinst
scripts/inst_postgres.sh
scripts/inst_postgres_deb.sh

index e07492c..f47766d 100644 (file)
@@ -5,8 +5,8 @@ Section: universe/web
 Priority: optional
 Installed-Size: 0
 Maintainer: Holger Lindemann <hli@lx-system.de>, Adrian Weibel <adrian_weibel@web.de>
-Depends: patch, apache2 | apache | lighttpd, postgresql | postgresql-8.2 | postgresql-8.3 | postgresql-8.4, libdbi-perl, libdbd-pg-perl, libpg-perl, libarchive-zip-perl, libyaml-perl, libio-stringy-perl, libtemplate-perl, libpdf-api2-perl, libcgi-ajax-perl, liblist-moreutils-perl, libxml-writer-perl, libtext-csv-xs-perl | libtext-csv-perl, liburi-perl, libdatetime-perl, libtext-iconv-perl, libclass-accessor-perl,libemail-address-perl,libparent-perl
-Suggests: tetex-base, tetex-bin, tetex-extra, xpdf | evince | okular, libfcgi-perl, libapache2-mod-fastcgi
+Depends: patch, apache2 | apache | lighttpd, postgresql-8.2 | postgresql-8.3 | postgresql-8.4, libdbi-perl, libdbd-pg-perl, libpg-perl, libarchive-zip-perl, libyaml-perl, libio-stringy-perl, libtemplate-perl, libpdf-api2-perl, libcgi-ajax-perl, liblist-moreutils-perl, libxml-writer-perl, libtext-csv-xs-perl | libtext-csv-perl, liburi-perl, libdatetime-perl, libtext-iconv-perl, libclass-accessor-perl,libemail-address-perl,libparent-perl, librose-object-perl, librose-db-perl, librose-db-object-perl
+Suggests: tetex-base | texlive-latex-base, tetex-bin | texlive-base-bin , tetex-extra | texlive-latex-extra, xpdf | evince | okular, libfcgi-perl, libapache2-mod-fastcgi
 Homepage: http://www.lx-office.org
 Description: Extended double entry accounting system for the german market.
  Lx-Office is derived from sql-ledger and rewritten
index 03b19fa..1d39870 100755 (executable)
@@ -2,10 +2,14 @@
 #Nur für das Update von einer 2.6.0 nötig, da hier gnadenlos gelöscht wird
 set -e
 echo " ! "`date`" Preinst $1 !" >> /tmp/lxo-erp.log
+
 if [ "$1" = "upgrade" ]; then
-    echo "#!/bin/sh" > /var/lib/dpkg/info/lx-office-erp.postrm
-    echo "set -e" >> /var/lib/dpkg/info/lx-office-erp.postrm
-    echo "echo ' ! '`date`' postrm2 $1 !'" >> /var/lib/dpkg/info/lx-office-erp.postrm
-    chmod +x /var/lib/dpkg/info/lx-office-erp.postrm
+    cnt=`grep -c '\-e /usr/lib/lx-office-erp' /var/lib/dpkg/info/lx-office-erp.postrm`
+    if ! [ $cnt == 0 ]; then
+        echo "#!/bin/sh" > /var/lib/dpkg/info/lx-office-erp.postrm
+        echo "set -e" >> /var/lib/dpkg/info/lx-office-erp.postrm
+        echo "echo ' ! '`date`' postrm2 $1 !'" >> /var/lib/dpkg/info/lx-office-erp.postrm
+        chmod +x /var/lib/dpkg/info/lx-office-erp.postrm
+    fi
 fi
 
index 5fe0d71..db7b312 100755 (executable)
@@ -18,12 +18,24 @@ writeln 2 1 1. plpgsql.so suchen
 PLPGSQL=""
 #Datei plpgsql.so suchen
 
-#Mit Paketmanager (RPM oder APT) suchen
-#PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
+POSTGRESQL=`dpkg -l | grep -E "postgresql-[0-9]" | cut -d" " -f3 | sort -r | head -1 -`
+
+#Mit Paketmanager (Apt) suchen
+if [ "$POSTGRESQL#" == "#" ]; then
+    writeln 1 1 $FEHLER
+    writeln 2 1 Keine PostgreSQL mit Paketmanager installiert
+    writeln 3 1 Datenbank bitte manuell einrichten.
+    exit 0
+else
+   PLPGSQL=`dpkg -L postgresql-8.3 | grep plpgsql.so`
+fi
+
+#Mit Paketmanager (RPM) suchen ?
 #PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
 
 if [ "$PLPGSQL#" == "#" ]; then
        #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
+       updatedb
        writeln 3 3 --locate
        tmp=`locate plpgsql.so 2>/dev/null`
        PLPGSQL=`echo $tmp | cut -d " " -f 1`
@@ -56,23 +68,16 @@ if [ $cnt -eq 0 ]; then
        tput rmso
        exit 1
 fi
-v7=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+7\.[0-9]\.[0-9]" | wc -l"`
-v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[0-9]\.[0-9]" | wc -l"`
-#cnt=`echo  $v7 + $v8 | bc -l`
+v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[2-9]\.[0-9]" | wc -l"`
 if [ $v8 -eq 0 ]; then 
-       if [ $v7 -eq 0 ]; then
-               tput bel
-               tput bold
-               echo User postgres konnte die Datenbank nicht ansprechen
-               tput rmso
-               exit 1; 
-       else
-               tput clear
-               writeln 1 1 Datenbank Version 7x konnte erreicht werden.
-       fi
+       tput bel
+       tput bold
+       echo User postgres konnte die Datenbank 8.2.x -  8.9.x nicht ansprechen
+       tput rmso
+       exit 1; 
 else
        tput clear
-       writeln 1 1 Datenbank Version 8x konnte erreicht werden.
+       writeln 1 1 Datenbank Version 8.2.x - 8.9.x konnte erreicht werden.
 fi
 
 echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
@@ -108,7 +113,7 @@ writeln 11 1 Datenbank fuer Lx-Office vorbereitet
 writeln 12 1 Datenbankberechtigung einrichten
 #wo ist die pg_hba.conf
 writeln 13 3 --find erst /etc dann /var/lib
-tmp=`find /etc -name pg_hba.conf -type f`
+tmp=`find /etc/postgresql -name pg_hba.conf -type f`
 [ "$tmp#" == "#" ] && tmp=`find /var/lib -name  pg_hba.conf -type f`
 PGHBA=`echo $tmp | cut -d " " -f 1`
 
@@ -152,26 +157,16 @@ if ! [ -f $CONFDIR/postgresql.conf ]; then
 fi
 
 mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
-if ! [ $v7 -eq 0 ]; then 
-       #Nur bei der V7.x:  tcpip_socket = true
-       sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
-       cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
-       if [ $cnt -eq 0 ]; then
-               cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
-               echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
-       fi
-else 
-       #Bei der V8.x OID einschalten.
-       sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
-       cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
-       if [ $cnt -eq 0 ]; then
-               cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
-               echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
-       fi
+#Bei der V8.x OID einschalten.
+sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
+cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
+if [ $cnt -eq 0 ]; then
+       cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
+       echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
 fi
 
  
-tmp=`ls /etc/init.d/postgres*`
+tmp=`ls -r1 /etc/init.d/postgres*`
 PGSQL=`echo $tmp | cut -d " " -f 1`
 
 writeln 18 1 Datenbank neu starten
index cec0b7d..d5a3138 100755 (executable)
@@ -1,92 +1,60 @@
 #!/bin/bash
-#set -x
-
 # e = exit on error
 set -e
 # x = xtrace
-#set -x
+set -x
 
+FEHLER="Achtung!! Es hat ein Problem gegeben"
+ERRCNT=0
 source /usr/share/debconf/confmodule
 
-
-function writeln()
-{
-   tput cup $1 $2  # Cursor positionieren
-   tput el         # Rest der Zeile löschen
-   shift 2         # Parameter für die Koordinaten entfernen
-   echo -n $*" "   # Rest der Parameterliste ausgeben
-}
-
-#tput clear
-
 #Als root anmelden
 if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
+POSTGRESQL=`dpkg -l | grep -E "postgresql-[0-9]" | cut -d" " -f3 | sort -r | head -1 -`
 
-#writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
-#writeln 2 1 1. plpgsql.so suchen
-PLPGSQL=""
 #Datei plpgsql.so suchen
-
-#Mit Paketmanager (RPM oder APT) suchen
-#PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
-#PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
+#Mit Paketmanager  suchen
+if [ "$POSTGRESQL#" == "#" ]; then
+    echo $FEHLER
+    echo Keine PostgreSQL mit Paketmanager installiert
+    echo Datenbank bitte manuell einrichten.
+    exit 0
+else
+   PLPGSQL=`dpkg -L postgresql-8.3 | grep plpgsql.so`
+fi
 
 if [ "$PLPGSQL#" == "#" ]; then
-       #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
-#      writeln 3 3 --locate
-       tmp=`locate plpgsql.so 2>/dev/null`
-       PLPGSQL=`echo $tmp | cut -d " " -f 1`
+    #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
+    updatedb
+    tmp=`locate plpgsql.so 2>/dev/null`
+    PLPGSQL=`echo $tmp | cut -d " " -f 1`
 fi
 if [ "$PLPGSQL#" == "#" ]; then
-       #noch nicht gefunden, also mit find suchen
-#      writeln 3 15 --find /usr/lib
-       tmp=`find /usr/lib -name  plpgsql.so -type f`
-       PLPGSQL=`echo $tmp | cut -d " " -f 1`
+    #noch nicht gefunden, also mit find suchen
+    tmp=`find /usr/lib -name  plpgsql.so -type f`
+    PLPGSQL=`echo $tmp | cut -d " " -f 1`
 fi     
 if [ "$PLPGSQL#" == "#" ]; then
-       while :; do
-#              writeln 4 1 'plpgsql.so' nicht gefunden.
-#              tput bold
-#              writeln 5 1 "Bitte den Pfad eingeben: "
-#              tput rmso
-#              read PLPGSQL
-               [ "$PLPGSQL#" != "#" ] && [ -f $PLPGSQL ] && break
- #             tput bel
-       done
+    echo $FEHLER
+    echo  'plpgsql.so' nicht gefunden.
+    echo Datenbank manuell einrichten.
+    exit 0
 fi
-#writeln 6 1 ok. 'plpgsql.so' gefunden
 
 #Kann der User postgres die db erreichen
 cnt=`ps aux | grep postgres | wc -l`
 if [ $cnt -eq 0 ]; then
-#      tput bel
-#      tput bold
-       echo Die postgreSQL-Datebbank ist nicht gestartet!
-#      tput rmso
-       exit 1
+    echo $FEHLER
+    echo Die postgreSQL-Datebbank ist nicht gestartet!
+    echo Datenbank manuell einrichten.
+    exit 0
 fi
-v7=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+7\.[0-9]\.[0-9]" | wc -l"`
-v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[0-9]\.[0-9]" | wc -l"`
-#cnt=`echo  $v7 + $v8 | bc -l`
+
+v8=`su postgres -c "echo 'select version()' | psql template1 2>/dev/null | grep -E "[Ss][Qq][Ll][[:space:]]+8\.[2-9]\.[0-9]" | wc -l"`
 if [ $v8 -eq 0 ]; then 
-       if [ $v7 -eq 0 ]; then
-#              tput bel
-#              tput bold
-               echo User postgres konnte die Datenbank nicht ansprechen
-#              tput rmso
-               exit 1; 
-       else
-               # do nothing
-               echo ""
-
-#              tput clear
-#              writeln 1 1 Datenbank Version 7x konnte erreicht werden.
-       fi
-else
-       # do nothing
-       echo ""
-#      tput clear
-#      writeln 1 1 Datenbank Version 8x konnte erreicht werden.
+    echo $FEHLER
+    echo Datenbank Version 8x konnte erreicht werden.
+    exit 0
 fi
 
 echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
@@ -95,26 +63,10 @@ echo "LANGUAGE c;" >> lxdbinst.sql
 echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
 
 #writeln 2 1 Datenbankbenutzer einrichten
-#tput bold
-#writeln 3 1 "Bitte den Datenbank-Benutzernamen (Kleinbuchstaben) eingeben [lxoffice]: "
-#tput rmso
-#read LXOUSER
-#if [ "$LXOUSER#" == "#" ]; then LXOUSER="lxoffice"; fi
-#while :; do
-#      tput bold
-#      writeln 4 1 "Bitte ein Kennwort eingeben : "
-#      tput rmso
-#      read USRPWD
-       if ! [ "$USRPWD#" == "#" ]; then break; fi
-#      tput bel
-#done;
-
 LXOUSER="lxoffice"
-
 db_get lx-office-erp/lx-office-erp-user-postgresql-password
 USRPWD="$RET"
 
-
 echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
 echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
 echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
@@ -123,83 +75,57 @@ su postgres -c "psql template1 < lxdbinst.sql"
 
 echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
 
-#writeln 11 1 Datenbank fuer Lx-Office vorbereitet
-
 #writeln 12 1 Datenbankberechtigung einrichten
-#wo ist die pg_hba.conf
-#writeln 13 3 --find erst /etc dann /var/lib
-tmp=`find /etc -name pg_hba.conf -type f`
-[ "$tmp#" == "#" ] && tmp=`find /var/lib -name  pg_hba.conf -type f`
-PGHBA=`echo $tmp | cut -d " " -f 1`
+PGHBA=`find /etc/postgresql -name pg_hba.conf -type f | sort -r | head -1 -`
+if [ "$PGHBA#" == "#" ] ; then
+   PGHBA=`find /var/lib -name  pg_hba.conf -type f | sort -r | head -1 -`
+fi
 
 if [ "$PGHBA#" == "#" ]; then
-       while :; do
-#              writeln 14 1 'pg_hba.conf' nicht gefunden.
-#              tput bold
-#              writeln 15 1 "Bitte den Pfad eingeben: "
-#              tput rmso
-#              read PGHBA
-               [ "$PGHBA#" != "#" ] && [ -f $PGHBA ] && break
- #             tput bel
-       done
+    echo $FEHLER
+    echo 'pg_hba.conf' nicht gefunden.
+    echo "Berechtigungen bitte selber einrichten"
+    ERRCNT=1
 fi
-#writeln 16 1 ok. 'pg_hba.conf' gefunden
 
 cnt=`grep $LXOUSER $PGHBA | wc -l `
 
 if [ $cnt -eq 0 ]; then 
-       mv $PGHBA  $PGHBA.org
-       echo "local   all         $LXOUSER                                           password" > $PGHBA
-       echo "host    all         $LXOUSER      127.0.0.1         255.255.255.255    password" >> $PGHBA
-       cat $PGHBA.org >> $PGHBA
+    mv $PGHBA  $PGHBA.org
+    echo "local   all         $LXOUSER                                           password" > $PGHBA
+    echo "host    all         $LXOUSER      127.0.0.1         255.255.255.255    password" >> $PGHBA
+    cat $PGHBA.org >> $PGHBA
 fi 
 
 CONFDIR=`dirname $PGHBA`
 
 #postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
 if ! [ -f $CONFDIR/postgresql.conf ]; then
-       #doch nicht da, dann fragen
-        while :; do
-#              writeln 13 1 'postgresql.conf' nicht gefunden.
-#              tput bold
-#                writeln 14 1 "Bitte den Pfad eingeben: "
-#              tput rmso
-#                read PGCONF
-                [ "$PGCONF#" != "#" ] && [ -f $PGCONF ] && break
- #               tput bel
-        done
-       CONFDIR=`dirname $PGCONF`
+    echo $FEHLER
+    echo 'postgresql.conf' nicht gefunden.
+    echo PostgreSQL selber konfigurieren
+    ERRCNT=1
 fi
 
 mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
-if ! [ $v7 -eq 0 ]; then 
-       #Nur bei der V7.x:  tcpip_socket = true
-       sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
-       cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
-       if [ $cnt -eq 0 ]; then
-               cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
-               echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
-       fi
-else 
-       #Bei der V8.x OID einschalten.
-       sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
-       cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
-       if [ $cnt -eq 0 ]; then
-               cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
-               echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
-       fi
+#Bei der V8.x OID einschalten.
+sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
+cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
+if [ $cnt -eq 0 ]; then
+       cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
+       echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
 fi
 
  
-tmp=`ls /etc/init.d/postgres*`
-PGSQL=`echo $tmp | cut -d " " -f 1`
+tmp=`ls -r1 /etc/init.d/postgres*  | head -1 -`
 
 #writeln 18 1 Datenbank neu starten
 $PGSQL reload
 
-#tput bold
-#tput smso
-#writeln 20 12 ok. Das sollte es gewesen sein.
-#tput rmso
-#tput rmso
-echo 
+if [ $ERRCNT -gt 0 ]; then
+    echo $FEHLER
+    echo Das betrifft aber nicht die Lx-Office Installation
+    echo sondern die Konfiguration der Datenbank.
+    echo $POSTGRESQL , $PGHBA , $CONFDIR/postgresql.conf ??
+    sleep 10
+fi