千家信息网

怎么在dbcolinux上安装cozy-light

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,本篇内容介绍了"怎么在dbcolinux上安装cozy-light"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能
千家信息网最后更新 2024年11月15日怎么在dbcolinux上安装cozy-light

本篇内容介绍了"怎么在dbcolinux上安装cozy-light"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

安装启动cozy-light

cozy-light好像2016年之后没人维护了,它的最新版本是0.4.9,相反它的APP在维护就够了,安装cozy-light分为安装cozy-light和各种支持APP支持,由于这二部分不是同步更新开发的,涉及到相同的东西有时会二处有不同的版本编译需求,比如pouchdb-4.0.3.tgz在app和cozy部都会被安装一次,都会用到leveldb,一个是120,一个是114,要找一个兼容这二者的js,我选择是的0.12.18带npm2.15.11,否则能编译完cozy-light是处处充满陷坑,稍后会提到为什么这么选.首先,node0.12.18安装https://nodejs.org/dist/latest-v0.12.x/,再装git,由于node 0.12.18属于老版本了,我们需要为/usr/bin/node建立一个shell wrapper开启它的和谐模式,否则会出错,把node重命名为nodejs,/usr/bin下新建以下内容文件并加起执行权限,引用nodejs:

#!/bin/shrdlkf() { [ -L "$1" ] && (local lk="$(readlink "$1")"; local d="$(dirname "$1")"; cd "$d"; local l="$(rdlkf "$lk")"; ([[ "$l" = /* ]] && echo "$l" || echo "$d/$l")) || echo "$1"; }DIR="$(dirname "$(rdlkf "$0")")"exec /usr/bin/env nodejs --harmony "$@"

npm install cozy-light -g会自动从github下载0.4.9到/usr/lib/node_modules/cozy-light,我在香港主机装的,所以外网速度快,/cozy-light/node-modules有它引用到的submodules各个submodules有它subsubmodules,node的modules就是一个树形结构,没有ln这样的引用,同一个工程不同的部分引用相同的模块的不同版本会重复存在,这也就是如上为什么一个项目要选一个兼容node版本的另一原因。不指定 -g会安装到PWD,编译过程中会调用node-gyp编译leveldb120,出了一些warnning:gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/0.12.28",但是没关系,安装正确结束会输出一个cozy-light的模块树形表,直接启动它建立到/usr/bin/cozy-light的文件,cozy-light -p 80 start,启动失败,以下错误在设置了和谐模式后依然存在:

/usr/lib/node_modules/cozy-light/node_modules/pouchdb/node_modules/request/node_modules/hawk/lib/server.js:506            host,                ^SyntaxError: Unexpected token ,

目测是request版本问题,查看其所在安装目录,发现安装的是最新的版本可能需要降级,我们用自定义位置的安装法:在具体模块树级层次中运行npm install。不依赖整体-g:打开/usr/lib/node_modules/cozy-light/node_modules/pouchdb/package.json,将"request": "^2.61.0",改为"request": "2.68.0",为2016年1月的版本,删除pouchdb/node-modules下的request,进入/usr/lib/node_modules/cozy-light/node_modules/pouchdb/下执行npm install,再次执行cozy-light -p 80 start 成功。cozy-light再次启动会有bug,cozy-light stop后再start也不行,最好重启一下。

但是挑战不是这里,挑战和难度是安装app:

安装personal cloud distro

cozy-light install-distro personal-cloud

apps全被安装在于./root下,/root/.cozy-light levelDB的数据都在这里,这次node-gyp编译的是leveldb140,有出错,整个过程中,我先后尝试过4.x-latest,5.0-latest,6,0-latest,都有出错:nan_implementation_12_inl.h error: no matching function for call to 'v8::Signature::New,追踪一下,依然是版本的问题:time@0.11.1'引用的nan 1.6.2,仅跟0.12适配,这也是为什么我选择0.12的原因,安装其它app或distros时,也会有其它的问题,app/distors安装跟cozy-light一样,受上面说的工程各层次级引用不同nodejs版本的原因导致出现node-gyp将库链接到不同node版本出现问题,在0.12下以上personal cloud distro全程通过。

还存在一个warning : An uncaught exception has been thrown:{ [Error: spawn ENOMEM] code: 'ENOMEM', errno: 'ENOMEM', syscall: 'spawn' },要打开swap参见我以前的《在tinycolinux xxx》文章增加swap部分

以上personal cloud distro只安装了tasky,contacts,simple-daskboard,,等几个app,安装一下files:cozy-light install cozy-labs/files,启动cozy-light后为其设置密码:cozy-light set-password,启动和进入files app时会现如下错误:

An error occurred while initializing notification module -- Error: connect ECONNREFUSED[Error: No instance domain set]Error: connect ECONNREFUSED

"怎么在dbcolinux上安装cozy-light"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0