EnterpriseDB: The Enterprise Postgres Company Postgres Plus Forums: The PostgreSQL Open Source Database from EnterpriseDB
  [Search] Search   [Recent Topics] Recent Topics   [Hottest Topics] Hottest Topics   [Members]  Member Listing   [Groups] Back to home page 

Error Installing Postgresql on OSx (Macbook Pro latest) using one click installation  XML

Forum Index » PostgreSQL Installers for Windows, Linux and OS X
Author Message
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

Well,
installation directory is /Library/PostgreSQL/8.3/, in /Library/PostgreSQL/8.3/data/ there's db cluster, port number is 5432 and in /Applications/PostgreSQL 8.3/ there are services scripts.

Output of netstat -a:
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 localhost.netinfo-loca localhost.1013 ESTABLISHED
tcp4 0 0 localhost.1013 localhost.netinfo-loca ESTABLISHED
tcp4 0 0 192.168.1.7.49206 83.59.128.7.4662 ESTABLISHED
tcp4 0 0 localhost.netinfo-loca localhost.1015 ESTABLISHED
tcp4 0 0 localhost.1015 localhost.netinfo-loca ESTABLISHED
tcp4 0 0 *.postgresql *.* LISTEN
tcp6 0 0 *.5432 *.* LISTEN
tcp4 0 0 *.23052 *.* LISTEN
tcp4 0 0 192.168.1.7.49158 89.248.172.90.ipsec-ms ESTABLISHED
tcp4 0 0 *.4662 *.* LISTEN
tcp4 0 0 localhost.netinfo-loca localhost.1021 ESTABLISHED
tcp4 0 0 localhost.1021 localhost.netinfo-loca ESTABLISHED
tcp4 0 0 localhost.netinfo-loca *.* LISTEN
udp4 0 0 *.mdns *.*
udp6 0 0 localhost.49157 localhost.49157
udp46 0 0 *.9887 *.*
udp4 0 0 *.rfa *.*
udp4 0 0 *.4665 *.*
udp4 0 0 localhost.49155 localhost.1022
udp4 0 0 localhost.49154 localhost.1022
udp4 0 0 localhost.1022 *.*
udp4 0 0 localhost.49153 localhost.1023
udp4 0 0 localhost.1023 *.*
udp4 0 0 192.168.1.7.ntp *.*
udp6 0 0 fe80:5::21b:63ff.123 *.*
udp4 0 0 localhost.ntp *.*
udp6 0 0 fe80:1::1.123 *.*
udp6 0 0 localhost.123 *.*
udp6 0 0 *.123 *.*
udp4 0 0 *.ntp *.*
udp6 0 0 *.5353 *.*
udp4 0 0 *.mdns *.*
udp4 0 0 localhost.netinfo-loca *.*
udp4 0 0 *.* *.*
Active LOCAL (UNIX) domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
2e5acc0 stream 0 0 36b56b4 0 0 0 /tmp/.s.PGSQL.5432
2e5a220 stream 0 0 0 2e5a2a8 0 0 /var/run/mDNSResponder
2e5a2a8 stream 0 0 0 2e5a220 0 0
2e5a6e8 stream 0 0 0 2e5a770 0 0 /var/run/mDNSResponder
2e5a770 stream 0 0 0 2e5a6e8 0 0
2e5a908 stream 0 0 0 2e5a990 0 0
2e5a990 stream 0 0 0 2e5a908 0 0
2e5aa18 stream 0 0 0 2e5aaa0 0 0 /var/run/usbmuxd
2e5aaa0 stream 0 0 0 2e5aa18 0 0
2e5ae58 stream 0 0 0 2e5ac38 0 0 /var/run/mDNSResponder
2e5ac38 stream 0 0 0 2e5ae58 0 0
28f6198 stream 0 0 0 28f6220 0 0 /var/run/mDNSResponder
28f6220 stream 0 0 0 28f6198 0 0
28f62a8 stream 0 0 2dd4f78 0 0 0 /var/run/pppconfd
28f6d48 stream 0 0 0 28f6cc0 0 0
28f6cc0 stream 0 0 0 28f6d48 0 0
28f6908 stream 0 0 0 28f6880 0 0 /var/run/asl_input
28f6880 stream 0 0 0 28f6908 0 0
28f6dd0 stream 0 0 2cfc948 0 0 0 /var/run/mDNSResponder
28f6aa0 stream 0 0 2cccef4 0 0 0 /var/run/asl_input
28f6e58 stream 0 0 2cac840 0 0 0 /var/run/usbmuxd
28f6ee0 stream 0 0 2cac8c4 0 0 0 /var/run/portmap.socket
28f6f68 stream 0 0 2919f78 0 0 0 /var/launchd/0/sock
28f6000 dgram 0 0 0 28f6bb0 0 2e5ad48
2e5a330 dgram 0 0 0 2e5a3b8 2e5a3b8 0
2e5a3b8 dgram 0 0 0 2e5a330 2e5a330 0
2e5a440 dgram 0 0 0 28f64c8 28f64c8 0
28f64c8 dgram 0 0 0 2e5a440 2e5a440 0
2e5a4c8 dgram 0 0 0 2e5a550 2e5a550 0
2e5a550 dgram 0 0 0 2e5a4c8 2e5a4c8 0
2e5a5d8 dgram 0 0 0 2e5a660 2e5a660 0
2e5a660 dgram 0 0 0 2e5a5d8 2e5a5d8 0
2e5a7f8 dgram 0 0 0 2e5a880 2e5a880 0
2e5a880 dgram 0 0 0 2e5a7f8 2e5a7f8 0
2e5ab28 dgram 0 0 0 2e5abb0 2e5abb0 0
2e5abb0 dgram 0 0 0 2e5ab28 2e5ab28 0
2e5ad48 dgram 0 0 0 28f6bb0 0 2e5add0
2e5add0 dgram 0 0 0 28f6bb0 0 2e5af68
2e5af68 dgram 0 0 0 28f6bb0 0 2e5aee0
2e5aee0 dgram 0 0 0 28f6bb0 0 28f6660
28f6088 dgram 0 0 0 28f6110 28f6110 0
28f6110 dgram 0 0 0 28f6088 28f6088 0
28f6660 dgram 0 0 0 28f6bb0 0 28f6440
28f6330 dgram 0 0 0 28f63b8 28f63b8 0
28f63b8 dgram 0 0 0 28f6330 28f6330 0
28f6440 dgram 0 0 0 28f6bb0 0 28f6550
28f6550 dgram 0 0 0 28f6bb0 0 28f66e8
28f65d8 dgram 0 0 0 28f6c38 28f6c38 0
28f6c38 dgram 0 0 0 28f65d8 28f65d8 0
28f66e8 dgram 0 0 0 28f6bb0 0 28f6a18
28f6a18 dgram 0 0 0 28f6bb0 0 28f6770
28f6770 dgram 0 0 0 28f6bb0 0 28f6b28
28f6b28 dgram 0 0 0 28f6bb0 0 0
28f67f8 dgram 0 0 0 28f6990 28f6990 0
28f6990 dgram 0 0 0 28f67f8 28f67f8 0
28f6bb0 dgram 0 0 2cccdec 0 28f6000 0 /var/run/syslog

