# 使用deb包在Ubuntu上安装PaddlePaddle

PaddlePaddle目前支持使用deb包安装。Paddle的 `deb` 安装包在ubuntu 14.04中正确，但理论上支持其他的 debian 发行版。

PaddlePaddle的ubuntu安装包分为四个版本，他们是 cpu、gpu、cpu-noavx、gpu-noavx 四个版本。其中 noavx 用于不支持AVX指令集的cpu。安装包的下载地址是: https://github.com/baidu/Paddle/releases/

用户需要先将PaddlePaddle安装包下载到本地，然后执行如下 `gdebi` 命令即可完成安装。

    gdebi paddle-*-cpu.deb

如果 `gdebi` 没有安装,则需要使用 `sudo apt-get install gdebi`, 来安装 `gdebi` 。

或者使用下面一条命令安装.

    dpkg -i paddle-*-cpu.deb
    apt-get install -f

在 `dpkg -i` 的时候如果报一些依赖未找到的错误是正常的， 在 `apt-get install -f` 里会继续安装 PaddlePaddle。

需要注意的是，如果使用GPU版本的PaddlePaddle，请安装CUDA 7.5 和CUDNN 5到本地环境中， 并设置好对应的环境变量(LD_LIBRARY_PATH等等)。

安装完成后,可以使用命令 `paddle version` 查看安装后的paddle 版本。可能的输出为

    PaddlePaddle 0.8.0b1, compiled with
        with_avx: ON
        with_gpu: OFF
        with_double: OFF
        with_python: ON
        with_rdma: OFF
        with_glog: ON
        with_gflags: ON
        with_metric_learning:
        with_timer: OFF
        with_predict_sdk:

## 可能遇到的问题

### libcudart.so/libcudnn.so找不到

安装完成PaddlePaddle后，运行 `paddle train` 报错:

    0831 12:36:04.151525  1085 hl_dso_loader.cc:70] Check failed: nullptr != *dso_handle For Gpu version of PaddlePaddle, it couldn't find CUDA library: libcudart.so Please make sure you already specify its path.Note: for training data on Cpu using Gpu version of PaddlePaddle,you must specify libcudart.so via LD_LIBRARY_PATH.

PaddlePaddle使用运行时动态连接CUDA的so，如果在 LD_LIBRARY_PATH里面找不到这些动态 库的话，会报寻找不到这些动态库。

解决方法很简单，就是将这些动态库加到环境变量里面。比较可能的命令如下。

    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

### CUDA Driver找不到

运行 `paddle train` 报错:

    F0831 12:39:16.699000  1090 hl_cuda_device.cc:530] Check failed: cudaSuccess == cudaStat (0 vs. 35) Cuda Error: CUDA driver version is insufficient for CUDA runtime version

PaddlePaddle运行时如果没有寻找到cuda的driver，变会报这个错误。解决办法是将cuda driver添加到LD_LIBRARY_PATH中。比较可能的命令如下。

    export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH

### config文件找不到

运行 `paddle train` 得到结果:

    F0831 20:53:07.525789  1302 TrainerMain.cpp:94] Check failed: config != nullptr no valid config

PaddlePaddle在运行时找不到对应的config文件，说明命令行参数 `config` 没有设置。 而这个一般说明PaddlePaddle已经安装完毕了。