pg_matlab v2 install

本文涉及的产品
PolarClaw,2核4GB
简介:
首先要安装MCR v713 x64, 参考 : 
然后安装pg_matlab, 首先下载代码 : 
wget http://www.cybertec.at/download/pg_matlab/pg_matlab-v2.tar.gz
tar -zxvf pg_matlab-v2.tar.gz
mv pg_matlab /opt/soft_bak/postgresql-9.3.0/contrib/

matlab有一些bug, 需要修改一下
cd /opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab
[root@db-172-16-3-150 pg_matlab]# vi libmatpg/Makefile
MODULE_big = matpg
改成
MODULE_big = libmatpg


[root@db-172-16-3-150 pg_matlab]# vi libmatpg/create_mat_pg_operators.sql.in
CREATE OR REPLACE FUNCTION mat_pg_add(DOUBLE PRECISION[], DOUBLE PRECISION[]) RETURNS DOUBLE PRECISION[]
AS '$libdir/matpg'
改成
CREATE OR REPLACE FUNCTION mat_pg_add(DOUBLE PRECISION[], DOUBLE PRECISION[]) RETURNS DOUBLE PRECISION[]
AS '$libdir/libmatpg'

修改安装目录和lib文件目录. 以及mcr环境
[root@db-172-16-3-150 pg_matlab]# vi Makefile 
修改
PGM_DIR = /home/pg93/pgsql/bin
LIB_DIR = /home/pg93/pgsql/lib
MATLABROOT=/opt/MATLAB/MATLAB_Compiler_Runtime/v713


[root@db-172-16-3-150 pg_matlab]# cd matcored/
vi Makefile
第一行上面加一行
MATLABROOT=/opt/MATLAB/MATLAB_Compiler_Runtime/v713


[root@db-172-16-3-150 pg_matlab]# vi libmatpg/mat_pg_funcs.h
以下为pg函数连接matcored的端口, 编译时写死了, 所以后面在启动matcored时必须使用这个端口, pg函数会连不上的.
确保这个端口没有被其他程序占用.
#define MATPGPORT       (54321)

pg_matlab用到的libmatcore.so文件是已经编译好的, 直接使用, 这两个文件如下, md5码一致.
[root@db-172-16-3-150 pg_matlab]# cd libmatcore
[root@db-172-16-3-150 libmatcore]# ll
total 8
drwxr-xr-x. 2 pg93 pg93 4096 Feb 10  2011 distrib
drwxr-xr-x. 2 pg93 pg93 4096 Feb 10  2011 src
[root@db-172-16-3-150 libmatcore]# md5sum distrib/libmatcore.so
ae9f35e018a46c2a240ea0490aa9d98e  distrib/libmatcore.so
[root@db-172-16-3-150 libmatcore]# md5sum src/libmatcore.so
ae9f35e018a46c2a240ea0490aa9d98e  src/libmatcore.so

