Caffe虐心安装之路

在安装Caffe之前,觉着它好强大好神秘,就想着迫不及待的安装了并亲验一把,并把安装过程完整写下来。

经过两天的煎熬终于安装完了,不过整个过程真的很虐心,坑很多,很多,很多~~~~~欲哭无泪。。。

总是在安装过程中冒出各种各样的问题,以至于整个思路混乱了,真的是很乱了,只好写了以下能记起来的大概过程,几乎成了问题答疑,将就看吧。

======================================================================================================================================

操作系统:centos6.5

一、安装库

yum -y install epel-release.noarch
(wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm)
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -K rpmforge-release-0.5.3-1.el6.rf.*.rpm
rpm -ivh rpmforge-release-0.5.3-1.el6.rf.*.rpm rpmforge-releaser的安装方法

二、安装JDK

  我的机器上已经有。

三、编译安装python2.7(centOS6上用的是python2.6)

 python官网:https://www.python.org/downloads/release/python-279/
 替换python要在安装boost依赖之前

wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz

 编译安装python2.7(必须先安装zlib与openssl的包再执行编译)

 先安装gcc zlib openssl 等包

tar -xvf Python-2.7.9.tgz -C /usr/src
cd /usr/src/Python-2.7.9
./configure --enable-shared
make -j12
make altinstall

(altinstall在安装时会区分已存在的版本)(解决libpython2.7.so.1.0办法:vi /etc/ld.so.conf 添加/usr/local/lib,然后ldconfig)

替换系统中的python

ls -l `which python python2 python2.6`
rm /usr/bin/python
ln -s -f /usr/local/bin/python2.7 /usr/bin/python

保持yum可用性

vim /usr/bin/yum
#!/usr/bin/python 改为 #!/usr/bin/python2.6
python升级导致yum命令无法使用的解决办法

1、报错信息如下:

There was a problem importing one of the Python modules  
required to run yum. The error leading to this problem was:  
  
  
   No module named yum  
  
  
Please install a package which provides this module, or  
verify that the module is installed correctly.  

错误原因:错误信息描述为 yum 所依赖的python 不相符,请安装相对应的python即可

2、查看yum版本

 rpm -qa |grep yum
yum-3.2.8-9.el5.centos.1
yum-metadata-parser-1.1.2-2.el5

3、查看python版本

whereis python  
python: /usr/bin/python2.4 /usr/bin/python /usr/lib/python2.4 /usr/local/bin/python2.6 /usr/local/bin/python2.6-config /usr/local/bin/python /usr/local/lib/python2.6 /usr/share/man/man1/python.1.gz  

果然装了两个版本python

4、执行python,查看到使用2.6.1的版本

python  
Python 2.6.1 (r261:67515, Aug 7 2010, 11:36:17)  
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2  
Type "help", "copyright", "credits" or "license" for more information.  
>>>  

5、猜测yum调用了高版本的python。

6、解决方法:
查找yum和 yum-updatest文件,并编辑此py文件

which yum  
/usr/bin/yum  
vi /usr/bin/yum 
vi /usr/bin/yum-updatest  


#!/usr/bin/python
改为:
#!/usr/bin/python2.4

然后保存OK.

如果不修改/usr/bin/yum ,则yum无法使用

如果不修改/usr/bin/yum-updatest  会出现如下错误

 File "/usr/sbin/yum-updatesd", line 35, in <module>
    import dbus
ImportError: No module named dbus

当然,修改完后记着

/sbin/service yum-updatesd restart  
Stopping yum-updatesd:                                     [FAILED]  
Starting yum-updatesd:                                     [  OK  ]  

补充:yum基于python写的。

四、安装pip

curl -O https://bootstrap.pypa.io/get-pip.py # 得到一个get-pip.py
python get-pip.py
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-7.1.0 setuptools-18.0.1 wheel-0.24.0