ps -ef gave me illegal command use.

About filesystem, you've right: is case-sensitive. I didn't know that.

Important: For this try I've upgraded permissions on my main user (named JLPicard) to administrator.

This message was edited 1 time. Last update was at 17 Mar 2009 14:22:24

Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:Well,
installation directory is /Library/PostgreSQL/8.3/, in /Library/PostgreSQL/8.3/data/ there's db cluster, port number is 5432 and in /Applications/PostgreSQL 8.3/ there are services scripts.

Output of netstat -a:

ps -ef gave me illegal command use.

About filesystem, you've right: is case-sensitive. I didn't know that.



OK, I reinstalled the mini using a case-sensitive FS, and the install worked fine again.

The output from netstat -a looks as I'd expect.

Please try 'ps -aux'. I forgot that Apple changed the ps options between Tiger and Leopard.

Is this an intel or ppc mac?

Thanks for your patience!
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

Here it is ps -aux output:

USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
JLPicard 708 7.6 10.4 499020 109020 ?? S 6:37PM 1:15.64 /Applications/Firefox.app/Contents/MacOS
JLPicard 672 2.7 1.8 76916 18656 ?? UNs 6:34PM 0:34.78 /System/Library/Frameworks/CoreServices.
JLPicard 698 1.4 0.9 359024 9748 ?? S 6:36PM 0:02.27 /Applications/Utilities/Terminal.app/Con
windowse 65 1.0 1.8 347544 18896 ?? Rs 6:12PM 0:35.20 /System/Library/Frameworks/ApplicationSe
root 36 0.0 0.0 27252 224 ?? S+ 6:12PM 0:00.00 /usr/libexec/ipfwloggerd
root 38 0.0 0.1 27824 832 ?? Ss 6:12PM 0:00.01 /System/Library/PrivateFrameworks/Dedica
root 39 0.0 0.1 27848 596 ?? Ss 6:12PM 0:00.02 /usr/sbin/KernelEventAgent
root 40 0.0 0.1 28016 1056 ?? Ss 6:12PM 0:00.12 /usr/sbin/mDNSResponder -launchdaemon
root 41 0.0 0.1 27580 580 ?? Ss 6:12PM 0:00.21 /usr/sbin/netinfod -s local
root 42 0.0 0.0 27288 432 ?? Ss 6:12PM 0:00.12 /usr/sbin/syslogd
root 43 0.0 0.0 27528 520 ?? Ss 6:12PM 0:00.01 /usr/sbin/cron
root 44 0.0 0.2 30276 2220 ?? Ss 6:12PM 0:00.75 /usr/sbin/configd
root 45 0.0 0.4 34940 3960 ?? Ss 6:12PM 0:00.30 /usr/sbin/coreaudiod
root 46 0.0 0.1 27804 1180 ?? Ss 6:12PM 0:00.26 /usr/sbin/diskarbitrationd
root 48 0.0 0.1 28324 644 ?? Ss 6:12PM 0:00.02 /usr/sbin/memberd -x
root 49 0.0 0.2 29920 1916 ?? Ss 6:12PM 0:00.19 /usr/sbin/securityd
root 50 0.0 0.0 27864 476 ?? Ss 6:12PM 0:00.11 /usr/sbin/notifyd
root 52 0.0 0.2 32280 2588 ?? Ss 6:12PM 0:00.21 /usr/sbin/DirectoryService
root 53 0.0 0.1 27676 808 ?? Ss 6:12PM 0:00.12 /usr/sbin/distnoted
root 56 0.0 0.0 27252 248 ?? Ss 6:12PM 0:02.42 /usr/sbin/update
root 67 0.0 0.3 39980 2656 ?? S 6:12PM 0:00.16 /usr/sbin/blued
root 69 0.0 1.5 51652 15480 ?? Ss 6:12PM 0:00.82 /System/Library/CoreServices/coreservice
JLPicard 72 0.0 0.6 69412 6040 ?? Ss 6:12PM 0:01.65 /System/Library/Frameworks/ApplicationSe
JLPicard 73 0.0 0.4 341988 4472 ?? Ss 6:12PM 0:00.41 /System/Library/CoreServices/loginwindow
root 96 0.0 0.0 27768 240 ?? Ss 6:12PM 0:00.00 /usr/libexec/crashreporterd
root 139 0.0 0.0 29312 212 ?? Ss 6:12PM 0:00.00 nfsiod -n 4
root 164 0.0 1.0 49868 9968 ?? Ss 6:12PM 0:16.57 /System/Library/Frameworks/CoreServices.
root 168 0.0 0.0 27312 224 ?? Ss 6:12PM 0:00.00 rpc.lockd -w
root 171 0.0 0.1 29720 1212 ?? Ss 6:12PM 0:00.03 /usr/sbin/automount -f -m /Network -nsl
root 179 0.0 0.1 29424 1188 ?? Ss 6:12PM 0:00.03 /usr/sbin/automount -f -m /automount/Ser
JLPicard 186 0.0 0.3 58224 2712 ?? Ss 6:12PM 0:00.37 /System/Library/CoreServices/pbs
JLPicard 194 0.0 0.5 351604 4936 ?? S 6:12PM 0:01.04 /System/Library/CoreServices/Dock.app/Co
JLPicard 195 0.0 0.8 356140 8192 ?? S 6:12PM 0:03.58 /System/Library/CoreServices/SystemUISer
JLPicard 196 0.0 1.6 380980 17284 ?? U 6:12PM 1:18.83 /System/Library/CoreServices/Finder.app/
root 200 0.0 0.0 27740 440 ?? Ss 6:12PM 0:00.15 ntpd -c /private/etc/ntp-restrict.conf -
JLPicard 205 0.0 0.3 342564 3068 ?? S 6:12PM 0:00.13 /Applications/iTunes.app/Contents/Resour
JLPicard 207 0.0 0.4 338760 4144 ?? S 6:12PM 0:00.55 /System/Library/CoreServices/System Even
JLPicard 208 0.0 0.6 363924 6196 ?? S 6:12PM 0:00.18 /Users/JLPicard/Library/Google/GoogleSof
JLPicard 209 0.0 0.4 343160 3820 ?? S 6:12PM 0:00.16 /System/Library/CoreServices/AirPort Bas
JLPicard 210 0.0 0.4 342880 3992 ?? S 6:12PM 0:02.50 /System/Library/PreferencePanes/Universa
nobody 211 0.0 0.1 27632 552 ?? Ss 6:12PM 0:00.01 /System/Library/PrivateFrameworks/Mobile
unknown 632 0.0 0.5 41968 4956 ?? SNs 6:15PM 0:00.14 /System/Library/Frameworks/CoreServices.
JLPicard 647 0.0 1.2 380452 13084 ?? S 6:19PM 0:00.69 /Library/PreferencePanes/Growl.prefPane/
nobody 692 0.0 0.3 41968 3288 ?? SNs 6:35PM 0:00.15 /System/Library/Frameworks/CoreServices.
root 700 0.0 0.1 27576 604 p1 Ss 6:36PM 0:00.02 login -pf JLPicard
JLPicard 701 0.0 0.1 27728 828 p1 S 6:36PM 0:00.03 -bash
security 714 0.0 0.7 335064 7372 ?? S 6:44PM 0:00.63 /System/Library/CoreServices/SecurityAge
admin 722 0.0 0.3 60520 3116 ?? S 6:44PM 0:00.50 /Library/PostgreSQL/8.3/bin/postgres -D
admin 723 0.0 0.3 41656 3168 ?? SNs 6:44PM 0:00.17 /System/Library/Frameworks/CoreServices.
admin 725 0.0 0.0 31848 324 ?? Ss 6:44PM 0:00.01 postgres: logger process
admin 727 0.0 0.1 60520 676 ?? Ss 6:44PM 0:00.03 postgres: writer process
admin 728 0.0 0.0 60520 500 ?? Ss 6:44PM 0:00.02 postgres: wal writer process
admin 729 0.0 0.1 60520 576 ?? Ss 6:44PM 0:00.01 postgres: autovacuum launcher process
admin 730 0.0 0.0 31848 372 ?? Ss 6:44PM 0:00.01 postgres: stats collector process
root 750 0.0 0.1 28776 1292 ?? Ss 6:46PM 0:00.03 /usr/sbin/lookupd
root 759 0.0 0.0 27316 436 p1 R+ 6:47PM 0:00.01 ps -aux
root 1 0.0 0.1 28356 532 ?? S<s 6:12PM 0:00.13 /sbin/launchd
root 28 0.0 0.0 27268 196 ?? Ss 6:12PM 0:00.00 /sbin/dynamic_pager -F /private/var/vm/s
root 32 0.0 0.1 28296 1128 ?? Ss 6:12PM 0:01.54 kextd

