cyrus-imapd build dependencies

ellie timoney ellie at fastmail.com
Mon Mar 18 20:55:25 EDT 2019


Hi Patrick,

On Mon, Mar 18, 2019, at 11:33 PM, Patrick Goetz wrote:
> This page on compiling cyrus-imapd:
> 
>    https://www.cyrusimap.org/imap/developer/compiling.html

This page is in the developer section, so its context is for people who are Cyrus developers (especially for new contributors needing to get rolling quickly).  Expect a certain amount of detail to be glossed over on the assumption that it's already known and/or reasonably documented elsewhere.

> shows a number of build dependencies; however I was just able to compile 
> cyrus-imapd without these installed:
> 
>     gperf
>     libbsd
> 
> 
> Are these actually necessary?

Probably depends on which features you enable.  If you run './configure' without arguments, a number of large features won't be enabled, so any libraries they depend on won't be used.  Some of these features are important enough that we (developers) kind of think of them as being probably-always-included even if they default to not.

> Later in the page, under "Alternate database formats" it shows the 
> configure flags to use in order to use mysql/mariadb as a backend for 
> cyrus databases.  I think this is needed if one plans to use virtual 
> domains, but I couldn't get a confirmation on this.  

These are literally just "alternate database formats" -- maybe you already have extensive expertise in some other database and would rather use that than one of the builtin ones.  It has nothing to do with virtual domains.  Documentation about the databases used by Cyrus are here: https://www.cyrusimap.org/imap/concepts/deployment/databases.html

> In any case, the 
> configure options are given as
>   --with-mysql, --with-mysql-incdir, --with-mysql-libdir
> 
> with no clear indication of what each of these does.  For example, is 
> the --with-mysql all inclusive, or does one need to set all 3?

The canonical source of information on configure options is the output from './configure --help'.  It's kind of assumed that a developer will look there to find this information.

> Finally a couple of items in the "Other" category are a real head 
> scratcher.  For example, what is the purpose of net-snmp?

You can click on any of those package names to go to the website for that package and get a description of what it does.  For example,

> Simple Network Management Protocol (SNMP) is a widely used 
> protocol for monitoring the health and welfare of network equipment
>  (eg. routers), computer equipment and even devices like UPSs. 
> Net-SNMP is a suite of applications used to implement SNMP v1, 
> SNMP v2c and SNMP v3 using both IPv4 and IPv6. 
 
> libnghttp2 is listed as needed for "HTTP/2 support for httpd" -- what's 
> using httpd?  Is this to faciliate CalDAV/CardDAV?

The Cyrus httpd provides DAV services (which use the HTTP protocol).  If you want the Cyrus httpd to support HTTP/2, you will need libnghttp2.  Otherwise it will only support HTTP/1.

Hope this helps :)

ellie


More information about the Info-cyrus mailing list