(必须先安装openssl-devel与zlib的包,再执行python编译,若执行该命令的时候出现红色cann't remove easy-install.pth的提醒,但目录下又无此文件,可新建后再次执行一遍命令,安装系统的时候最好把开发工具的选项给勾上,出现“Successfully installed pip-6.0.8 setuptools-14.3.1为安装成功”)


chmod 777 ./Parser/asdl_c.py


libpython2.7.so.1.0 cannot open的解决方法

使用源代码的方式安装Python2.7之后,在import某些库时抛出了如下异常:

ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

1.原因分析

    由于在系统的lib路径中找不到这个共享库。

   注: 如果编译时加上了--enable-shared,才会编译这个共享库,默认的位置是Python可执行程序所在目录的lib目录下,如/usr/local/python27

2. 解决方法
  1) 可以使用如下方式编译Python以解决这个问题:
     ./configure --enable-shared --prefix=/usr/local/python27
     make && make install
  2) cp /usr/local/python27/lib/libpython2.7.so.1.0 /usr/local/lib
      cd /usr/local/lib
      ln -s libpython2.7.so.1.0 libpython2.7.so
  3) 使用命令whereis libpython2.7.so.1.0得到如下结果就说明
       libpython2.7.so.1: /usr/local/lib/libpython2.7.so.1.0
  4) 如果whereis没有结果,或者还有import错误,可以尝试如下操作:
      在/etc/ld.so.conf中加入新行/usr/local/lib
      保存后,运行
        /sbin/ldconfig
/sbin/ldconfig –v
五、安装cuda-6.5及驱动
wget http://developer.download.nvidia.com/compute/cuda/repos/rhel6/x86_64/cuda-repo-rhel6-6.5-14.x86_64.rpm
rpm -ivh cuda-repo-rhel6-6.5-14.x86_64.rpm
yum install cuda-6-5

GTX 660显卡装cuda后会导致Xorg狂奔,直至系统死机,需要将/etc/inittab中的启动级别改为3
注,驱动包文件结构不对,导致nvidia_uvm.ko模块无法编译,需手动解决

cd /var/lib/dkms/nvidia/346.46
cp -rv /usr/src/nvidia-346.46 build

如果使用yum 方式安装的使用下载下的驱动包升级下

chmod +x NVIDIA-Linux-x86_64-346.72.run
./NVIDIA-Linux-x86_64-346.72.run

重启后,dkms会在开机时完成nvidia_uvm.ko的编译

/lib/modules/版本号/extra/下有两个包:nvidia.ko nvidia_uvm.ko

lsmod|grep nvidia
vi /etc/rc.local #编辑该文件
modprobe nvidia_uvm #添加该条

run包安装方式

chmod +x cuda_6.5.19_linux_64.run
./ cuda_6.5.19_linux_64.run
六、安装blas
yum -y install blas.x86_64 blas-devel.x86_64 \
atlas.x86_64 atlas-devel.x86_64 atlas-sse3.x86_64 atlas-sse3-devel.x86_64
七、安装opencv
yum -y install ant.x86_64 gcc.x86_64 gcc-c++.x86_64 cmake.x86_64 git.x86_64 pkgconfig.x86_64 gtk2.x86_64 gtk2-devel.x86_64 libdc1394.x86_64 libdc1394-devel.x86_64 libjpeg-turbo.x86_64 libjpeg-turbo-devel.x86_64 libpng.x86_64 libpng-devel.x86_64 libtiff.x86_64 libtiff-devel.x86_64 jasper.x86_64 jasper-libs.x86_64 jasper-devel.x86_64 yasm.x86_64 yasm-devel.x86_64
pip install numpy

安装ffmpeg: #此包不需要通过yum安装,yum安装版本不对

tar -xf ffmpeg-2.6.1.tar.bz2 -C /usr/src
cd /usr/src/ffmpeg-2.6.1/
./configure --enable-shared #要以共享库方式配置,否则opencv编译时链接静态库会出错
make -j12 && make install
unzip opencv-2.4.9
cd opencv-2.4.9
mkdir release && cd release

修改源文件NCVPixelOperations.hpp,下载地址:http://download.csdn.net/download/znculee/9294885

