Проблема с запуском PostgreSQL на Arch Linux через systemctl. Job for postgresql.service failed because the control process exited with error code
Решил я значит поставить PostgreSQL на Arch Linux. Решил воспользоваться данным мануалом.
- Обновил пакеты командой
sudo pacman -Syyu - Установил postgresql командой
sudo pacman -S postgresql
Тут пока всё нормально. Следующим этапом автор мануала предлагает мне ввести команду sudo -u postgres –i initdb -D '/var/lib/postgres/data'. И мне выдало ошибку:
sudo: –i: command not found
Данная проблема не давала мне возможность успешно запустить postgresql.service командой sudo systemctl start postgresql.service и кидала ошибку
Job for postgresql.service failed because the control process exited with error code.
See "systemctl status postgresql.service" and "journalctl -xeu postgresql.service" for details.
Ответы (2 шт):
Чтобы решить данную проблему, мне предложили ввести команду systemctl status postgresql.service ввывод которой показан ниже
× postgresql.service - PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Thu 2022-07-21 13:20:02 MSK; 20s ago
Process: 3945 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGROOT}/data (code=exited, status=1/FAILURE)
CPU: 41ms
Jul 21 13:20:02 noxethome systemd[1]: Starting PostgreSQL database server...
Jul 21 13:20:02 noxethome postgres[3945]: "/var/lib/postgres/data" is missing or empty. Use a command like
Jul 21 13:20:02 noxethome postgres[3945]: su - postgres -c "initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'"
Jul 21 13:20:02 noxethome postgres[3945]: with relevant options, to initialize the database cluster.
Jul 21 13:20:02 noxethome systemd[1]: postgresql.service: Control process exited, code=exited, status=1/FAILURE
Jul 21 13:20:02 noxethome systemd[1]: postgresql.service: Failed with result 'exit-code'.
Jul 21 13:20:02 noxethome systemd[1]: Failed to start PostgreSQL database server.
И я воспользовался командой su - postgres -c "initdb --locale en_US.UTF-8 -D '/var/lib/postgres/data'" которую можно найти на 9 строке вывода от systemctl status postgresql.service
После этого запуск postgresql.service не составил труда.
sudo -u postgres –i initdb
Обратите внимание, что символ - и символ – - это разные символы. А должен быть один и тот же -. Осторожнее при копировании. Юникод нам дал множество новых символов, выглядящих похожими, но разных с точки зрения машины.