搭建Linux(Ubuntu)系统下的Differential Datalog运行环境
DDlog is a bottom-up, incremental, in-memory, typed Datalog engine. It is well suited for writing programs that incrementally update their output in response to input changes
DDlog是一种自底向上,增量式,基于内存的类型化Datalog引擎,它非常适合编写响应输入更改而增量更新其输出的程序。目前官方说明文档介绍的安装方式,只在Linux和maxOS上经过了验证,未介绍Windows平台下运行环境搭建的方法。最近因为学习需要,自己在Liunx(Ubuntu 18.04) 系统下,经过一番折腾,终于把编译运行环境搞定,这里做个记录。
主要依赖Haskell 编译环境和对应的stack管理工具,以及rust编译环境

推荐方案:electron-ssr 访问外网 + 执行官方安装脚本。如果不能访问外网,可以考虑修改安装脚本,将下载源改成 tuna 源或 ustc 源,但是考虑到编译运行环境的依赖关系较为复杂,此方法若非万不得已,还是不要用了,费时费力,浪费感情!(良心建议~)
1. 配置、使用electron-ssr
由于 electron-ssr 开源项目的作者删除了该项目github主页的内容,所以使用搜索引擎时,可以考虑从一些用户备份的github仓库下载,Ubuntu系统可以选择deb 或 AppImage 格式的安装包。
electron-ssr下载地址: https://github.com/qingshuisiyuan/electron-ssr-backup/releases
AppImage格式的安装包,使用 chmod a+x electron-ssr.AppImage 命令授予运行权限,然后运行 /electron-ssr.AppImage 命令,即可执行客户端。根据引导,配置服务器节点,和小飞机一样。
由于electron-ssr采用Python脚本作为后端,所以在启动electron-ssr之前,要确保Python环境配置好。如果python环境没配好,执行electron不会报错,但是使用 netstat -lntp 查看,会发现代理端口没有被打开(使用netstat -lntp命令之前要先安装net-tools安装包)。
在终端下检查python命令是否存在,如果python命令不存在,而python3命令存在,可以执行 sudo ln /usr/bin/python3 /usr/bin/python 命令,用一个软链接把python3 链接到 python 上,这样系统查找 python的时候,就直接可以使用python3了;如果python3命令也没有,就证明系统没有任何python环境,需手动安装。
electron-ssr环境配置好后,在浏览器(Ubuntu默认是Firefox)搜索殷勤搜索"ip"关键词,即可查看本机IP服务商的位置,如下图所示

若IP服务商的位置仍是本地,需要进一步对浏览器配置网络代理,在首选项-> 网络设置中配置结果如下,随后应该就能正常使用浏览器上外网。