The machine is an Intel (Macbook mid 2007)

Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:Here it is ps -aux output:

admin 722 0.0 0.3 60520 3116 ?? S 6:44PM 0:00.50 /Library/PostgreSQL/8.3/bin/postgres -D
admin 723 0.0 0.3 41656 3168 ?? SNs 6:44PM 0:00.17 /System/Library/Frameworks/CoreServices.
admin 725 0.0 0.0 31848 324 ?? Ss 6:44PM 0:00.01 postgres: logger process
admin 727 0.0 0.1 60520 676 ?? Ss 6:44PM 0:00.03 postgres: writer process
admin 728 0.0 0.0 60520 500 ?? Ss 6:44PM 0:00.02 postgres: wal writer process
admin 729 0.0 0.1 60520 576 ?? Ss 6:44PM 0:00.01 postgres: autovacuum launcher process
admin 730 0.0 0.0 31848 372 ?? Ss 6:44PM 0:00.01 postgres: stats collector process

The machine is an Intel (Macbook mid 2007)


Well thats just bizarre - PostgreSQL is running as user 'admin' instead of user 'postgres' which is how the installer sets things up. What's in the file /Library/StartupItems/postgresql-8.3/postgresql-8.3 ?
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

There are two files: postgresql-8.3 (is a script) and StartupParameters.plist.

