按照书本《PostgreSQL数据库内核分析》根据第一章讲解的linux下,编译 安装;不同的是libreadline5-dev版本没有了,就用新的版本代替;我的ubuntu 14 所以必须重新安装gcc-4.7版本,超过4.7版本编译会报错。
./configure
gmake
su
gmake install
adduserpostgres
mkdir /usr/local/pgsql/data
chownpostgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
这样就可以安装完成了,但是不能够用eclipse调试,因为按照书本附录A 用eclipse开发和调试postgresql 时候,Make Target时,总是报错:比如/bin/tar: sql-createdatabase.html:无法 open: 文件已存在。具体原因不是很清楚。
解决方法是,卸载原来在shell模式下编译安装的postgresql,方法就是直接删除postgresql安装的目录--pgsql这个文件夹(/usr/local/pgsql)。这样按照书本附录A就可以操作了。
我的配置代码:
./configure
--prefix=$HOME/pgsql --enable-depend --enable-cassert --enable-debug
尝试运行数据库
export PATH=$HOME/pgsql/bin:$PATH
export PGDATA=$HOME/pgsql/data
initdb
在P440,”Arguments”中输入”-D ~/pgsql/data”。
服务进程调试
“先输入psql进行登录,由于是本机,可以直接登录数据库。此时画面会停住”,不过我的画面没有停住,直接登录进去了。
在调试工具挂上postgre进程,回报错
Could not attach to process. If your uid matches the uid of the target process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
http://blog.csdn.net/fkdtzlzb/article/details/8783249有解决方法:
经过查阅有关资料发现,从ubuntu10.10开始,除非进程B是进程A的子进程,或者进程A为root运行,否则进程A不能调试进程B。这样一来增加了进程的安全。这个安全限制是默认的,但是可以通过修改配置文件来达到任意进程A可以调试进程B的目的。
1.可以通过下面的命令对这个限制进行临时修改,但是重启后限制依旧存在。
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
2.可以通过修改配置文件来接触限制
修改前:
kernel.yama.ptrace_scope = 1
修改后:
kernel.yama.ptrace_scope = 0
重启之后可以生效。