CentOS 7 1511升级python到2.7.11后goagent引发的血案
2016-01-05 18:12
711 查看
今天通过yum update命令将自己的centos 7.1升级到了最新版本,centos 7-1511,
升级后python的版本是2.7.5-34.el7,运行goagent后会出现core文件,python直接挂掉,直觉认为是python版本老的缘故,
所以就直接下载了python 2.7.11的源码,一路编译,编译时指定了--prefix=/usr,所以直接替换掉了系统的python。
再次运行python proxy.py,会报错gevent,使用pip install gevent命令安装,(其实这时候已经有问题了,因为我是有gevent的)
再次运行python proxy.py,会把错cryptography,再通过命令pip install --upgrade cryptography,安装cryptography。
此时goagnet就ok了,可是血案刚刚开始......
此时执行yum update,会报一个经典的错误:No module named rpm,
我的解决思路很直接,找到rpm的centos7的源码(http://vault.centos.org/7.2.1511/os/Source/SPackages/rpm-4.11.3-17.el7.src.rpm),
然后编译并部分安装,
./configure --with-external-db "CPPFLAGS=-I/usr/include/libdb -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/python2.7"
会报错缺少magic.h,这是因为没有安装file-devel,
下载ftp://195.220.108.108/linux/centos/7.2.1511/os/x86_64/Packages/file-devel-5.11-31.el7.x86_64.rpm,
报错lua,因为没有安装lua-devel,
下再ftp://195.220.108.108/linux/centos/7.2.1511/os/x86_64/Packages/lua-devel-5.1.4-14.el7.x86_64.rpm
然后安装,再重新configure,
make
安装不用全部安装,只需要安装里面的python就可以了
cd python
python setup.py install
这样就解决了No module named rpm的问题。
继续yum update,报错:pycurl,这时候我意识到,pycurl我本来有的,只是在/usr/lib64/python2.7/site-packages目录下,
但是python会去找/usr/lib/python2.7/site-packages目录下,直接将pycurl-7.19.0-py2.7.egg-info和pycurl.so拷贝到此目录,问题解决。
我并没有去设置PYTHONPATH。
继续yum update,报错:sqlitecachec,_sqlitecache,同理从/usr/lib64/python2.7/site-packages目录拷贝到/usr/lib/python2.7/site-packages。
继续yum update,报错:xz compression not available,这个在我这里是库pyliblzma的原因,执行pip install pyliblzma,
或者只需要yum clean all && yum makecache就可以了,
如果不行,需要检查自己的/etc/yum.repo.d目录下,是不是有冗余或者冲突的配置文件,删除掉,然后再yum clean all && yum makecache。
=======================================================================================================
如果一开始就拷贝/usr/lib64/python2.7/site-packages下的rpm到/usr/lib/python2.7/site-packages是否就可以了呢?
直接替换掉系统的python版本还是太草率了,应该将python 2.7.11安装到/usr/local目录,只让goagent使用新版本的python。这样波及面会小很多。
===============================================
2016-2-27更新
事实证明,安装python2.7.11到/usr/local目录后,只需要拷贝gevent 和openssl就可以运行了~~
安装步骤如下:
./configure --prefix=/usr/local
make && make altinstall
cd /usr/loca/lib/python2.7/site-packages
cp -dpR /usr/lib64/python2.7/site-packages/gevent .
cp -dpR /usr/lib64/python2.7/site-packages/OpenSSL .
然后运行/usr/local/bin/python2.7 proxy.py
就搞定了~~~~
升级后python的版本是2.7.5-34.el7,运行goagent后会出现core文件,python直接挂掉,直觉认为是python版本老的缘故,
所以就直接下载了python 2.7.11的源码,一路编译,编译时指定了--prefix=/usr,所以直接替换掉了系统的python。
再次运行python proxy.py,会报错gevent,使用pip install gevent命令安装,(其实这时候已经有问题了,因为我是有gevent的)
再次运行python proxy.py,会把错cryptography,再通过命令pip install --upgrade cryptography,安装cryptography。
此时goagnet就ok了,可是血案刚刚开始......
此时执行yum update,会报一个经典的错误:No module named rpm,
我的解决思路很直接,找到rpm的centos7的源码(http://vault.centos.org/7.2.1511/os/Source/SPackages/rpm-4.11.3-17.el7.src.rpm),
然后编译并部分安装,
./configure --with-external-db "CPPFLAGS=-I/usr/include/libdb -I/usr/include/nss3 -I/usr/include/nspr4 -I/usr/include/python2.7"
会报错缺少magic.h,这是因为没有安装file-devel,
下载ftp://195.220.108.108/linux/centos/7.2.1511/os/x86_64/Packages/file-devel-5.11-31.el7.x86_64.rpm,
报错lua,因为没有安装lua-devel,
下再ftp://195.220.108.108/linux/centos/7.2.1511/os/x86_64/Packages/lua-devel-5.1.4-14.el7.x86_64.rpm
然后安装,再重新configure,
make
安装不用全部安装,只需要安装里面的python就可以了
cd python
python setup.py install
这样就解决了No module named rpm的问题。
继续yum update,报错:pycurl,这时候我意识到,pycurl我本来有的,只是在/usr/lib64/python2.7/site-packages目录下,
但是python会去找/usr/lib/python2.7/site-packages目录下,直接将pycurl-7.19.0-py2.7.egg-info和pycurl.so拷贝到此目录,问题解决。
我并没有去设置PYTHONPATH。
继续yum update,报错:sqlitecachec,_sqlitecache,同理从/usr/lib64/python2.7/site-packages目录拷贝到/usr/lib/python2.7/site-packages。
继续yum update,报错:xz compression not available,这个在我这里是库pyliblzma的原因,执行pip install pyliblzma,
或者只需要yum clean all && yum makecache就可以了,
如果不行,需要检查自己的/etc/yum.repo.d目录下,是不是有冗余或者冲突的配置文件,删除掉,然后再yum clean all && yum makecache。
=======================================================================================================
如果一开始就拷贝/usr/lib64/python2.7/site-packages下的rpm到/usr/lib/python2.7/site-packages是否就可以了呢?
直接替换掉系统的python版本还是太草率了,应该将python 2.7.11安装到/usr/local目录,只让goagent使用新版本的python。这样波及面会小很多。
===============================================
2016-2-27更新
事实证明,安装python2.7.11到/usr/local目录后,只需要拷贝gevent 和openssl就可以运行了~~
安装步骤如下:
./configure --prefix=/usr/local
make && make altinstall
cd /usr/loca/lib/python2.7/site-packages
cp -dpR /usr/lib64/python2.7/site-packages/gevent .
cp -dpR /usr/lib64/python2.7/site-packages/OpenSSL .
然后运行/usr/local/bin/python2.7 proxy.py
就搞定了~~~~
相关文章推荐
- linux下用户权限修改
- Linux内核中的init_task进程和idle进程
- Linux命令总结_文件的输入与 输出
- LINUX6.5 同一网卡多个配置文件时的使用顺序及格式要求
- linux命令记录
- linux grep基本用法
- linux系统安装完成后需要安装的软件
- RedHat6(CentOS6)下Zabbix2安装
- Linux命令大总结
- USB驱动
- CentOS7配置免密码登陆
- OMSA在Linux服务器上安装部署
- Linux命令之uniq
- Linux源代码分析工具链
- linux学习笔记----1
- Centos7安装haproxy
- Linux GPIO用户空间操作
- 图解linux下top命令的使用
- Linux---YUM
- Linux---LVM补充