GNURoot Debian v0.6.7_armhf 上的 postgresql 9.4 安装

GNURoot Debian v0.6.7_armhf 上的 postgresql 9.4 安装

postgresql 9.4 安装GNURoot Debianv0.6.7_armhf

#service postgresql start
[warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).

尝试解决使用dpkg-reconfigure locales和选择语言环境以及之后

#pg_createcluster 9.4 main --start
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------A-----e-C
FATAL:  could not create shared memory segment: Function not implemented
DETAIL:  Failed system call was shmget(key=1, size=40, 03600).
child process exited with exit code 1
initdb: removing contents of data directory "/var/lib/postgresql/9.4/main"
Error: initdb failed

在尝试创建用户时,我也尝试更改 postgresql 端口号,并使用不同的端口号输出相同的输出。

#createuser user -P -S -R -D
Enter password for new role:
Enter it again:
createuser: could not connect to database postgres: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

netstat 输出

#netstat -plunt
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State          PID/Program name
tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN         28433/sshd
tcp6       0      0 :::2222                 :::*                    LISTEN         28433/sshd
tcp6       0      0 127.0.0.1:42110         :::*                    LISTEN              -
udp6       0      0 :::546                  :::*                                        -

答案1

Android 有意不支持 SysV 共享内存shmem或 POSIX /dev/shm,而是创建了/dev/ashmem关联)。但是Postgresql需要SysV共享内存才能工作。

这个 github 项目可能是一个解决方案: https://github.com/pelya/android-shmem

该库支持在 Android 中跨独立进程无缝使用 shmget()、shmat() 和 shmdt() API 的共享内存。

阅读发行说明以了解如何使用该软件包。虽然它已经是两年前了,但仍然已报告为工作

如果发布说明还不够的话,我还发现了 这个建议

安装(在 chroot 环境中):

cp libandroid-shmem-gnueabihf.so /lib/libandroid-shmem-gnueabihf.so

要启动程序:

env LD_PRELOAD="/lib/libandroid-shmem-gnueabihf.so" program %u

相关内容