而我们在终端使用脚本安装,需要在终端使用代理,可以使用 export http_proxy="IP:PORT" 方式对当前终端设置代理,其中代理信息IP:PORT在小飞机的菜单栏可以找到,然后使用 curl www.google.com 命令,检查终端能否成功使用代理。
2. 使用官方安装脚本来配置编译运行环境
安装脚本是项目仓库中的一部分,因此首先需要将项目下载到本地,强烈建议使用 git clone 方式,而非下载压缩包方式,后续在build过程中,会检查项目目录中的git信息,如果是以压缩包方式下载,process 29 会build失败。
项目文件比较大,git clone 过程发生 RPC failed; curl GnuTLS recv error (-): A TLS packet with unexpected length 错误;
参考解决办法:https://blog.csdn.net/qq_34121797/article/details/79561110?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
解决了网络问题,亲测后面的安装过程较为顺利!为了加快stack的下载速度,可以修改镜像源为中科大或者清华大学,详见 http://mirrors.ustc.edu.cn/help/stackage.html
3,使用ddlog
编写一个playpen.dl的sample, 官方文档介绍了两种测试方式,但是亲测之后,发现使用 stack test --ta '-p playpen 测试框架依然会遇到网络访问问题,不要慌,前面的努力没白费,使用 ddlog -i playpen.dl -L../../lib 是可以顺利编译的,希望到了这一步的童靴不要放弃啊!(能倒腾到这一步的,我反正血槽已干…)
最后,就是万事具备,只剩写代码了,头秃啊!
参考链接
https://zhuanlan.zhihu.com/p/31635905
http://abloz.com/tech/2019/08/19/rust-install-cn/
https://segmentfault.com/a/1190000016475279
搭建Linux(Ubuntu)系统下的Differential Datalog运行环境的更多相关文章
- linux ubuntu系统下,adb不是内部命令 (如何才能让adb命令可以使用)
linux ubuntu系统下,adb不是内部命令 原文地址 linux ubuntu系统下,adb不是内部命令 解决方法: 1.sudo gedit ~/.bashrc 2.将下面的两句加到上面打开 ...
- Linux(Ubuntu)系统下使用crontab定期执行任务
安装cron(Ubuntu系统自带) apt-get install cron 开启crontab日志 默认情况下的日志是没有开启的,我们需要找到 /etc/rsyslog.d/50-default. ...
- Ubuntu系统下基于docker部署Jenkins环境
本文是在ubuntu环境下安装jenkins,jenkins运行在docker容器中, 至于docker如何安装,请参考https://www.cnblogs.com/xingyunqiu/p/115 ...
- Linux Ubuntu系统下Java开发环境搭建
操作系统:Linux x64 / Ubuntu 14.04 Java JDK版本:jdk-8u65-linux-x64.tar.gz 声明:转载请注明出处及本文链接 1. 前往ORACLE官网下载最新 ...
- linux ubuntu系统下MySQL的安装及设置
debian下安装MySQL:1.构建源或使用光盘镜像,当然你插入光盘也没问题2.有源时本地文件的源配置:修改/etc/apt/sources.list文件, 示例:deb http://192.16 ...
- Ubuntu系统下OpenDaylight源码编译安装
操作系统:Linux x64 / Ubuntu 14.04 研究领域:软件定义网络SDN (Software-defined Networking) 开发组件:OpenDaylight 声明:转载请注 ...
- CentOS和Ubuntu系统下安装 HttpFS (助推Hue部署搭建)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- ubuntu系统下安装pyspider:搭建pyspider服务器新手教程
首先感谢“巧克力味腺嘌呤”的博客和Debian 8.1 安装配置 pyspider 爬虫,本人根据他们的教程在ubuntu系统中进行了实际操作,发现有一些不同,也出现了很多错误,因此做此教程,为新手服 ...
- SAAS云平台搭建札记: (二) Linux Ubutu下.Net Core整套运行环境的搭建
最近做的项目,由于预算有限,公司决定不采购Windows服务器,而采购基于Linux的服务器. 一般的VPS服务器,如果使用Windows系统,那么Windows Server2012\2016安装好 ...
随机推荐
- SpringBoot与缓存
一.Spring Boot与缓存. JSR-107.Spring缓存抽象.整合Redis 一.JSR107 Java Caching定义了5个核心接口,分别是CachingProvider, Cach ...
- Java容器解析系列(13) WeakHashMap详解
关于WeakHashMap其实没有太多可说的,其与HashMap大致相同,区别就在于: 对每个key的引用方式为弱引用; 关于java4种引用方式,参考java Reference 网上很多说 弱引用 ...
- C# 解析JSON遇到以错误提示:应为状态“Element”。。遇到名称为“”、命名空间为“”的“Text”。
话不多说:仔细看代码: ①json格式错误导致报错 {"TeachIQ":" 语言 0小时0分钟 未完成","Temperature" ...
- 【WPF学习】第二十九章 元素绑定——将元素绑定到一起
数据banding的最简单情形是,源对象时WPF元素而且源属性是依赖性属性.前面章节解释过,依赖项属性具有内置的更改通知支持.因此,当在源对象中改变依赖项属性的值时,会立即更新目标对象中的绑定属性.这 ...
- asp.net core 2.2升到3.1遇到的问题小记
趁着武汉疫情,在家研究原来2.2的框架升级到3.1的问题,在过程中遇到不少坑,好在放假有的是时间,一个一个解决,现做个简要记录,供大家参考.推荐认真看这篇文章 [https://docs.micros ...
- python学习Day04--列表
[主要内容] 1.列表的索引: lst=[1,2,3,4,5,6] print(lst[0]) #获取第一个元素 lst[1]='你好' #改变列表中的值 2.列表的切片: lst=[ ...
- 初识Redis,看这一篇就够了
环境的搭建和安装网上有很多教程,在这里就不再重复了. 1. Redis是什么? Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写. ...
- Ceph 存储集群7-故障排除
Ceph 仍在积极开发中,所以你可能碰到一些问题,需要评估 Ceph 配置文件.并修改日志和调试选项来纠正它. 一.日志记录和调试 般来说,你应该在运行时增加调试选项来调试问题:也可以把调试选项添加到 ...
- 通过欧拉计划学Rust编程(第54题)
由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...
- Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树)
Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树) 题目链接 题意 给定一个nm的矩阵,每行取2k的矩阵,求总 ...