使用 Eclipse

来自 PostgreSQL wiki
跳转到导航跳转到搜索

使用 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 软件中心

03 Open SW Center.png

要安装 CVS,你应该转到应用程序右上角的放大镜,输入“cvs”。从结果中选择“并发版本系统”,然后点击“安装”按钮(如果 CVS 尚未安装)。

04 Install CVS.png

打开终端

通过应用程序 » 附件 » 终端,你可以打开一个新的终端
01 Open Terminal.png

安装 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

02 Download repository.png

使用 CVS 复制

使用 CVS(并发版本控制),你可以创建文件夹 pgrepo 的版本控制副本。

使用 CVS

在前面的终端中,如果你没有关闭它(否则请重复步骤1. 打开终端,并一直保持打开状态,直到安装完成),你可以使用以下命令进行复制

    mkdir project
    cd project
    cvs co pgsql

警告:在 pgrepo 之上的层级中执行这些命令,例如,在我们的示例中的主目录中执行!

05 checkout project.png

你可以在 使用 CVS 中找到有关设置你自己的存储库的更多详细信息。

配置源代码

使用 Software-Center 安装组件

你需要以下软件,你可以通过 Software Center(应用程序 » Ubuntu 软件中心)下载它们

libreadline5-dev (对于 ubuntu 14.04,软件版本为 libreadline6-dev)
06 Download readline.png

zlib1g-dev
07 Dowload zlib.png

bison (YACC)
08 Dowload bison.png

flex
09 Download flex.png

你只需在搜索区域中输入软件的名称并安装它们。以下是所需软件的列表
1. libreadline5-dev,2. zlib1g-dev,3. bison (YACC),4. flex

在终端中配置

切换回终端并执行以下命令

    cd pgsql
    ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug

10 Configure.png

下载 Eclipse

为 Eclipse 安装 JDK

为了以有组织的方式查看 PostgreSQL 源代码,我们将在计算机上安装 Eclipse。
(备注:你也可以使用其他任何开发工具,但本手册介绍了使用 Eclipse 的方法)。

首先,你需要为 Eclipse 安装“OpenJDK Java 6 运行时”,你也可以在 Software-Center 中下载它。
启动软件中心 (应用程序 » Ubuntu 软件中心) 或切换到已打开的窗口并搜索 java。选择“OpenJDK Java 6 运行时”,然后点击“安装”

11 Download JDK.png

下载 Eclipse

你可以从以下链接下载 Eclipse:http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/heliosr

选择支持C/C++Helios 版本非常重要。在你的文件浏览器中打开包含 tar 文件的文件夹。在本例中:ubuntu » Downloads

12 Downloaded eclispe.png

解压并启动

右键点击软件包,从菜单中选择“在此处解压”

13 Extract eclipse.png

现在进入解压后的文件夹,双击“eclipse”文件。

14 Launch eclispe.png


设置工作区

你应该设置一个工作区,软件将在此处存储你的项目

启动程序后,系统将提示你选择工作区的文件夹。我们将选择推荐的路径,但如果你浏览其他文件夹,可以更改它。选择完文件夹后,点击“确定”

15 Worspace.png

程序

现在你看到了 Eclipse 的欢迎页面,如果你不熟悉 Eclipse,可以在此处选择教程。要继续本手册,请点击右侧的箭头以打开你的工作台(程序的默认布局)。

16 Workbech.png

我们将在该工作台导入 PostgreSQL 代码。

17 Layout.png

导入

在此步骤中,我们将导入项目。在程序左上角选择“文件 » 导入”

18 Import.png

在新窗口中,选择“C/C++ » 将现有代码作为 Makefile 项目”,然后点击“下一步”按钮

19 Makefileproject.png

在下一个窗口中,点击浏览,选择pgsql 文件夹。“语言”“C”“索引器设置的工具链”选择“Linux GCC”。最后,点击“完成”

20 Import finish.png

“Make” 将自动启动(这可能需要几分钟)。如果所有组件都能正常工作,你的控制台应该会显示以下消息
“PostgreSQL 全部成功生成,已准备好安装”
此外,你可以在工作台左侧的项目资源管理器视图中看到项目“pgsql”

21 Make.png

添加 make 目标

打开 Make 目标视图

如果你找不到此视图,只需点击左下角的按钮添加它。