Content of the first (postgresql-8.3):

#!/bin/sh

. /etc/rc.common

# Postgres Plus Service script for OS/X

StartService ()
{
ConsoleMessage "Starting PostgreSQL 8.3"
su - postgres -c "/Library/PostgreSQL/8.3/bin/pg_ctl -w start -D \"/Library/PostgreSQL/8.3/data\" -l \"/Library/PostgreSQL/8.3/data/pg_log/startup.log\""

if [ -e "/Library/PostgreSQL/8.3/data/postmaster.pid" ]
then
ConsoleMessage "PostgreSQL 8.3 started successfully"
else
ConsoleMessage "PostgreSQL 8.3 did not start in a timely fashion, please see /Library/PostgreSQL/8.3/data/pg_log/startup.log for details"
fi
}

StopService()
{
ConsoleMessage "Stopping PostgreSQL 8.3"
su - postgres -c "/Library/PostgreSQL/8.3/bin/pg_ctl stop -m fast -w -D \"/Library/PostgreSQL/8.3/data\""
}


RestartService ()
{
StopService
sleep 2
StartService
}


RunService "$1"


Content of second (StartupParameters.plist):

{
Description = "PostgreSQL 8.3";
Provides = ("postgresql-8.3");
Requires = ("Resolver");
Preference = "Late";
Messages =
{
start = "Starting PostgreSQL 8.3";
stop = "Stopping PostgreSQL 8.3";
};
}
Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:
su - postgres -c "/Library/PostgreSQL/8.3/bin/pg_ctl -w start -D \"/Library/PostgreSQL/8.3/data\" -l \"/Library/PostgreSQL/8.3/data/pg_log/startup.log\""


