Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 1e151777

Von Holger Lindemann vor fast 14 Jahren hinzugefügt

  • ID 1e1517770b9c404844212bca84dc35b9e3bdfdbd
  • Vorgänger 5e7bb78a
  • Nachfolger 06652f19

Anpassungen am Installationsscript

Unterschiede anzeigen:

scripts/inst_postgres_deb.sh
1 1
#!/bin/bash
2
#set -x
3

  
4 2
# e = exit on error
5 3
set -e
6 4
# x = xtrace
7
#set -x
5
set -x
8 6

  
7
FEHLER="Achtung!! Es hat ein Problem gegeben"
8
ERRCNT=0
9 9
source /usr/share/debconf/confmodule
10 10

  
11

  
12
function writeln()
13
{
14
   tput cup $1 $2  # Cursor positionieren
15
   tput el         # Rest der Zeile löschen
16
   shift 2         # Parameter für die Koordinaten entfernen
17
   echo -n $*" "   # Rest der Parameterliste ausgeben
18
}
19

  
20
#tput clear
21

  
22 11
#Als root anmelden
23 12
if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
13
POSTGRESQL=`dpkg -l | grep -E "postgresql-[0-9]" | cut -d" " -f3 | sort -r | head -1 -`
24 14

  
25
#writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
26
#writeln 2 1 1. plpgsql.so suchen
27
PLPGSQL=""
28 15
#Datei plpgsql.so suchen
29

  
30
#Mit Paketmanager (RPM oder APT) suchen
31
#PLPGSQL=`dpkg -L postgresql | grep plpgsql.so`
32
#PLPGSQL=`rpm -q --list postgres | grep plpgsql.so`
16
#Mit Paketmanager  suchen
17
if [ "$POSTGRESQL#" == "#" ]; then
18
    echo $FEHLER
19
    echo Keine PostgreSQL mit Paketmanager installiert
20
    echo Datenbank bitte manuell einrichten.
21
    exit 0
22
else
23
   PLPGSQL=`dpkg -L postgresql-8.3 | grep plpgsql.so`
24
fi
33 25

  
34 26
if [ "$PLPGSQL#" == "#" ]; then
35
	#Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
36
#	writeln 3 3 --locate
37
	tmp=`locate plpgsql.so 2>/dev/null`
38
	PLPGSQL=`echo $tmp | cut -d " " -f 1`
27
    #Probleme mit Paketmanager, dann zunaechst mit locate, geht schneller
28
    updatedb
29
    tmp=`locate plpgsql.so 2>/dev/null`
30
    PLPGSQL=`echo $tmp | cut -d " " -f 1`
39 31
fi
40 32
if [ "$PLPGSQL#" == "#" ]; then
41
	#noch nicht gefunden, also mit find suchen
42
#	writeln 3 15 --find /usr/lib
43
	tmp=`find /usr/lib -name  plpgsql.so -type f`
44
	PLPGSQL=`echo $tmp | cut -d " " -f 1`
33
    #noch nicht gefunden, also mit find suchen
34
    tmp=`find /usr/lib -name  plpgsql.so -type f`
35
    PLPGSQL=`echo $tmp | cut -d " " -f 1`
45 36
fi	
46 37
if [ "$PLPGSQL#" == "#" ]; then
47
	while :; do
48
#		writeln 4 1 'plpgsql.so' nicht gefunden.
49
#		tput bold
50
#   		writeln 5 1 "Bitte den Pfad eingeben: "
51
#		tput rmso
52
#   		read PLPGSQL
53
   		[ "$PLPGSQL#" != "#" ] && [ -f $PLPGSQL ] && break
54
 #  		tput bel
55
	done
38
    echo $FEHLER
39
    echo  'plpgsql.so' nicht gefunden.
40
    echo Datenbank manuell einrichten.
41
    exit 0
56 42
fi
57
#writeln 6 1 ok. 'plpgsql.so' gefunden
58 43

  
59 44
#Kann der User postgres die db erreichen
60 45
cnt=`ps aux | grep postgres | wc -l`
61 46
if [ $cnt -eq 0 ]; then
62
#	tput bel
63
#	tput bold
64
	echo Die postgreSQL-Datebbank ist nicht gestartet!
