当前位置: 首页 > Linux, postgresql > 正文

edb-installers 使用小记

1. 简介

This is the build framework for the EnterpriseDB OneClick installers for PostgreSQL and various StackBuilder components.

如上,edb-installers 是 EnterpriseDB 的一键式安装包编译框架,作者 Dave Page。用来自动化 EnterpriseDB 各种组件的编译和安装工作。

2. 拿到框架

    git clone git://git.postgresql.org/git/edb-installers.git

3. 框架原理

在源码的主目录中有一个 README 文件,其中主要介绍了框架的来历、作用、原理、使用方法等等一大堆东西,如果有兴趣,推荐研究一下。

框架的核心原理如下图所示:

builder

作者设计了一种巧妙地编译框架:

1. 在 HOST 上放置一大堆虚拟机(各种操作系统平台)

2. 虚拟机和 HOST 机器共享编译的目录(磁盘)

这样,只需要利用虚拟机的 CPU 和 内存、以及其操作系统平台,而不需要占用任何磁盘空间,即可完成整套组件的编译工作

值得注意的是,Dave Page 在这里使用的 HOST 为 Mac OS X Tiger (We use OS X because it allows us to run all other Intel based OS’s on the same machine.)

4. 实践

这里记录一下本人的操作过程,由于时间压力,本次只做了 linux-64 的编译工作。

首先,Mac 这种奢侈品我是真心没有,也没有耐心安装虚拟机,就找别人借了一台 RHEL61-x64 的机器。

HOST 我使用的自己的工作机器: Ubuntu 10.04 (看操作系统就知道老古董了)

4.1 安装 BitRock InstallBuilder

由于框架中所有的程序都是使用 InstallBuilder 进行打包,所以这里首先安装 BitRock InstallBuilder

去 http://installbuilder.bitrock.com/download.html 填一些信息,下载一个试用的版本

安装过程就不写了,绝对的一路【下一步】

4.2 编译机器配置

1. 编译机器(RHEL6)建立和 HOST 机器一样的用户,最主要的是 UID 一致(来避免 NFS 中文件权限的问题,当然,聪明的你可以使用其他方式来处理)

2. ssh公钥交换,即在HOST上可以无密码的登录编译机器

3. HOST 架设 nfs,将edb-installers的目录写入 exports 文件(具体操作请 google)

4. 编译机器上挂载 edb-installers 到 /mnt/hgfs/pginstaller-repo(请建立对应目录)

5. 修改 settings.sh 中 PG_SSH_LINUX_X64 PG_PATH_LINUX_X64 PG_PGHOME_LINUX_X64 等为对应的值

6. 在编译机器上安装 jdk、ant等,修改 settings.sh 中对应的设置

7. 其他依赖的软件太多,就不写了。在编译过程中缺啥就 yum install 啥好了

4.3 server 编译

server 是最基本的组件了,好多其他组件(PostGIS、pgAgent等等)依赖 server,所以,需要先编译 server

4.3.1 下载源码包,放到 tarballs 文件夹(如果没有的话,就自己mkdir一个)

需要下载的源码包 有 postgresql、stackbuilder 、pljava、pldebugger、pgadmin3 等(具体下载地址请google)

4.3.2 修改 version.sh 文件中关于以上下载的源码包的版本信息

4.3.3 修改 settings.sh 文件,关闭其他平台、其他组件的编译开关(从1改为0即可)

4.3.4 运行 build.sh

4.4 其他组件的编译

ApachePhp、pgAgent、pgbouncer、pgmemcache、phpPgAdmin、PostGIS、psqlODBC、Slony 等编译和 server类似:

下载对应源码包

1. 修改version.sh版本信息

2. 修改settings.sh中对应的编译开关

3. 运行 build.sh

Npgsql 和 JDBC 的打包比较简单,其中省略了编译的步骤,直接下载已经编译好的包放在 tarballs 目录,运行 build.sh 打包即可

5. 遇到的坑

5.1 wxGTK 安装

pgadmin3 依赖于 wxWigets ,需要安装 wxGTK ,怎样下载就不说了,记录一下configure参数

–with-gtk –enable-gtk2 –enable-unicode –enable-shared=no –enable-unicode=yes

5.2 libevent 安装

opgbouncer 依赖 libevent, configure 参数: –prefix=/usr/local

5.3 libiconv

php 的编译时需要 libiconv,但是明明安装了 libiconv 就是找不到,别想了。configure 有 bug,换个版本吧,最后用的 php-5.5.15.tar.gz 搞定

5.4 库文件位置不对

不止一个组件在打包过程中会拷贝系统的 libssl 等库文件,但是脚本中的路径却写错了,仔细修改一遍好了。

6. 其他问题

6.1 分阶段编译

每编译一个组件都会持续很长时间,编译中途出错怎么办?

1. 找到出错原因,解决问题。

2. 将 _build_XXXX_linux_x64 函数中已经顺利运行过的步骤注释掉

3. 将总的 build.sh 中对应的 _prep_ApachePhp || exit 1 行注释掉

这样,就能跳过不必要的重复编译,节省时间

6.2 替换logo

为什么要替换就不说了,直接说怎么做吧

1. 安装包logo

整个框架内有无数的 resources 问价夹(一个global的,每个组件内也有一个),直接替换提供的图片就ok了

2. 具体软件的 logo(比如pgadmin)

1. 将 src/pgadmin/include/images 中想换的东西换掉,然后重新编译 pgadmin

2. ./build.sh -skipbuild 直接打包(已经编译好了,直接打包)

6.3 替换包名

直接修改对应 installer.xml.in 文件中fullName、shortName等值,当然,还可以修改默认安路径、版本等所有信息

写在最后

由于时间紧迫,导致出现了本篇没有深度的文档。希望大家在工作学习过程中一定要严谨,不要学我

另外,本文中如果有不对的地方,请赐教

    分享到:

本文固定链接: http://klwang.info/edb-installers-tips/ | 数据库|Linux|软件开发

该日志由 klwang 于2014年08月22日发表在 Linux, postgresql 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: edb-installers 使用小记 | 数据库|Linux|软件开发

edb-installers 使用小记:等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter