| --- |
| title: "Installation: Debian" |
| --- |
| |
| # Debian Installation |
|
|
| Caffe packages are available for several Debian versions, as shown in the |
| following chart: |
|
|
| ``` |
| Your Distro | CPU_ONLY | CUDA | Codename |
| ----------------+------------+--------+------------------- |
| Debian/oldstable| β | β | Jessie (8.0) |
| Debian/stable | β | β | Stretch (9.0) |
| Debian/testing | β | β | Buster |
| Debian/unstable | β | β | Buster |
| ``` |
|
|
| * `β ` You should take a look at [Ubuntu installation instruction](install_apt.html). |
|
|
| * `β ` You can install caffe with a single command line following this guide. |
|
|
| * [Package status of CPU-only version](https://tracker.debian.org/pkg/caffe) |
|
|
| * [Package status of CUDA version](https://tracker.debian.org/pkg/caffe-contrib) |
|
|
| Last update: 2017-07-08 |
|
|
| ## Binary installation with APT |
|
|
| Apart from the installation methods based on source, Debian users can install |
| pre-compiled Caffe packages from the official archive with APT. |
|
|
| Make sure that your `/etc/apt/sources.list` contains `contrib` and `non-free` |
| sections if you want to install the CUDA version, for instance: |
|
|
| ``` |
| deb http://ftp2.cn.debian.org/debian sid main contrib non-free |
| ``` |
|
|
| Then we update APT cache and directly install Caffe. Note, the cpu version and |
| the cuda version cannot coexist. |
|
|
| ``` |
| $ sudo apt update |
| $ sudo apt install [ caffe-cpu | caffe-cuda ] |
| $ caffe # command line interface working |
| $ python3 -c 'import caffe; print(caffe.__path__)' # python3 interface working |
| ``` |
|
|
| These Caffe packages should work for you out of box. However, the CUDA version |
| may break if your NVIDIA driver and CUDA toolkit are not installed with APT. |
|
|
| #### Customizing caffe packages |
|
|
| Some users may need to customize the Caffe package. The way to customize |
| the package is beyond this guide. Here is only a brief guide of producing |
| the customized `.deb` packages. |
|
|
| Make sure that there is a `dec-src` source in your `/etc/apt/sources.list`, |
| for instance: |
|
|
| ``` |
| deb http://ftp2.cn.debian.org/debian sid main contrib non-free |
| deb-src http://ftp2.cn.debian.org/debian sid main contrib non-free |
| ``` |
|
|
| Then we build caffe deb files with the following commands: |
|
|
| ``` |
| $ sudo apt update |
| $ sudo apt install build-essential debhelper devscripts # standard package building tools |
| $ sudo apt build-dep [ caffe-cpu | caffe-cuda ] # the most elegant way to pull caffe build dependencies |
| $ apt source [ caffe-cpu | caffe-cuda ] # download the source tarball and extract |
| $ cd caffe-XXXX |
| [ ... optional, customizing caffe code/build ... ] |
| $ dch --local "Modified XXX" # bump package version and write changelog |
| $ debuild -B -j4 # build caffe with 4 parallel jobs (similar to make -j4) |
| [ ... building ...] |
| $ debc # optional, if you want to check the package contents |
| $ sudo debi # optional, install the generated packages |
| $ ls ../ # optional, you will see the resulting packages |
| ``` |
|
|
| It is a BUG if the package failed to build without any change. |
| The changelog will be installed at e.g. `/usr/share/doc/caffe-cpu/changelog.Debian.gz`. |
|
|
| ## Source installation |
|
|
| Source installation under Debian/unstable and Debian/testing is similar to that of Ubuntu, but |
| here is a more elegant way to pull caffe build dependencies: |
|
|
| ``` |
| $ sudo apt build-dep [ caffe-cpu | caffe-cuda ] |
| ``` |
|
|
| Note, this requires a `deb-src` entry in your `/etc/apt/sources.list`. |
|
|
| #### Compiler Combinations |
|
|
| Some users may find their favorate compiler doesn't work with CUDA. |
|
|
| ``` |
| CXX compiler | CUDA 7.5 | CUDA 8.0 | CUDA 9.0 | |
| -------------+------------+------------+------------+ |
| GCC-8 | ? | ? | ? | |
| GCC-7 | ? | ? | ? | |
| GCC-6 | β | β | β | |
| GCC-5 | β [1] | β | β | |
| -------------+------------+------------+------------+ |
| CLANG-4.0 | ? | ? | ? | |
| CLANG-3.9 | β | β | β | |
| CLANG-3.8 | ? | β | β | |
| ``` |
|
|
| `[1]` CUDA 7.5 's `host_config.h` must be patched before working with GCC-5. |
|
|
| `[2]` CUDA 9.0: https://devblogs.nvidia.com/parallelforall/cuda-9-features-revealed/ |
|
|
| BTW, please forget the GCC-4.X series, since its `libstdc++` ABI is not compatible with GCC-5's. |
| You may encounter failure linking GCC-4.X object files against GCC-5 libraries. |
| (See https://wiki.debian.org/GCC5 ) |
|
|
| ## Notes |
|
|
| * Consider re-compiling OpenBLAS locally with optimization flags for sake of |
| performance. This is highly recommended for any kind of production use, including |
| academic research. |
|
|
| * If you are installing `caffe-cuda`, APT will automatically pull some of the |
| CUDA packages and the nvidia driver packages. Please be careful if you have |
| manually installed or hacked nvidia driver or CUDA toolkit or any other |
| related stuff, because in this case APT may fail. |
|
|
| * Additionally, a manpage (`man caffe`) and a bash complementation script |
| (`caffe <TAB><TAB>`, `caffe train <TAB><TAB>`) are provided. |
| Both of the two files are still not merged into caffe master. |
|
|
| * The python interface is Python 3 version: `python3-caffe-{cpu,cuda}`. |
| No plan to support python2. |
|
|
| * If you encountered any problem related to the packaging system (e.g. failed to install `caffe-*`), |
| please report bug to Debian via Debian's bug tracking system. See https://www.debian.org/Bugs/ . |
| Patches and suggestions are also welcome. |
|
|
| ## FAQ |
|
|
| * where is caffe-cudnn? |
|
|
| CUDNN library seems not redistributable currently. If you really want the |
| caffe-cudnn deb packages, the workaround is to install cudnn by yourself, |
| and hack the packaging scripts, then build your customized package. |
|
|
| * I installed the CPU version. How can I switch to the CUDA version? |
|
|
| `sudo apt install caffe-cuda`, apt's dependency resolver is smart enough to deal with this. |
|
|
| * Where are the examples, the models and other documentation stuff? |
|
|
| ``` |
| $ sudo apt install caffe-doc |
| $ dpkg -L caffe-doc |
| ``` |
|
|