ev编译教程
A. gevent怎么编译
在gevent中主要使用Greenlet,给python提供一个轻量级的协同程序,作为一个C的扩展模
块.Greenlets主程序运行的所有系统进程是合理安排的.
这不同于任何multiprocessing或者multithreading提供的库和POSIX线程,这是真正的并行多处理器或多线程库提供真正的并
行结构
首先感谢https://maskv.com/technology/192.html作者给我的帮助我参考老方法编译gevent1.0rc2成功但是无法运行Goagent最新版只能运行2.17原因就是缺少python2.7的支持现在博主给出啦方法搬过来方便大家
Tomato中python2.7+gevent1.0rc2环境的搭建
之前因为没有搜索到在Tomato中编译安装gevent的教程,就自己琢磨出来Tomato中python2.6+gevent0.13.8环境的搭建方法(点击这里查看),
文章发布之后收到了众多的反馈。虽然Python官网当中的gevent最新版本为0.13.8,但Github上的gevent源码已经更新到了
1.0rc2,最新版的Goagent本地客户端也集成的是gevent1.0rc2,在整合了一些反馈之后,在自己的路由器上成功更新了python和
gevent。
首先卸载路由当中的python2.6及其相关组件,运行:
ipkg -force-removal-of-dependent-packages remove python26
rm -rf /opt/local/lib/python2.6 #若挂载路径非/opt请自行修改
rm -rf /opt/lib/python2.6
之后更新、安装所需要的依赖包:
ipkg update
ipkg upgrade
ipkg install busybox buildroot make grep openssl openssl-dev libuclibc++ wget-ssl python27 py27-setuptools
安装完成之后,我们要修复几个py27-setuptools当中的小错误。
首先easy_install的安装路径莫名其妙的指向了python2.5,不知是否只有我遇到了这个问题。修改 /opt/lib/python2.7/distutils/distutils.cfg 文件,将
1
site-dirs = /opt/local/lib/python2.5/site-packages
修改为
1
site-dirs = /opt/local/lib/python2.7/site-packages
其次easy_install的安装临时目录指向了/tmp目录,会造成安装某些组件时tmp剩余空间不足而导致的安装失败,我们要手动将其指定到挂载的U盘当中。
在/opt中创建tmp文件夹,修改 /opt/lib/python2.7/site-packages/setuptools/command/easy_install.py 文件,找到412行:
1
tmpdir = tempfile.mkdtemp(prefix="easy_install-")
将其修改为:
1
tmpdir = tempfile.mkdtemp(prefix="easy_install-",dir="/opt/tmp")
然后就可以使用easy_install安装greenlet与cython了(此步骤花费时间奇长无比):
easy_install-2.7 greenlet
easy_install-2.7 cython
ln -s /opt/local/bin/cygdb /opt/bin/cygdb
ln -s /opt/local/bin/cython /opt/bin/cython
之后下载gevent:
cd /opt
/opt/bin/wget https://github.com/downloads/Sit ... event-1.0rc2.tar.gz --no-check-certificate
tar zxvf gevent-1.0rc2.tar.gz
cd gevent-1.0rc2
直接编译会报错,因为使用了mips2的sync指令,在Goagent的issues上找到了答案。心得编译前记得开启虚拟内存
修改 /libev/ev.c 文件,找到604行的:参考https://code.google.com/p/goagent/issues/detail?id=7823
1
#define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory")
修改为:
#define ECB_MEMORY_FENCE __asm__ __volatile__ (".set mips2; sync; .set mips0": : :"memory")
执行
python2.7 setup.py install
下载并安装pyOpenSSL
cd /opt
wget http://pypi.python.org/packages/source/p/pyOpenSSL/pyOpenSSL-0.12.tar.gz
tar zxvf pyOpenSSL-0.12.tar.gz
cd pyOpenSSL-0.12
python2.7 setup.py install
安装结束之后,运行Goagent可能会提示.python-eggs错误,我们可以手动指定缓存目录。
修改Goagent的proxy.py文件,在:
1
import os
下一行添加:
1
os.environ['PYTHON_EGG_CACHE'] = '/opt/.python-eggs'
或者可以将 gevent-1.0rc2-py2.7-linux-mips.egg 解包:
cd /opt/local/lib/python2.7/site-packages
mv gevent-1.0rc2-py2.7-linux-mips.egg gevent-1.0rc2-py2.7-linux-mips.egg.zip
mkdir gevent-1.0rc2-py2.7-linux-mips.egg
cd gevent-1.0rc2-py2.7-linux-mips.egg
unzip /opt/local/lib/python2.7/site-packages/gevent-1.0rc2-py2.7-linux-mips.egg.zip
再次运行Goagent,应该不会再有错误提示了。
B. ev5000宏编译路径设置失败
ev5000宏编译路径设置失败可能拦肆是网络原因。在使用颂消ev5000宏时出现编译失败的原因是网络异常野衡知,只需更换更好的网络重新编译即可。EV5000是一种工业嵌入式触摸屏人机界面,具有简单易用、强大功能及优异稳定等优点,显示方式为65536色。
C. 用 PGP 保护代码完整性(四):将主密钥移到离线存储中
在本系列教程的第四部分中,我们将探讨如何将主密钥移至离线存储,以增强PGP代码保护的安全性。在使用PGP时,开发者需要格外小心,避免密钥被盗或意外泄露,因为这对他们来说是极其危险的。
移除主密钥的目的是防止密钥失窃或意外泄露。对恶意用户来说,私钥具有极大吸引力。有实例显示,恶意软件已成功扫描用户家目录并上传发现的私钥。因此,对于开发者而言,私钥失窃是身份证明失窃,后果严重。从家目录中移除私钥可有效防范此类事件。
在开始操作前,确保备份GnuPG目录至关重要。备份私钥便于在必要时恢复,这与使用paperkey进行灾难级备份不同。接下来,准备一个可加密的USB驱动器,并加密它。建议使用与主密钥相同的密码。
加密完成后,将USB驱动器插入,并确保其正常挂载。使用`mount`命令查找设备挂载点的全路径。将整个GnuPG目录复制到该位置。注意,可能遇到套接字不支持的错误,无需担心,忽略即可。测试系统以确认一切正常。将USB驱动器取出并贴上标签,存放到安全但不远离的地方。从此,你需要偶尔使用它来编辑身份信息、添加或吊销子证书、或签署他人的密钥。
在移除主密钥前,请确保已有完整的GnuPG目录备份。没有可用备份可能会导致主密钥失效。首先,识别主密钥的keygrip,它与家目录下的`.gnupg`目录下的一个文件一致。使用`ls`命令列出文件,并查找与主密钥keygrip匹配的`.key`文件。删除此文件后,运行`--list-secret-keys`命令,将显示主密钥丢失(#表示不可用)。此时,主密钥已成功删除。
除了主密钥,还需删除吊销证书。确保备份中包含该文件,然后将其删除。吊销证书允许某些人永久标记证书为吊销状态,这意味着它在任何用途中将不再被使用或信任。这通常用于标记因某种原因不再受控的密钥,如丢失密钥密码。删除吊销证书后,可有效保护开发者数字身份。
在下一篇文章中,我们将讨论如何保护子密钥。敬请期待。
通过来自Linux基金会和edX的免费课程“Linux入门”学习更多Linux知识。
来源:linux.com/blog/learn/pg...
作者:Konstantin Ryabitsev 译者:qhwdw 校对:wxy
本文由LCTT原创编译,Linux中国荣誉推出