35 Add view.png

22 Make target.png

添加目标

Make-Target-view 中,右键点击项目名称,选择“新建”。在新窗口“创建 Make 目标”中,在“目标名称:”处输入“install”,然后点击“确定”

23 Make install.png

如果操作成功,在Make-Target-view 的列表末尾将出现一个带有“install”标签的绿色点。双击它,就可以启动 PostgreSQL 的安装。

24 Launch install.png

如果安装成功,你在控制台中可以看到
“PostgreSQL 安装完成”。

25 Installed.png

在终端中启动 initdb

切换回终端并更改为路径“ubuntu/project/pgsql”。在启动 initdb 之前,你应该设置一些环境变量。

     export PATH=$HOME/project/bin:$PATH
     export PGDATA=DemoDir
     initdb

26 initdb.png

在 Eclipse 中运行配置

切换回 Eclipse。

选择项目资源管理器视图。如果你看不到它,请使用左下角的按钮添加它。

在项目资源管理器视图中,右键点击项目名称 (pgsql),选择“以运行方式执行 » 运行配置”。

27 Run as.png

在此窗口中,你可以添加配置

28 new launch configuration.png

双击“C/C++ 应用程序”,这样就会创建一个名为“pgsql-Default” 的子文件夹。现在填写右侧的表单。在“C/C++ 应用程序:”处输入路径:“src/backend/postgres”,项目应该为:“pgsql”

29 main.png

切换到“参数”选项卡。在“程序参数”中,输入参数“-D DemoDir”,然后点击“应用”按钮。点击“运行”以启动程序。

30 arguments.png

你应该在控制台中看到以下日志
日志:数据库系统已在 (当前日期和时间) UTC 关闭
日志:数据库系统已准备好接受连接
日志:自动真空启动程序已启动
31 DB feedback.png

这意味着安装成功,服务器正在运行!

添加包含文件

查看源代码文件时,你会看到编译器错误,提示未找到包含文件。要解决此问题,你需要将包含目录添加到属性中。从菜单中,选择“项目/属性/ C/C++ 常规/ 路径和符号/ 包含”。添加一个包含目录。点击“工作区”。选择 <项目>/src/include 并按回车键。允许重建索引。

从 Eclipse 调试 PostgreSQL

  1. 确保你的机器上安装了 gdb
  2. 在项目资源管理器窗口中右键点击项目,选择“以调试方式执行 -> C/C++ 应用程序”
    Debug in Eclipse
  3. 选择“postgres”作为要执行的二进制文件
    Debug in Eclipse
  4. 如果你的环境变量中没有设置 PGDATA,你可以在运行/调试配置中调整命令行参数,以便 PostgreSQL 能够正常启动。
    Debug in Eclipse


提示:你可以执行 'make install',并将你的参数指向安装目录。

调试子进程

当你使用项目默认设置开始调试进程时,它只能调试 postmaster 进程。当客户端连接到数据库时,postmaster 进程会派生子进程,每个子进程实际上都是负责响应客户端的 postgres 后端进程。你可能希望 gdb 能够访问派生的进程。以下是如何设置它:

  1. 调试透视图 => 运行 => 调试配置
  2. 在菜单的左侧,你可以看到“C/C++ 连接到应用程序”。
  3. 右键单击“C/C++ 连接到应用程序”并创建新的调试配置。
  4. 将“项目”和“构建配置”设置为“使用活动”,将“C/C++ 应用程序”设置为“postgres”可执行文件路径。
  5. 在终端中启动 postmaster 和一个 postgresql 客户端实例(用于创建一个新的 postgres)。
  6. 点击“调试”,将显示当前进程列表。
  7. 选择你要调试的派生“postgres”进程。
  8. 在你的函数中设置断点。

注意:如果在以普通用户身份登录时连接到进程失败,可能是因为 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”。

32 List DBs.png

你可以使用以下命令登录到你的数据库:

   psql DemoDB

33 enter DB.png

现在你可以创建表、关系等等。你可以完全访问你的数据库。要退出你的数据库,键入:

  /q

终止程序

服务器在您点击 Eclipse 控制台中的红色矩形之前一直可用。
如果停止成功,您将在控制台中看到以下日志:
LOG: received smart shutdown request

34 DB terminate.png