So the important line here is this one above, which starts PostgreSQL under the postgres account. The leaves the question of why the server is starting under the postgres user account but ends up running under the admin account. Can you post the output from the following commands please?

sudo dscl . list /users UniqueID | egrep '(admin|postgres)'
egrep '(admin|postgres)' /etc/passwd

Thanks.
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

First command:

JLPicard@Mac-X:JLPicard> sudo dscl . list /users UniqueID | egrep '(admin|postgres)'
Password:
admin 502
postgres 502

second command doesn't reply me nothing:

JLPicard@Mac-X:JLPicard> egrep '(admin|postgres)' /etc/passwd
JLPicard@Mac-X:JLPicard>

Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:First command:

JLPicard@Mac-X:JLPicard> sudo dscl . list /users UniqueID | egrep '(admin|postgres)'
Password:
admin 502
postgres 502


Well that explains the confusion between the names - and quite possibly the problem in the installer. Was the admin user created at the same time as the installer was running? Or perhaps there was already a postgres user account on your system from some previous work?

We use some code like the following which should get a unique user ID - it lists all the user accounts and their ids, pulls out the IDs and then sorts them. We then add 1 to the result to generate our user ID.

dscl . list /users uid | awk -F: '{FS=" "; print $2f}' | sort -n | tail -1

