#!/bin/cat 
# $Id: INSTALL.Debian.txt,v 1.25 2018/11/20 10:28:33 gilles Exp gilles $

This documentation is also located online at 
https://imapsync.lamiral.info/INSTALL.d/
https://imapsync.lamiral.info/INSTALL.d/INSTALL.Debian.txt


There is three install sections in this document,
one for Debian 9 Stretch
one for Debian 8 Jessie
one for Debian 7 Wheezy

First a call to Debian packagers
Why imapsync is not in Debian as a package?
Imapsync used to be in Debian from 2005-04-25 (release 1.125) to 2011-01-25 (release 1.315).
It could be in Debian nowadays, as always, my last words on this discussion were 
"Do what you want, I promise I won't complain anymore about the fact imapsync is on Debian or not."
https://lists.debian.org/debian-legal/2011/01/msg00058.html
The license is now "No limits to do anything with this work and this license".
Feel free.
See also a more detailed story at
https://lists.debian.org/debian-user/2016/11/msg00849.html


=======================================================================
               Installing imapsync on Debian 9 Stretch 
=======================================================================

Here is the command to install imapsync dependencies.
The repositories are the classical ones, ie, a
/etc/apt/sources.list file with:

deb http://deb.debian.org/debian stretch main contrib

You need root privilege to run it, be root or use sudo.

apt install -y            \
  libjson-webtoken-perl   \
  libauthen-ntlm-perl     \
  libcgi-pm-perl          \
  libcrypt-openssl-rsa-perl   \
  libdata-uniqid-perl         \
  libfile-copy-recursive-perl \
  libio-socket-inet6-perl  \
  libio-socket-ssl-perl    \
  libio-tee-perl           \
  libhtml-parser-perl      \
  libjson-webtoken-perl    \
  libmail-imapclient-perl  \
  libparse-recdescent-perl \
  libmodule-scandeps-perl  \
  libreadonly-perl         \
  libregexp-common-perl    \
  libsys-meminfo-perl      \
  libterm-readkey-perl     \
  libtest-mockobject-perl  \
  libtest-pod-perl         \
  libunicode-string-perl   \
  liburi-perl              \
  libwww-perl              \
  libtest-nowarnings-perl  \
  libtest-deep-perl        \
  libtest-warn-perl        \
  make                     \
  cpanminus


After installing the dependencies, imapsync should be working,
go to the section "After installing the dependencies" below.


=======================================================================
             Installing imapsync on Debian 8 Jessie 
=======================================================================

Here are the commands to install imapsync dependencies.
You need root priviledge to run them.

The first command installs standard Debian packages:
apt install           \
  libauthen-ntlm-perl \
  libcgi-pm-perl      \
  libcrypt-openssl-rsa-perl   \
  libdata-uniqid-perl         \
  libfile-copy-recursive-perl \
  libio-socket-inet6-perl  \
  libio-socket-ssl-perl    \
  libio-tee-perl           \
  libhtml-parser-perl      \
  libmail-imapclient-perl  \
  libparse-recdescent-perl \
  libmodule-scandeps-perl  \
  libreadonly-perl         \
  libterm-readkey-perl     \
  libtest-mockobject-perl  \
  libtest-pod-perl         \
  libunicode-string-perl   \
  liburi-perl              \
  libwww-perl              \
  libregexp-common-perl    \
  libtest-nowarnings-perl  \
  libtest-deep-perl        \
  libtest-warn-perl        \
  make                     \
  cpanminus

The package libdata-uniqid-perl is in the jessie-backports repository
https://packages.debian.org/fr/jessie-backports/libdata-uniqid-perl

Here is how to add jessie-backports repository in /etc/apt/sources.list

https://backports.debian.org/Instructions/

If you can't add the jessie-backports repository in /etc/apt/sources.list you
have to install Perl module Data::Uniqid with cpanm:

  cpanm  Data::Uniqid

The following second command installs "manually" the Perl module Sys::MemInfo
because Debian 8 Jessie doesn't have this Perl module available via a package 
(but Debian 9 Stretch does):

  cpanm Sys::MemInfo 

The following optional cpanm command updates Perl module Mail::IMAPClient
because it is good to be up to date with that imapsync dependency,
but it is not mandatory since Mail::IMAPClient is installed by
the Debian package libmail-imapclient-perl:

  cpanm Mail::IMAPClient

Last, in case you need to use XOAUTH2 authentication you have to install   
the module JSON::WebToken with the command:

  cpanm JSON::WebToken

After installing the dependencies, imapsync should be working,
go to the section "After installing the dependencies" below.


=======================================================================
               Installing imapsync on Debian 7 Wheezy 
=======================================================================

Here are the two commands to install imapsync dependencies.
You need root priviledge to run them.

The first command installs standard Debian packages:

  apt-get install    \
libauthen-ntlm-perl  \
libclass-load-perl   \
libcrypt-openssl-rsa-perl \
libdigest-hmac-perl  \
libfile-copy-recursive-perl \
libio-compress-perl     \
libio-socket-inet6-perl \
libio-socket-ssl-perl   \
libio-tee-perl          \
libmail-imapclient-perl \
libmodule-implementation-perl \
libmodule-runtime-perl  \
libmodule-scandeps-perl \
libpackage-stash-perl   \
libpackage-stash-xs-perl \
libpar-packer-perl      \
libreadonly-perl        \
libterm-readkey-perl    \
libtest-fatal-perl      \
libtest-pod-perl        \
libtest-requires-perl   \
libtest-simple-perl     \
libunicode-string-perl  \
liburi-perl             \
make                    \
cpanminus


The following second command installs "manually" the Perl modules 
Data::Uniqid
Sys::MemInfo
because Debian hasn't made them available via a package yet.
This cpanm command  also installs manually Perl module Mail::IMAPClient
because it is good to be up to date with that imapsync dependency,
but it is not mandatory since Mail::IMAPClient is installed by
the Debian package libmail-imapclient-perl:

  cpanm Data::Uniqid  Sys::MemInfo
  
In case you want to update the Perl module Mail::IMAPClient,
a major module for imapsync, but an old March 2012 release 3.31 in Wheezy, 
the following command updates it "manually":

  cpanm Mail::IMAPClient

Last, in case you need to use XOAUTH2 authentication you have to install   
the module JSON::WebToken with the command:

  cpanm JSON::WebToken


After installing the dependencies, imapsync should be working.

=======================================================================
                 After installing the dependencies
=======================================================================

You don't have to be root to test and use imapsync.

Take imapsync either on github or at the upstream site.

Add execution permission to the downloaded script:

  chmod +x imapsync
  
Check the dependencies and print also the basic example:

  ./imapsync

Perform a live test showing imapsync job:

  ./imapsync --testslive

Now install imapsync on the system (need root priviledges again):

  cp imapsync /usr/bin/

That's finished for the installation part.
You can now use imapsync without knowing where it is located
on the system:

  imapsync 

Now go to read http://imapsync.lamiral.info/#doc
start with the tutorial.

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