Wiki » History » Version 3
Ivan Lezhnjov, 10/28/2016 08:05 AM
1 | 1 | Ivan Lezhnjov | h1. postgresql-snap |
---|---|---|---|
2 | |||
3 | This is a collection of "snapcraft recipes":https://github.com/commandprompt/postgresql-snap for PostgreSQL 9.3, 9.4, 9.5 and 9.6 that can be used to create PostgreSQL snap packages. |
||
4 | |||
5 | The packages are maintained as a service to the community by Command Prompt, Inc. A PostgreSQL and Linux Professional services company. You can find Command Prompt on the web at https://commandprompt.com |
||
6 | |||
7 | h1. Get binaries |
||
8 | |||
9 | If you don't want to build the binaries but instead just want to install the packages, run this command: |
||
10 | |||
11 | <pre> |
||
12 | 3 | Ivan Lezhnjov | $ sudo snap install postgresql$ver |
13 | 1 | Ivan Lezhnjov | </pre> |
14 | |||
15 | 3 | Ivan Lezhnjov | Where $ver is one of 93, 94, 95 or 96. |
16 | 1 | Ivan Lezhnjov | |
17 | h1. Build |
||
18 | |||
19 | Simply run @snapcraft@ inside any of the postgresql9*/ directories. |
||
20 | |||
21 | h1. Install |
||
22 | |||
23 | If you want to install a local snap package run this command: |
||
24 | |||
25 | <pre> |
||
26 | $ sudo snap install --force-dangerous postgresql96_9.6.0_amd64.snap |
||
27 | </pre> |
||
28 | |||
29 | To install from Ubuntu Store simply run: |
||
30 | |||
31 | <pre> |
||
32 | $ sudo snap install postgresql96 |
||
33 | </pre> |
||
34 | |||
35 | h1. postgres User |
||
36 | |||
37 | Traditionally, you would run PostgreSQL as an unprivileged @postgres@ user. This user has to be created manually. |
||
38 | |||
39 | <pre> |
||
40 | $ adduser postgres |
||
41 | </pre> |
||
42 | |||
43 | Beware, that if you already have PostgreSQL installed on your system through an APT/PPA repository, the postgres system account most likely already exists. You must use a different system account in that case. For example, pgsql or postgsql. It can be an arbitrary name: admin, joe, malcolm, etc. |
||
44 | |||
45 | Do not use an existing postgres system account that was created during PostgreSQL installation from standard Ubuntu, PGDG or custom PPA repositories. If you want to run both snap package and traditional deb version of PostgreSQL, create a new account. |
||
46 | |||
47 | h1. Cluster Initialization |
||
48 | |||
49 | As postgres user run |
||
50 | |||
51 | <pre> |
||
52 | $ postgresql96.initialize initdb |
||
53 | </pre> |
||
54 | |||
55 | This will set up your environment, call initdb and create a default cluster. |
||
56 | |||
57 | To start PostgreSQL server run: |
||
58 | |||
59 | <pre> |
||
60 | $ postgresql96.pgctl -D /home/postgres/snap/postgresql96/x1/data -l /home/admin/snap/postgresql96/x1/logs/logfile start |
||
61 | </pre> |
||
62 | |||
63 | Similarly, you can use pg_ctl to run usual commands: stop, restart, status, etc. |
||
64 | |||
65 | <pre> |
||
66 | $ postgresql96.pgctl -D /home/postgres/snap/postgresql96/x1/data -l /home/admin/snap/postgresql96/x1/logs/logfile stop |
||
67 | </pre> |
||
68 | |||
69 | <pre> |
||
70 | $ postgresql96.pgctl -D /home/postgres/snap/postgresql96/x1/data -l /home/admin/snap/postgresql96/x1/logs/logfile restart |
||
71 | </pre> |
||
72 | |||
73 | <pre> |
||
74 | $ postgresql96.pgctl -D /home/postgres/snap/postgresql96/x1/data -l /home/admin/snap/postgresql96/x1/logs/logfile status |
||
75 | </pre> |
||
76 | |||
77 | h1. Connect To PostgreSQL |
||
78 | |||
79 | <pre> |
||
80 | $ postgresql96.psql -h 127.0.0.1 -d postgres |
||
81 | </pre> |
||
82 | |||
83 | h1. Known Problems and Limitations |
||
84 | |||
85 | Snap format imposes a number of non-critical and more serious limitations: |
||
86 | |||
87 | * Only one locale is currently supported – en_US.UTF-8. |
||
88 | * There is no systemd service file for postgres daemon. PostgreSQL has to be managed manually by using pg_ctl. |
||
89 | * pg_ctl is run via a BASH wrapper to make it aware of a default system locale (en_US.UTF-8). |
||
90 | * psql is also run via a BASH wrapper to let it successfully write to HISTFILE (.psql_history) |
||
91 | * Kerberos, GSSAPI and Bonjour support is disabled. |
||
92 | * contrib modules are not included. These do not build due to snapcraft's make plugin inability to handle an included via a relative path Makefile inside another Makefile. |
||
93 | |||
94 | We intend to eliminate as many of these limitations as possible in future versions of these snapcraft recipes. Most of them are a result of various design decisions made by snapcraft developers that don't work well with how PostgreSQL build process works. However, snapcraft is a young, rapidly developing project and things may change sooner rather than later. |