65
#	tput rmso
66
	exit 1
47
    echo $FEHLER
48
    echo Die postgreSQL-Datebbank ist nicht gestartet!
49
    echo Datenbank manuell einrichten.
50
    exit 0
67 51
fi
68
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"`
69
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"`
70
#cnt=`echo  $v7 + $v8 | bc -l`
52

  
53
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"`
71 54
if [ $v8 -eq 0 ]; then 
72
	if [ $v7 -eq 0 ]; then
73
#		tput bel
74
#		tput bold
75
		echo User postgres konnte die Datenbank nicht ansprechen
76
#		tput rmso
77
		exit 1; 
78
	else
79
		# do nothing
80
		echo ""
81

  
82
#		tput clear
83
#		writeln 1 1 Datenbank Version 7x konnte erreicht werden.
84
	fi
85
else
86
	# do nothing
87
	echo ""
88
#	tput clear
89
#	writeln 1 1 Datenbank Version 8x konnte erreicht werden.
55
    echo $FEHLER
56
    echo Datenbank Version 8x konnte erreicht werden.
57
    exit 0
90 58
fi
91 59

  
92 60
echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
......
95 63
echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
96 64

  
97 65
#writeln 2 1 Datenbankbenutzer einrichten
98
#tput bold
99
#writeln 3 1 "Bitte den Datenbank-Benutzernamen (Kleinbuchstaben) eingeben [lxoffice]: "
100
#tput rmso
101
#read LXOUSER
102
#if [ "$LXOUSER#" == "#" ]; then LXOUSER="lxoffice"; fi
103
#while :; do
104
#	tput bold
105
#	writeln 4 1 "Bitte ein Kennwort eingeben : "
106
#	tput rmso
107
#	read USRPWD
108
	if ! [ "$USRPWD#" == "#" ]; then break; fi
109
#	tput bel
110
#done;
111

  
112 66
LXOUSER="lxoffice"
113

  
114 67
db_get lx-office-erp/lx-office-erp-user-postgresql-password
115 68
USRPWD="$RET"
116 69

  
117

  
118 70
echo "CREATE USER $LXOUSER with CREATEDB ;" >> lxdbinst.sql
119 71
echo "ALTER USER $LXOUSER PASSWORD '$USRPWD';" >> lxdbinst.sql
120 72
echo "UPDATE pg_language SET lanpltrusted = true WHERE lanname = 'plpgsql';" >> lxdbinst.sql
......
123 75

  
124 76
echo "Fehlermeldungen die 'already exists' enthalten koennen ignoriert werden"
125 77

  
126
#writeln 11 1 Datenbank fuer Lx-Office vorbereitet
127

  
128 78
#writeln 12 1 Datenbankberechtigung einrichten
129
#wo ist die pg_hba.conf
130
#writeln 13 3 --find erst /etc dann /var/lib
131
tmp=`find /etc -name pg_hba.conf -type f`
132
[ "$tmp#" == "#" ] && tmp=`find /var/lib -name  pg_hba.conf -type f`
133
PGHBA=`echo $tmp | cut -d " " -f 1`
79
PGHBA=`find /etc/postgresql -name pg_hba.conf -type f | sort -r | head -1 -`
80
if [ "$PGHBA#" == "#" ] ; then
81
   PGHBA=`find /var/lib -name  pg_hba.conf -type f | sort -r | head -1 -`
82
fi
134 83

  
135 84
if [ "$PGHBA#" == "#" ]; then
136
	while :; do
137
#		writeln 14 1 'pg_hba.conf' nicht gefunden.
138
#		tput bold
139
#   		writeln 15 1 "Bitte den Pfad eingeben: "
140
#		tput rmso
141
#   		read PGHBA
142
   		[ "$PGHBA#" != "#" ] && [ -f $PGHBA ] && break
143
 #  		tput bel
144
	done
85
    echo $FEHLER
86
    echo 'pg_hba.conf' nicht gefunden.
