Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 37fe8e05

Von Holger Lindemann vor mehr als 14 Jahren hinzugefügt

.git* im Paket löschen,

PostgreSQL-Inst für Debian dazu packen.

Unterschiede anzeigen:

DEBIAN/mk_erp_deb.sh
37 37
cp -a $SRC/doc usr/share/doc/lx-office-erp
38 38
cp -a $SRC/image/* usr/share/lx-office-erp
39 39

  
40
#Gitfiles löschen
41
find . -name ".git*" -exec rm -rf {} \;
42

  
40 43
#Rechte setzen
41 44
chown -R www-data: usr/lib/lx-office-erp
42 45
chown -R www-data: var/lib/lx-office-erp
scripts/inst_postgres_deb.sh
1
#!/bin/bash
2
#set -x
3

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

  
9
source /usr/share/debconf/confmodule
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
#Als root anmelden
23
if [ `id -u` -gt 0 ]; then echo "Bitte als root anmelden"; exit 1; fi
24

  
25
#writeln 1 1 PostgreSQL fuer Lx-Office vorbereiten
26
#writeln 2 1 1. plpgsql.so suchen
27
PLPGSQL=""
28
#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`
33

  
34
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`
39
fi
40
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`
45
fi	
46
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
56
fi
57
#writeln 6 1 ok. 'plpgsql.so' gefunden
58

  
59
#Kann der User postgres die db erreichen
60
cnt=`ps aux | grep postgres | wc -l`
61
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
67
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`
71
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.
90
fi
91

  
92
echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler" > lxdbinst.sql
93
echo "AS '$PLPGSQL', 'plpgsql_call_handler'" >> lxdbinst.sql
94
echo "LANGUAGE c;" >> lxdbinst.sql
95
echo "CREATE PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;" >> lxdbinst.sql
96

  
97
#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
LXOUSER="lxoffice"
113

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

  
117

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

  
122
su postgres -c "psql template1 < lxdbinst.sql"
123

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

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

  
128
#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`
134

  
135
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
145
fi
146
#writeln 16 1 ok. 'pg_hba.conf' gefunden
147

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

  
150
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
155
fi 
156

  
157
CONFDIR=`dirname $PGHBA`
158

  
159
#postgresql.conf anpassen, liegt vermutlich im gleichen Verzeichnis wie pg_hba.conf
160
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`
172
fi
173

  
174
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
191
fi
192

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

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

  
200
#tput bold
201
#tput smso
202
#writeln 20 12 ok. Das sollte es gewesen sein.
203
#tput rmso
204
#tput rmso
205
echo 

Auch abrufbar als: Unified diff