What value does that command return?

Assuming the installer normally works OK (it has done for tens of thousands of other users), we can try the installation again. Please uninstall and remove the data directory as you have done previously. Then run

sudo dscl . delete /users/postgres

which should delete the postgres user account. The installer, when re-run, will then recreate the user account and should assign it a unique ID and hoopefully run to completion!!
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

Nothing, same errors

I did exactly what you said, but I had exactly the same problem.
There's a thing that I forgot to mention: I knew that installer create a user named postgres, so on every uninstall (after removing the /Library/PostgreSQL/ folder) I went in NetInfo and manually delete user postgres user.

User admin is the maintenance user that I mentioned previously, and was created manually after OS installation, so it was pre-existing when I install PostgreSQL the first time.

Command 'dscl . list /users uid | awk -F: '{FS=" "; print $2f}' | sort -n | tail -1' before the last uninstall returned 502. Now it returned the same


Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:Nothing, same errors

I did exactly what you said, but I had exactly the same problem.
There's a thing that I forgot to mention: I knew that installer create a user named postgres, so on every uninstall (after removing the /Library/PostgreSQL/ folder) I went in NetInfo and manually delete user postgres user.

User admin is the maintenance user that I mentioned previously, and was created manually after OS installation, so it was pre-existing when I install PostgreSQL the first time.

Command 'dscl . list /users uid | awk -F: '{FS=" "; print $2f}' | sort -n | tail -1' before the last uninstall returned 502. Now it returned the same



Now I'm even more puzzled. What if you uninstall, then manually create the postgres user (ensuring the ID is unique) before installing? The installer should detect and reuse the existing account.
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

That's it!! Smooth as velvet!!

Nevertheless, the question remains: why I had to create the postgres user manually? Why installer assign the same ID from another user? I did a standard install of Mac OS X, so installer had to work correctly.

One more (final) thing ( ): in order to bypass the start of the postgres server at system boot, it is sufficient to remove folder in /Library/StartupItems/PostgreSQL? Or there is other methods?
Dave_P

Senior member
[Avatar]

Joined: 26 Sep 2005 12:09:59
Messages: 146
Offline

Vincenzo_C wrote:That's it!! Smooth as velvet!!

Nevertheless, the question remains: why I had to create the postgres user manually? Why installer assign the same ID from another user? I did a standard install of Mac OS X, so installer had to work correctly.


Glad it's working.

The code that creates the user is:

NEWUID=`dscl . list /users uid | awk -F: '{FS=" "; print $2f}' | sort -n | tail -1`
NEWUID=`expr $NEWUID + 1`
dscl . create /users/$1 || _die $1
dscl . create /users/$1 name $1
dscl . create /users/$1 passwd "*"
dscl . create /users/$1 uid $NEWUID
dscl . create /users/$1 gid 1
dscl . create /users/$1 home $2
dscl . create /users/$1 shell /bin/bash
dscl . create /users/$1 realname "PostgreSQL"

Given that the fist line works as expected, I can only think that expr is doing something odd on your machine, so we're not adding one as we expect.

Vincenzo_C wrote:
One more (final) thing ( ): in order to bypass the start of the postgres server at system boot, it is sufficient to remove folder in /Library/StartupItems/PostgreSQL? Or there is other methods?


Yes, that'll work. It'll get put back when you upgrade, but you can just remove it again.
Vincenzo_C

Member

Joined: 10 Mar 2009 05:55:32
Messages: 15
Offline

Ok, thanks a lot for help. Hope that this discussion will be useful for other Mac users.

Have a good day
Ciao e grazie!
 
Forum Index » PostgreSQL Installers for Windows, Linux and OS X
Go to:   
Powered by JForum 2.1.8 © JForum Team