官网bug修复跟踪:http://code.opencv.org/issues/3814
文件替换到opencv路径下的modules/gpu/src/nvidia/core/NCVPixelOperations.hpp
配置环境变量:

vim /etc/profile.d/custom.sh 配置完成source /etc/profile.d/custom.sh
#!/bin/bash
export PATH=/usr/local/MATLAB/R2014a/bin:/usr/local/cuda-6.5/bin:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/boost-1.55.0/lib:/usr/local/cuda-6.5/lib64:/opt/caffe-master/build/lib:/usr/lib64/atlas
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/boost-1.55.0/lib:/usr/local/cuda-6.5/lib64:/opt/caffe-master/build/lib:/usr/lib64/atlas
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/boost-1.55.0/include:/usr/local/cuda-6.5/include:/opt/caffe-master/build/src:/opt/caffe-master/include
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/boost-1.55.0/include:/usr/local/cuda-6.5/include:/opt/caffe-master/build/src:/opt/caffe-master/include
export PYTHONPATH=$PYTHONPATH:/opt/caffe-master/python
export HISTTIMEFORMAT="%F %T "
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make –j12
make install
八、安装boost-1.55(1.56不兼容)
yum -y install libicu.x86_64 libicu-devel.x86_64 bzip2-libs.x86_64 bzip2-devel.x86_64
tar –xf boost_1_55_0.tar.gz && cd boost_1_55_0
./bootstrap.sh
./b2
./b2 install

运行./b2 install命令,默认安装在/usr/local/lib目录下,头文件在/usr/local/include/boost目录下

九、安装caffe其他依赖
yum -y install snappy.x86_64 snappy-devel.x86_64 hdf5.x86_64 hdf5-devel.x86_64 epel-release leveldb.x86_64 leveldb-devel.x86_64 libgfortran.x86_64
------ 编译安装protobuf-2.5.0 protobuf-2.5.0
------ tar -xvf protobuf-2.5.0.tar.gz
------ cd /usr/src/protobuf-2.5.0
./configure
make
make check
make install
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
十、编译安装caffe其他依赖包
glog
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make && make install
gflags
wget https://github.com/schuhschuh/gflags/archive/master.zip
unzip gflags-master.zip
cd gflags-master
mkdir build && cd build
export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
make && make install
lmdb
git clone git://gitorious.org/mdb/mdb.git
tar –xf lmdb.tar
cd mdb/libraries/liblmdb
make && make install #若提示man1错误,手动建立一个
mkdir -p /usr/local/man/man1
十一、将matlab上传至服务器,通过图形方式安装
这个我没有安装,实在太大了

十二、解决python依赖

pip install 'six>=1.3'
easy_install -U distribute
pip2.7 install PIL --allow-external PIL --allow-unverified PIL

解包caffe-master.zip,并将该包移至opt目录

cd /opt/caffe-master/python
for i in $(cat requirements.txt); do pip install $i; done #需要多执行几遍

注:会出现一个报错,关于PIL.Image >= 1.1.7,则可使用命令pip install 'PIL' 进行安装
后再次执行以上的for循环语句,需要将python升级至2.7以上版本。

十三、安装caffe

修改caffe-master/Makefile.config文件,增加如下几句

cp /opt/caffe-master/Makefile.config.example Makefile.config
vim Makefile.config
MATLAB_DIR := /usr/local/MATLAB/R2014a/
BLAS := atlas
BLAS_LIB := /usr/lib64/atlas
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/local/lib/python2.7/site-packages/numpy/core/include \
/usr/local/include/python2.7
执行 ldconfig
make all -j12
make –j12 pycaffe
make –j12 matcaffe
make test –j12
make runtest –j12

如果matlab要使用静态编译libprotobuf.a的话,修改Makefile
在MATLAB_CXXFLAGS项上添加-static参数即可
但使用动态库的matlab模型可能不可用。


至此,基本安装完毕,不过根据个人电脑环境不同,出现的问题也不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值