Hi everyone!
I was installing the postgresql package and received the following error
(1/2) Creating system user accounts...
(2/2) Creating temporary files...
chown: invalid user: ‘postgres’
chgrp: invalid group: ‘postgres’
chattr: Operation not supported while setting flags on /var/lib/postgres/data
error: command failed to execute correctly
Looking into it I think the sysusers hook failed to correctly create a postgres user. I tried to use the sysusers utility on the created file /usr/lib/sysusers.d/postgresql.conf but this didn't create the user either. I was wondering if there was a known but in opensysusers.
Here is what that file (postgresql.conf) looks like
u postgres - "PostgreSQL user" /var/lib/postgres /bin/bash
Thanks!!
Something is strange here. I double checked on my machine and the user/group was created normally with no issues. Make sure the "postgres" user/group doesn't already exist on your system. If it does, try deleting it (userdel postgres) and then reinstalling postgresql. The chattr error is normal and expected. IIRC, it sets flags for certain filesystems (like btrfs) and will fail on ext4 but is a harmless error.
I checked and reran the userdel just to make sure it was cleared. It still fails with the same messages. Is there any extra information that I could provide that would help?
that
please read https://wiki.archlinux.org/index.php/PostgreSQL you need initialize db and configuration .
1 . sudo -iu postgres
2. initdb -D /var/lib/postgres/data
3. sudo rc-service postgresql start
fresh installed, tested, works
EDIT: in case if you can not use "sudo -iu postgres" (me happens this error: 'this account is not avaible' ) run "sudo chsh -s /bin/bash postgres" instead
chown: invalid user: ‘postgres’ and chgrp: invalid group: ‘postgres’ can happens, if you has installed another postgresql database before in /var/lib/postgres/data.
/var/lib/postgres/data must be empty
it's your fresh installation of postgresql?
I tried this. I get the error
sudo: unknown user: postgres
sudo: unable to initialize policy plugin
With the first command (with -iu), and with the second command I get
chsh: user "postgres" does not exist.
I checked that this was empty and it was. I have not installed postgresql before
very strange error, because i installed today a fresh installation and all works :-\
try "sudo -u myusername psql postgres"
[picasso etc]# cat gshadow | grep postgr
postgres:!::
[picasso etc]# cat shadow | grep postgr
postgres:!:18242::::::
[picasso etc]# cat group | grep postgr
postgres:x:987:alois
you can uninstall postgresql postgresql-libs postgresql-openrc, delete /var/lib/postgresql, and try install it again.
The first command fails because a server is not running (I believe to start the server you need the postgres user)
The three commands following return nothing (meaning of course that there is no such user). And an uninstall + delete /var/lib/postgresql does not work upon reinstall.
Also I'm using runit if that helps at all
can you copy the output of terminal at reinstallation? and after if you try initialization?
I use openrc, but installation and initialization should be same
Here's the output
[I] [faye@acerpred ~] yay -S postgresql postgresql-runit 17:33:29
resolving dependencies...
looking for conflicting packages...
Packages (3) postgresql-libs-12.2-3 postgresql-12.2-3 postgresql-runit-20180605-1
Total Installed Size: 57.59 MiB
:: Proceed with installation? [Y/n] y
(3/3) checking keys in keyring [----------------------------] 100%
(3/3) checking package integrity [----------------------------] 100%
(3/3) loading package files [----------------------------] 100%
(3/3) checking for file conflicts [----------------------------] 100%
(3/3) checking available disk space [----------------------------] 100%
:: Processing package changes...
(1/3) installing postgresql-libs [----------------------------] 100%
(2/3) installing postgresql [----------------------------] 100%
Optional dependencies for postgresql
python2: for PL/Python 2 support [installed]
python: for PL/Python 3 support [installed]
perl: for PL/Perl support [installed]
tcl: for PL/Tcl support
postgresql-old-upgrade: upgrade from previous major version using pg_upgrade
(3/3) installing postgresql-runit [----------------------------] 100%
:: Running post-transaction hooks...
(1/2) Creating system user accounts...
(2/2) Creating temporary files...
chown: invalid user: ‘postgres’
chgrp: invalid group: ‘postgres’
chattr: Operation not supported while setting flags on /var/lib/postgres/data
error: command failed to execute correctly
[I] [faye@acerpred ~] su -l postgres 17:33:36
su: user postgres does not exist or the user entry does not contain all the required fields
[I] [faye@acerpred ~] initdb -D /var/lib/postgres/data 17:34:33
The files belonging to this database system will be owned by user "faye".
This user must also own the server process.
The database cluster will be initialized with locales
COLLATE: C
CTYPE: en_US.UTF-8
MESSAGES: en_US.UTF-8
MONETARY: en_US.UTF-8
NUMERIC: en_US.UTF-8
TIME: en_US.UTF-8
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".
Data page checksums are disabled.
initdb: error: could not access directory "/var/lib/postgres/data": Permission denied
I tried to use su -l to login as the postgres user, but no such user was found
try create user and group manually:
groupadd -g 987 -o -r postgres (note: 987 is my number, your free number you found in /etc/group)
useradd -M -g postgres -o -r -d /var/lib/postgres -s /bin/bash -c "PostgreSQL user" -u 987 postgres
This works but it's definitely not what should happen. does anyone know a fix as to why opensysusers would not create a user when it should?
We don't know why you happens this errors, it's relatively rare. On another two computer where we tested it, run all without problems.
Also we think, you has some wrong set in your computer. But no idea what exactly...
I can confirm, that on my computer works opensysuser and installation of postgresql without problems.