edgedb 内部pg 数据存储的探索 (四) 源码编译
edgedb 基于python开发,同时源码重包含了好多子项目,以下进行简单的源码编译
clone 代码
需要递归处理,加上recursive,比较慢稍等
git clone --recursive https://github.com/edgedb/edgedb.git
效果
正克隆到 'edgedb'...
remote: Enumerating objects: 165, done.
remote: Counting objects: 100% (165/165), done.
remote: Compressing objects: 100% (129/129), done.
remote: Total 48698 (delta 68), reused 66 (delta 36), pack-reused 48533
接收对象中: 100% (48698/48698), 13.53 MiB | 767.00 KiB/s, done.
处理 delta 中: 100% (33738/33738), done.
子模组 'edb/server/pgproto' (https://github.com/MagicStack/py-pgproto.git) 已为路径 'edb/server/pgproto' 注册
子模组 'postgres' (https://github.com/edgedb/postgres.git) 已为路径 'postgres' 注册
正克隆到 'edb/server/pgproto'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 207 (delta 14), reused 22 (delta 9), pack-reused 175
接收对象中: 100% (207/207), 67.21 KiB | 0 bytes/s, done.
处理 delta 中: 100% (133/133), done.
子模组路径 'edb/server/pgproto':检出 'aca615c71d7060555b629323a1aa6bb1af7b50f2'
正克隆到 'postgres'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
接收对象中: 4% (31265/714724), 11.86 MiB | 100.00 KiB/s
接收对象中: 4% (31588/714724), 11.96 MiB | 94.00 KiB/s
构建
- 环境准备
使用venv 进行python3 环境的准备
python3 -m venv edgedb
source edgedb/bin/active
- 构建
比较慢,稍等
cd edgedb
make
- 效果
find edb -name '*.pyx' | xargs touch
python setup.py build_ext --inplace
warning: no files found matching '*.py' under directory 'examples'
warning: no files found matching '*.pem' under directory 'tests'
edgedb/pgproto/pgproto.c: 在函数‘__pyx_f_6edgedb_7pgproto_7pgproto_i64_to_hex’中:
edgedb/pgproto/pgproto.c:10446:28: 警告:‘char’转换自‘int’时可能改变值 [-Wconversion]
__pyx_v_i = (__pyx_v_i - 1);
^
edgedb/pgproto/pgproto.c: 在函数‘__pyx_f_6edgedb_7pgproto_7pgproto_pg_uuid_bytes_from_str’中:
edgedb/pgproto/pgproto.c:10744:55: 警告:‘uint8_t’转换自‘int’时可能改变值 [-Wconversion]
for (__pyx_t_9 = 0; __pyx_t_9 < __pyx_t_8; __pyx_t_9+=1) {
^
edgedb/pgproto/pgproto.c:10955:30: 警告:‘uint8_t’转换自‘int’时可能改变值 [-Wconversion]
__pyx_v_j = (__pyx_v_j + 1);
^
........
- install local
稍等,有点慢,因为server 依赖pg 数据库。。。
pip install .
Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/
Processing /opt/edgedb
Collecting asyncpg~=0.18.2 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/25/eb/9674bb30b80403ee3110dcbd54d71080dfc71d0774760955353aaa5c1627/asyncpg-0.18.3-cp36-cp36m-manylinux1_x86_64.whl (2.4MB)
100% |████████████████████████████████| 2.4MB 91.0MB/s
Collecting click~=6.7 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
100% |████████████████████████████████| 71kB 63.2MB/s
Collecting httptools>=0.0.13 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/1b/03/215969db11abe8741e9c266a4cbe803a372bd86dd35fa0084c4df6d4bd00/httptools-0.0.13.tar.gz (104kB)
100% |████████████████████████████████| 112kB 84.5MB/s
Collecting immutables>=0.9 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/e3/91/bc4b34993ef77aabfd1546a657563576bdd437205fa24d4acaf232707452/immutables-0.9-cp36-cp36m-manylinux1_x86_64.whl (91kB)
100% |████████████████████████████████| 92kB 1.3MB/s
Collecting parsing~=1.6.1 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/fc/19/05dff0134f244265c7cee60f5075ce9236c69b28c8a9767fa5354d15d246/parsing-1.6.1-py3-none-any.whl
Collecting prompt_toolkit>=2.0.0 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/f7/a7/9b1dd14ef45345f186ef69d175bdd2491c40ab1dfa4b2b3e4352df719ed7/prompt_toolkit-2.0.9-py3-none-any.whl (337kB)
100% |████████████████████████████████| 337kB 90.4MB/s
Collecting psutil~=5.6.1 (from edgedb-server==1.0a2.dev29+g946bbdf)
Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/2f/b8/11ec5006d2ec2998cb68349b8d1317c24c284cf918ecd6729739388e4c56/psutil-5.6.1.tar.gz (427kB)
100% |████████████████████████████████|
Installing collected packages: asyncpg, click, httptools, immutables, six, parsing, wcwidth, prompt-toolkit, psutil, Pygments, setproctitle, uvloop, promise, rx, graphql-core, edgedb, edgedb-server
Running setup.py install for httptools ... done
Running setup.py install for psutil ... done
Running setup.py install for setproctitle ... done
Running setup.py install for promise ... done
Running setup.py install for edgedb ... done
Running setup.py install for edgedb-server ... /
- 查看安装
pip list
效果
Package Version
-------------- --------------------
asyncpg 0.18.3
click 6.7
edgedb 0.6.1
edgedb-server 1.0a2.dev29+g946bbdf
graphql-core 2.1
httptools 0.0.13
immutables 0.9
parsing 1.6.1
pip 10.0.1
promise 2.2.1
prompt-toolkit 2.0.9
psutil 5.6.1
Pygments 2.3.1
Rx 1.6.1
setproctitle 1.1.10
setuptools 39.0.1
setuptools-scm 3.2.0
six 1.12.0
uvloop 0.12.2
wcwidth 0.1.7
- 生成的console 命令
ls -sial bin
效果
140985 4 drwxr-xr-x 2 root root 4096 4月 23 17:13 .
134239 4 drwxr-xr-x 15 root root 4096 4月 23 17:06 ..
141201 4 -rw-r--r-- 1 root root 2191 4月 23 16:58 activate
141513 4 -rw-r--r-- 1 root root 1247 4月 23 16:58 activate.csh
141512 4 -rw-r--r-- 1 root root 2411 4月 23 16:58 activate.fish
141194 4 -rwxr-xr-x 1 root root 241 4月 23 16:58 easy_install
141195 4 -rwxr-xr-x 1 root root 241 4月 23 16:58 easy_install-3.6
142182 4 -rwxr-xr-x 1 root root 450 4月 23 17:13 edgedb
142183 4 -rwxr-xr-x 1 root root 464 4月 23 17:13 edgedb-server
141507 4 -rwxr-xr-x 1 root root 223 4月 23 16:58 pip
141508 4 -rwxr-xr-x 1 root root 223 4月 23 16:58 pip3
141509 4 -rwxr-xr-x 1 root root 223 4月 23 16:58 pip3.6
142018 4 -rwxr-xr-x 1 root root 226 4月 23 17:04 pygmentize
140988 0 lrwxrwxrwx 1 root root 7 4月 23 16:58 python -> python3
140987 0 lrwxrwxrwx 1 root root 16 4月 23 16:58 python3 -> /usr/bin/python3
- 运行
直接是不可以运行的,需要配置参数,配置可以参考如下
[Unit]
Description=Next generation object-relational database
Documentation=https://edgedb.com/
After=syslog.target
After=network.target
[Service]
Type=notify
User=edgedb
Group=edgedb
Environment=EDGEDATA=/var/lib/edgedb/1-alpha1/data/
RuntimeDirectory=edgedb
ExecStart=/usr/lib64/edgedb-1-alpha1/bin/edgedb-server -D ${EDGEDATA} --runstate-dir=%t/edgedb
ExecReload=/bin/kill -HUP ${MAINPID}
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
[Install]
WantedBy=multi-user.target
几个错误
- setuptools_scm 问题
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('setuptools_scm~=3.2.0')
解决方法:
pip install setuptools_scm~=3.2.0
说明
通过学习源码的编译我们可以进一步了解edgedb 的工作原理,对于启动可以进一步学习源码,了解启动的处理逻辑,目前直接运行edgedb-server
是有问题的,实际上因为后端是使用的pg 需要配置类似pg 的相关参数,实际我们可以解决systemd 的管理文件
参考资料
https://github.com/edgedb/edgedb
edgedb 内部pg 数据存储的探索 (四) 源码编译的更多相关文章
- edgedb 内部pg 数据存储的探索 (三) 源码包setup.py 文件
edgedb 是基于python开发的,同时集成了cython 以下为包的setup.py 配置,从里面我们可以看到关于edgedb 的一些依赖 以及构建过程 setup.py 源码 整体配置不算很多 ...
- edgedb 内部pg 数据存储的探索 (一)基本环境搭建
edgedb 是基于pg 上的对象关系数据库,已经写过使用docker 运行的demo,为了探索内部的原理,做了一下尝试,开启pg 访问 后边会进一步的学习 环境准备 为了测试,使用yum 安装 安装 ...
- edgedb 内部pg 数据存储的探索 (二) 创建数据库命令说明
前面已经创建好了一个简单可以访问pg 的edgedb 环境,现在测试几个数据库操作命令在pg 的存储 创建数据库 连接环境 注意账户是按照上次创建的环境配置 edgedb -u edgedb 创建数据 ...
- edgedb 内部pg 数据存储的探索 (五) 运行进程列表信息
做为一个简单的记录,方便后期分析学习 当前包含了一个timescale 的extension 可以不用关注 信息 ps -ef |grep edgedb edgedb 10559 24858 0 4月 ...
- nRF5 SDK for Mesh(四) 源码编译
官方文档教程编译源码: http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk%2Fdita%2Fs ...
- 65、Spark Streaming:数据接收原理剖析与源码分析
一.数据接收原理 二.源码分析 入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法 ### overr ...
- java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
本章介绍DataOutputStream.我们先对DataOutputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblog ...
- 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图
前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...
- Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令
Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Andr ...
随机推荐
- 为期一周的C#学习状态与感受
我,女,28,有娃两岁.博客开张,发发牢骚,进入第二阶段. 我这个年龄我这个状态,我决定重拾以前放弃的行业,打听了很多相关工作的朋友和查阅了很多关于这个问题的网页,有两种声音在交奏,一边是去吧,趁现在 ...
- Python之file方法
def fileno(self): # 文件描述符 def flush(self): # 刷新文件内部缓冲区 def isatty(se ...
- JAVA基础50题
package package0530; import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;imp ...
- 运行Office 2007安装程序提示:"找不到Office.zh-cn\OfficeMUI.xml"(转载)亲测
去网上查结果原来是Office 2007和Visual Studio 2008 Authoring Component组件相冲突,网上说用VS.Net 2008光盘WCU\WebDesignerCor ...
- Oracle学习DayFour(高级子查询)
一.高级子查询 1.多列子查询 定义:主查询与子查询返回的多个列进行比较 多列子查询中的比较分为两种:成对比较:不成对比较 实例:查询与141号或174号员工的manager_id和departmen ...
- flock
为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成串行状态.作为锁机制中的一种,PHP的文件锁也是为了应对资源竞争.假设一个应用场景,在存在较大并发的情况下,通过fwrite向文件尾部多次有 ...
- excel2013 打开为灰色空白 左下角显示就绪 要把文件拖进去才能打开!
最近电脑excel2013 打开总是为灰色空白 左下角显示就绪 要把文件拖进去或者在此再打开一个才能打开! 在网上搜了一下,我是使用下面这个方法解决的: 步骤一:请您在“开始”菜单的搜索框中输入“re ...
- Holer实现oracle数据库外网访问
外网访问内网Oracle数据库 内网主机上安装了Oracle数据库,只能在局域网内访问,怎样从公网也能访问本地Oracle数据库? 本文将介绍使用holer实现的具体步骤. 1. 准备工作 1.1 安 ...
- php $_FILES错误说明 以及图片前端图片上传失败。
我的另一个原文:https://blog.csdn.net/qq_36570464/article/details/80692241 今天被一个问题弄了好久, 先看代码: 前端: <form m ...
- python基础语法二
迭代 test = "妹子有种冲我来" #可迭代对象 == 被for进行循环获取 for item in test: print(item) break #练习题: test = ...