使用 Eclipse
使用 Eclipse 进行开发
本页介绍了如果你想使用 Eclipse 开发 PostgreSQL 的快速入门方法。
本手册中使用的软件
操作系统:Ubuntu 8.4
编辑器:Eclipse Helios
版本控制:CVS
本手册已在 Ubuntu Live 版本上测试,以确保没有已安装的必要软件。
!!重要:需要互联网连接
(备注:如果你还没有安装 Ubuntu,我们建议使用以下链接:http://www.ubuntu.com/desktop/get-ubuntu/download )
安装版本控制软件
获取 PostgreSQL 源代码的首选方法是使用 git 版本控制软件。本教程还将介绍如何使用较旧的 cvs 程序。你只需要一个程序,git 或 cvs,不需要两者。
安装 git
启动 Ubuntu 软件中心
应用程序 » Ubuntu 软件中心
要安装 git,你应该转到应用程序右上角的放大镜,输入“git”。从结果中选择“快速、可扩展、分布式版本控制”,然后点击“安装”按钮(如果 git 尚未安装)。
安装 CVS
启动 Ubuntu 软件中心
应用程序 » Ubuntu 软件中心
要安装 CVS,你应该转到应用程序右上角的放大镜,输入“cvs”。从结果中选择“并发版本系统”,然后点击“安装”按钮(如果 CVS 尚未安装)。
打开终端
安装 PostgreSQL 源代码 =
现在你可以下载最新版本的源代码,以便在你的计算机上本地编辑它。同样,你需要遵循 cvs 或 git 指令集之一,但不能同时遵循两者。
使用 git 下载
在前面的终端中,如果你没有关闭它(否则请重复步骤1. 打开终端,并一直保持打开状态,直到安装完成),你可以使用以下命令进行复制
mkdir project cd project git clone git://git.postgresql.org/git/postgresql.git mv postgresql pgsql
你可以在 使用 git 中找到有关设置你自己的存储库的更多详细信息。这里克隆的目录被重命名为“pgsql”,以匹配下面的 cvs 示例。你也可以保留为 postgresql,只需修改下面的其他示例以使用该名称。
下载 PostgreSQL 源代码 - CVS
在我们的示例中,CVSROOT 为pgrepo(你也可以选择其他名称),它位于主目录下
mkdir 命令会创建一个新文件夹 (pgrepo),并创建一个链接到该文件夹的新环境变量
mkdir pgrepo export CVSROOT=$HOME/pgrepo
下一个命令使用rsync 下载源代码。这可能需要几分钟
rsync --progress -avzCH --delete anoncvs.postgresql.org::pgsql-cvs $CVSROOT
使用 CVS 复制
使用 CVS(并发版本控制),你可以创建文件夹 pgrepo 的版本控制副本。
使用 CVS
在前面的终端中,如果你没有关闭它(否则请重复步骤1. 打开终端,并一直保持打开状态,直到安装完成),你可以使用以下命令进行复制
mkdir project cd project cvs co pgsql
警告:在 pgrepo 之上的层级中执行这些命令,例如,在我们的示例中的主目录中执行!
你可以在 使用 CVS 中找到有关设置你自己的存储库的更多详细信息。
配置源代码
使用 Software-Center 安装组件
你需要以下软件,你可以通过 Software Center(应用程序 » Ubuntu 软件中心)下载它们
libreadline5-dev (对于 ubuntu 14.04,软件版本为 libreadline6-dev)
zlib1g-dev
bison (YACC)
flex
你只需在搜索区域中输入软件的名称并安装它们。以下是所需软件的列表
1. libreadline5-dev,2. zlib1g-dev,3. bison (YACC),4. flex
在终端中配置
切换回终端并执行以下命令
cd pgsql ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug
下载 Eclipse
为 Eclipse 安装 JDK
为了以有组织的方式查看 PostgreSQL 源代码,我们将在计算机上安装 Eclipse。
(备注:你也可以使用其他任何开发工具,但本手册介绍了使用 Eclipse 的方法)。
首先,你需要为 Eclipse 安装“OpenJDK Java 6 运行时”,你也可以在 Software-Center 中下载它。
启动软件中心 (应用程序 » Ubuntu 软件中心) 或切换到已打开的窗口并搜索 java。选择“OpenJDK Java 6 运行时”,然后点击“安装”。
下载 Eclipse
你可以从以下链接下载 Eclipse:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr
选择支持C/C++的Helios 版本非常重要。在你的文件浏览器中打开包含 tar 文件的文件夹。在本例中:ubuntu » Downloads。
解压并启动
右键点击软件包,从菜单中选择“在此处解压”。
设置工作区
你应该设置一个工作区,软件将在此处存储你的项目
启动程序后,系统将提示你选择工作区的文件夹。我们将选择推荐的路径,但如果你浏览其他文件夹,可以更改它。选择完文件夹后,点击“确定”。
程序
现在你看到了 Eclipse 的欢迎页面,如果你不熟悉 Eclipse,可以在此处选择教程。要继续本手册,请点击右侧的箭头以打开你的工作台(程序的默认布局)。
导入
在此步骤中,我们将导入项目。在程序左上角选择“文件 » 导入”
在新窗口中,选择“C/C++ » 将现有代码作为 Makefile 项目”,然后点击“下一步”按钮
在下一个窗口中,点击浏览,选择pgsql 文件夹。“语言”为“C”,“索引器设置的工具链”选择“Linux GCC”。最后,点击“完成”。
“Make” 将自动启动(这可能需要几分钟)。如果所有组件都能正常工作,你的控制台应该会显示以下消息
“PostgreSQL 全部成功生成,已准备好安装”
此外,你可以在工作台左侧的项目资源管理器视图中看到项目“pgsql”。
添加 make 目标
打开 Make 目标视图
如果你找不到此视图,只需点击左下角的按钮添加它。
添加目标
在Make-Target-view 中,右键点击项目名称,选择“新建”。在新窗口“创建 Make 目标”中,在“目标名称:”处输入“install”,然后点击“确定”。
如果操作成功,在Make-Target-view 的列表末尾将出现一个带有“install”标签的绿色点。双击它,就可以启动 PostgreSQL 的安装。
如果安装成功,你在控制台中可以看到
“PostgreSQL 安装完成”。
在终端中启动 initdb
切换回终端并更改为路径“ubuntu/project/pgsql”。在启动 initdb 之前,你应该设置一些环境变量。
export PATH=$HOME/project/bin:$PATH export PGDATA=DemoDir initdb
在 Eclipse 中运行配置
切换回 Eclipse。
选择项目资源管理器视图。如果你看不到它,请使用左下角的按钮添加它。
在项目资源管理器视图中,右键点击项目名称 (pgsql),选择“以运行方式执行 » 运行配置”。
双击“C/C++ 应用程序”,这样就会创建一个名为“pgsql-Default” 的子文件夹。现在填写右侧的表单。在“C/C++ 应用程序:”处输入路径:“src/backend/postgres”,项目应该为:“pgsql”。
切换到“参数”选项卡。在“程序参数”中,输入参数“-D DemoDir”,然后点击“应用”按钮。点击“运行”以启动程序。
你应该在控制台中看到以下日志
日志:数据库系统已在 (当前日期和时间) UTC 关闭
日志:数据库系统已准备好接受连接
日志:自动真空启动程序已启动
这意味着安装成功,服务器正在运行!
添加包含文件
查看源代码文件时,你会看到编译器错误,提示未找到包含文件。要解决此问题,你需要将包含目录添加到属性中。从菜单中,选择“项目/属性/ C/C++ 常规/ 路径和符号/ 包含”。添加一个包含目录。点击“工作区”。选择 <项目>/src/include 并按回车键。允许重建索引。
从 Eclipse 调试 PostgreSQL
- 确保你的机器上安装了 gdb
- 在项目资源管理器窗口中右键点击项目,选择“以调试方式执行 -> C/C++ 应用程序”
- 选择“postgres”作为要执行的二进制文件
- 如果你的环境变量中没有设置 PGDATA,你可以在运行/调试配置中调整命令行参数,以便 PostgreSQL 能够正常启动。
提示:你可以执行 'make install',并将你的参数指向安装目录。
调试子进程
当你使用项目默认设置开始调试进程时,它只能调试 postmaster 进程。当客户端连接到数据库时,postmaster 进程会派生子进程,每个子进程实际上都是负责响应客户端的 postgres 后端进程。你可能希望 gdb 能够访问派生的进程。以下是如何设置它:
- 调试透视图 => 运行 => 调试配置
- 在菜单的左侧,你可以看到“C/C++ 连接到应用程序”。
- 右键单击“C/C++ 连接到应用程序”并创建新的调试配置。
- 将“项目”和“构建配置”设置为“使用活动”,将“C/C++ 应用程序”设置为“postgres”可执行文件路径。
- 在终端中启动 postmaster 和一个 postgresql 客户端实例(用于创建一个新的 postgres)。
- 点击“调试”,将显示当前进程列表。
- 选择你要调试的派生“postgres”进程。
- 在你的函数中设置断点。
注意:如果在以普通用户身份登录时连接到进程失败,可能是因为 Maverick Meerkat (10.10) Ubuntu 引入了不允许非 root 用户跟踪非子进程的补丁 - 也就是说,只有作为另一个进程的父进程的进程才能跟踪它 - 而 root 用户仍然可以跟踪所有进程。因此,你仍然可以使用 sudo 来通过 gdb 连接。
你可以通过执行以下操作来临时禁用此限制(并恢复到允许用户跟踪(gdb)其其他进程的旧行为):
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
要永久允许它,编辑 /etc/sysctl.d/10-ptrace.conf 并更改以下行:
kernel.yama.ptrace_scope = 1
为
kernel.yama.ptrace_scope = 0
创建和打开数据库
为了查看安装是否完全正常工作,你可以执行以下操作来测试数据库。
切换到终端,并更改到路径“ubuntu/project/pgsql”。执行命令:
psql -l
这将列出所有可用的数据库。
要创建你自己的数据库,只需键入以下内容:
createdb DemoDB
如果你再次执行列出数据库命令(psql -l),你就可以看到你的数据库“DemoDB”。
psql DemoDB
现在你可以创建表、关系等等。你可以完全访问你的数据库。要退出你的数据库,键入:
/q
终止程序
服务器在您点击 Eclipse 控制台中的红色矩形之前一直可用。
如果停止成功,您将在控制台中看到以下日志:
LOG: received smart shutdown request