开始安装pg_matlab, 需要用到一些环境变量 : 
[root@db-172-16-3-150 pg_matlab]# export PATH=/home/pg93/pgsql/bin:$PATH
[root@db-172-16-3-150 pg_matlab]# which pg_config
/home/pg93/pgsql/bin/pg_config
[root@db-172-16-3-150 pg_matlab]# USE_PGXS=1 make all
make -e -C matcored
make[1]: Entering directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/matcored'
cc -Wall -c -o matcored.o matcored.c -I/opt/MATLAB/MATLAB_Compiler_Runtime/v713/extern/include -I../libmatcore/distrib
cc -Wall -c -o mat_wrapper.o mat_wrapper.c -I/opt/MATLAB/MATLAB_Compiler_Runtime/v713/extern/include -I../libmatcore/distrib
gcc -o matcored matcored.o mat_wrapper.o -L/opt/MATLAB/MATLAB_Compiler_Runtime/v713/runtime/glnxa64 -L../libmatcore/distrib -lmwmclmcrrt -lmatcore
make[1]: Leaving directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/matcored'
USE_PGXS=1 make -e -C libmatpg
make[1]: Entering directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/libmatpg'
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fpic -I../matcored -I. -I. -I/home/pg93/pgsql9.3.0/include/server -I/home/pg93/pgsql9.3.0/include/internal -D_GNU_SOURCE -I/usr/include/libxml2   -c -o mat_pg_funcs.o mat_pg_funcs.c
gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fpic -shared -o libmatpg.so mat_pg_funcs.o -L/home/pg93/pgsql9.3.0/lib -Wl,--as-needed -Wl,-rpath,'/home/pg93/pgsql9.3.0/lib',--enable-new-dtags  
sed 's,MODULE_PATHNAME,$libdir/create_mat_pg_operators,g' create_mat_pg_operators.sql.in >create_mat_pg_operators.sql
make[1]: Leaving directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/libmatpg'
[root@db-172-16-3-150 pg_matlab]# USE_PGXS=1 make install
cp libmatcore/distrib/libmatcore.so /home/pg93/pgsql/lib
cp matcored/matcored /home/pg93/pgsql/bin
USE_PGXS=1 make install -e -C libmatpg
make[1]: Entering directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/libmatpg'
/bin/mkdir -p '/home/pg93/pgsql9.3.0/lib'
/bin/mkdir -p '/home/pg93/pgsql9.3.0/share/contrib'
/usr/bin/install -c -m 755  libmatpg.so '/home/pg93/pgsql9.3.0/lib/libmatpg.so'
/usr/bin/install -c -m 644  create_mat_pg_operators.sql '/home/pg93/pgsql9.3.0/share/contrib/'
make[1]: Leaving directory `/opt/soft_bak/postgresql-9.3.0/contrib/pg_matlab/libmatpg'

使用pg_matlab, 设置pg93用户的环境变量 : 
[root@db-172-16-3-150 pg_matlab]# su - pg93
pg93@db-172-16-3-150-> vi .bash_profile
export PS1="$USER@`/bin/hostname -s`-> "
export PGPORT=1921
export PGDATA=/ssd2/pg93/pg_root
export LANG=en_US.utf8
export PGHOME=/home/pg93/pgsql
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export DATE=`date +"%Y%m%d%H%M"`
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH
export PGUSER=postgres
export PGHOST=$PGDATA
alias rm='rm -i'
alias ll='ls -lh'
export PGDATABASE=digoal

export MCRHOME=/opt/MATLAB/MATLAB_Compiler_Runtime/v713
export LD_LIBRARY_PATH=$MCRHOME/runtime/glnxa64:$MCRHOME/bin/glnxa64:$MCRHOME/sys/os/glnxa64:$MCRHOME/sys/java/jre/glnxa64/jre/lib/amd64:$MCRHOME/sys/java/jre/glnxa64/jre/lib/amd64/native_threads:$MCRHOME/sys/java/jre/glnxa64/jre/lib/amd64/server:$LD_LIBRARY_PATH
export XAPPLRESDIR=$MCRHOME/X11/app-defaults

在库中创建测试用的函数  : 
pg93@db-172-16-3-150-> cd /home/pg93/pgsql/share/contrib/
pg93@db-172-16-3-150-> ll
total 4.0K
-rw-r--r--. 1 root root 341 Sep 27 12:35 create_mat_pg_operators.sql
pg93@db-172-16-3-150-> psql -f create_mat_pg_operators.sql 
CREATE FUNCTION
psql:create_mat_pg_operators.sql:7: ERROR:  operator does not exist: double precision[] + double precision[]
CREATE OPERATOR

启动matcored进程, 指定监听端口必须和libmatpg/mat_pg_funcs.h一致, 这个进程是pg函数与matlab沟通的桥梁.
pg93@db-172-16-3-150-> matcored 54321
pg93@db-172-16-3-150-> ps -ewf|grep matcore
pg93      7999     1  0 12:40 pts/1    00:00:00 matcored 54321
pg93      8001  7944  0 12:40 pts/1    00:00:00 grep matcore
pg93@db-172-16-3-150-> netstat -anp|grep 54321
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:54321             0.0.0.0:*                   LISTEN      7999/matcored       

函数测试 : 
pg93@db-172-16-3-150-> psql
psql (9.3.0)
Type "help" for help.

digoal=# \df
                                     List of functions
 Schema |    Name    |  Result data type  |          Argument data types           |  Type  
--------+------------+--------------------+----------------------------------------+--------
 public | mat_pg_add | double precision[] | double precision[], double precision[] | normal
(1 row)

digoal=# SELECT mat_pg_add( '{1,2,3,4}' , '{2,3,4,5}' );
卡住, 没反应了.

pg和matcored已经建立连接 : 
pg93@db-172-16-3-150-> netstat -anp|grep 54321
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:54321             0.0.0.0:*                   LISTEN      7999/matcored       
tcp        0      0 127.0.0.1:22297             127.0.0.1:54321             ESTABLISHED 8005/postgres       
tcp        0      0 127.0.0.1:54321             127.0.0.1:22297             ESTABLISHED 7999/matcored

原因不明, 发邮件给http://www.cybertec.at, 等待答复中.

[参考]

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
15天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34807 41
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
9天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
10129 30
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
5天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2050 21
|
27天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45691 155
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
2天前
|
人工智能 自然语言处理 安全
|
9天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
1646 5
|
16天前
|
人工智能 JSON 监控
Claude Code 源码泄露:一份价值亿元的 AI 工程公开课
我以为顶级 AI 产品的护城河是模型。读完这 51.2 万行泄露的源码,我发现自己错了。
5800 26
|
7天前
|
IDE Java 编译器
【全网最详细】JDK17下载安装图文教程 | Java17编程环境搭建步骤详解
JDK 17是Java官方长期支持(LTS)版本,提供编译、调试、运行Java程序的完整工具链。具备高稳定性、强安全性及现代语言特性(如密封类、模式匹配),广泛用于企业开发、教学入门与生产环境,是学习和实践Java的首选基础工具。(239字)
1203 15