87
    echo "Berechtigungen bitte selber einrichten"
88
    ERRCNT=1
145 89
fi
146
#writeln 16 1 ok. 'pg_hba.conf' gefunden
147 90

  
148 91
cnt=`grep $LXOUSER $PGHBA | wc -l `
149 92

  
150 93
if [ $cnt -eq 0 ]; then 
151
	mv $PGHBA  $PGHBA.org
152
	echo "local   all         $LXOUSER                                           password" > $PGHBA
153
	echo "host    all         $LXOUSER      127.0.0.1         255.255.255.255    password" >> $PGHBA
154
	cat $PGHBA.org >> $PGHBA
94
    mv $PGHBA  $PGHBA.org
95
    echo "local   all         $LXOUSER                                           password" > $PGHBA
96
    echo "host    all         $LXOUSER      127.0.0.1         255.255.255.255    password" >> $PGHBA
97
    cat $PGHBA.org >> $PGHBA
155 98
fi 
156 99

  
157 100
CONFDIR=`dirname $PGHBA`
158 101

  
159 102
#postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
160 103
if ! [ -f $CONFDIR/postgresql.conf ]; then
161
	#doch nicht da, dann fragen
162
        while :; do
163
#		writeln 13 1 'postgresql.conf' nicht gefunden.
164
#		tput bold
165
#                writeln 14 1 "Bitte den Pfad eingeben: "
166
#		tput rmso
167
#                read PGCONF
168
                [ "$PGCONF#" != "#" ] && [ -f $PGCONF ] && break
169
 #               tput bel
170
        done
171
	CONFDIR=`dirname $PGCONF`
104
    echo $FEHLER
105
    echo 'postgresql.conf' nicht gefunden.
106
    echo PostgreSQL selber konfigurieren
107
    ERRCNT=1
172 108
fi
173 109

  
174 110
mv $CONFDIR/postgresql.conf $CONFDIR/postgresql.conf.org
175
if ! [ $v7 -eq 0 ]; then 
176
	#Nur bei der V7.x:  tcpip_socket = true
177
	sed 's/^.*tcpip_socket.*/tcpip_socket = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
178
	cnt=`grep tcpip_socket $CONFDIR/postgresql.conf | wc -l`
179
	if [ $cnt -eq 0 ]; then
180
		cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
181
		echo "tcpip_socket = true" >> $CONFDIR/postgresql.conf
182
	fi
183
else 
184
	#Bei der V8.x OID einschalten.
185
	sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
186
	cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
187
	if [ $cnt -eq 0 ]; then
188
		cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
189
		echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
190
	fi
111
#Bei der V8.x OID einschalten.
112
sed 's/^.*default_with_oids.*/default_with_oids = true/i' $CONFDIR/postgresql.conf.org > $CONFDIR/postgresql.conf
113
cnt=`grep default_with_oids $CONFDIR/postgresql.conf | wc -l`
114
if [ $cnt -eq 0 ]; then
115
	cp $CONFDIR/postgresql.conf.org $CONFDIR/postgresql.conf
116
	echo "default_with_oids = true" >> $CONFDIR/postgresql.conf
191 117
fi
192 118

  
193 119
 
194
tmp=`ls /etc/init.d/postgres*`
195
PGSQL=`echo $tmp | cut -d " " -f 1`
120
tmp=`ls -r1 /etc/init.d/postgres*  | head -1 -`
196 121

  
197 122
#writeln 18 1 Datenbank neu starten
198 123
$PGSQL reload
199 124

  
200
#tput bold
201
#tput smso
202
#writeln 20 12 ok. Das sollte es gewesen sein.
203
#tput rmso
204
#tput rmso
205
echo 
125
if [ $ERRCNT -gt 0 ]; then
126
    echo $FEHLER
127
    echo Das betrifft aber nicht die Lx-Office Installation
128
    echo sondern die Konfiguration der Datenbank.
129
    echo $POSTGRESQL , $PGHBA , $CONFDIR/postgresql.conf ??
130
    sleep 10
131
fi

Auch abrufbar als: Unified diff